From e2cbe720924344b0cd43000f1f1394a1df798e9e Mon Sep 17 00:00:00 2001 From: Piotr Kosko Date: Fri, 8 Jul 2016 12:46:53 +0200 Subject: [PATCH] [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 --- src/preference/preference_manager.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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"); -- 2.34.1