From: Piotr Kosko Date: Fri, 8 Jul 2016 10:46:53 +0000 (+0200) Subject: [Preference] Improved behaviour on removing key X-Git-Tag: submit/tizen/20160708.110235~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e2cbe720924344b0cd43000f1f1394a1df798e9e;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Preference] Improved behaviour on removing key [Feature] Removing listener also when key was removed. [Verification] Code compiles without errors. TCT passrate is 100%. Change-Id: I4aa9c6f4ffea08b526dad26e39fe67c8fd076fb0 Signed-off-by: Piotr Kosko --- diff --git a/src/preference/preference_manager.cc b/src/preference/preference_manager.cc index 2461f3fb..e24be801 100644 --- a/src/preference/preference_manager.cc +++ b/src/preference/preference_manager.cc @@ -214,8 +214,14 @@ common::TizenResult PreferenceManager::GetValue(const std::string& key) { common::TizenResult PreferenceManager::Remove(const std::string& key) { ScopeLogger(); - int ret = preference_remove(key.c_str()); + // unsetting listener if it is registered for key to be removed + auto res = UnsetChangeListener(key); + if (!res) { + //only log an error - listener could not be set + LoggerD("unsetting listener for given key failed, ignore error"); + } + int ret = preference_remove(key.c_str()); if (ret == PREFERENCE_ERROR_NONE) { return common::TizenSuccess(); } else { @@ -227,8 +233,9 @@ common::TizenResult PreferenceManager::RemoveAll() { ScopeLogger(); int ret = preference_remove_all(); - if (ret == PREFERENCE_ERROR_NONE) { + //only clear vector (listeners are removed natively in preference_remove_all function) + key_listeners_.clear(); return common::TizenSuccess(); } else { return MakeErrResult(ret, "preference_remove_all function error");