Index: chrome/browser/extensions/extension_settings_storage.cc |
diff --git a/chrome/browser/extensions/extension_settings_storage.cc b/chrome/browser/extensions/extension_settings_storage.cc |
index 882efe83e72268923482ae77ca8029b589eb93fc..42e5209d568a2cb6cec131dbe08bfdc5fe4cd6b7 100644 |
--- a/chrome/browser/extensions/extension_settings_storage.cc |
+++ b/chrome/browser/extensions/extension_settings_storage.cc |
@@ -8,11 +8,13 @@ |
// Implementation of ExtensionSettingsStorage::Result |
ExtensionSettingsStorage::Result::Result( |
- DictionaryValue* settings, std::set<std::string>* changed_keys) |
- : inner_(new Inner(settings, changed_keys, std::string())) {} |
+ DictionaryValue* settings, |
+ DictionaryValue* old_settings, |
+ std::set<std::string>* changed_keys) |
+ : inner_(new Inner(settings, old_settings, changed_keys, std::string())) {} |
ExtensionSettingsStorage::Result::Result(const std::string& error) |
- : inner_(new Inner(NULL, new std::set<std::string>(), error)) { |
+ : inner_(new Inner(NULL, NULL, new std::set<std::string>(), error)) { |
DCHECK(!error.empty()); |
} |
@@ -29,6 +31,36 @@ ExtensionSettingsStorage::Result::GetChangedKeys() const { |
return inner_->changed_keys_.get(); |
} |
+bool ExtensionSettingsStorage::Result::GetOldValue( |
+ const std::string& key, Value** old_value) const { |
+ DCHECK(!HasError()); |
+ DCHECK(old_value); |
+ if (!inner_->changed_keys_.get()) { |
+ return false; |
+ } |
+ if (!inner_->changed_keys_->count(key)) { |
+ return inner_->settings_->GetWithoutPathExpansion(key, old_value); |
+ } |
+ *old_value = NULL; |
+ inner_->old_settings_->GetWithoutPathExpansion(key, old_value); |
+ return true; |
+} |
+ |
+bool ExtensionSettingsStorage::Result::GetNewValue( |
+ const std::string& key, Value** new_value) const { |
+ DCHECK(!HasError()); |
+ DCHECK(new_value); |
+ if (!inner_->changed_keys_.get()) { |
+ return false; |
+ } |
+ *new_value = NULL; |
+ if (!inner_->settings_.get()) { |
+ return true; |
+ } |
+ inner_->settings_->GetWithoutPathExpansion(key, new_value); |
+ return true; |
+} |
+ |
bool ExtensionSettingsStorage::Result::HasError() const { |
return !inner_->error_.empty(); |
} |
@@ -40,8 +72,12 @@ const std::string& ExtensionSettingsStorage::Result::GetError() const { |
ExtensionSettingsStorage::Result::Inner::Inner( |
DictionaryValue* settings, |
+ DictionaryValue* old_settings, |
std::set<std::string>* changed_keys, |
const std::string& error) |
- : settings_(settings), changed_keys_(changed_keys), error_(error) {} |
+ : settings_(settings), |
+ old_settings_(old_settings), |
+ changed_keys_(changed_keys), |
+ error_(error) {} |
ExtensionSettingsStorage::Result::Inner::~Inner() {} |