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");