Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chrome/browser/extensions/in_memory_extension_settings_storage.cc

Issue 8177022: Add onChanged events to the extension settings API, both from sync and between (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/in_memory_extension_settings_storage.h" 5 #include "chrome/browser/extensions/in_memory_extension_settings_storage.h"
6 6
7 namespace { 7 namespace {
8 8
9 std::vector<std::string> CreateVector(const std::string& string) { 9 std::vector<std::string> CreateVector(const std::string& string) {
10 std::vector<std::string> strings; 10 std::vector<std::string> strings;
(...skipping 11 matching lines...) Expand all
22 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Get( 22 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Get(
23 const std::vector<std::string>& keys) { 23 const std::vector<std::string>& keys) {
24 DictionaryValue* settings = new DictionaryValue(); 24 DictionaryValue* settings = new DictionaryValue();
25 for (std::vector<std::string>::const_iterator it = keys.begin(); 25 for (std::vector<std::string>::const_iterator it = keys.begin();
26 it != keys.end(); ++it) { 26 it != keys.end(); ++it) {
27 Value* value = NULL; 27 Value* value = NULL;
28 if (storage_.GetWithoutPathExpansion(*it, &value)) { 28 if (storage_.GetWithoutPathExpansion(*it, &value)) {
29 settings->SetWithoutPathExpansion(*it, value->DeepCopy()); 29 settings->SetWithoutPathExpansion(*it, value->DeepCopy());
30 } 30 }
31 } 31 }
32 return Result(settings, NULL); 32 return Result(settings, NULL, NULL);
33 } 33 }
34 34
35 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Get() { 35 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Get() {
36 return Result(storage_.DeepCopy(), NULL); 36 return Result(storage_.DeepCopy(), NULL, NULL);
37 } 37 }
38 38
39 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Set( 39 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Set(
40 const std::string& key, const Value& value) { 40 const std::string& key, const Value& value) {
41 DictionaryValue settings; 41 DictionaryValue settings;
42 settings.SetWithoutPathExpansion(key, value.DeepCopy()); 42 settings.SetWithoutPathExpansion(key, value.DeepCopy());
43 return Set(settings); 43 return Set(settings);
44 } 44 }
45 45
46 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Set( 46 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Set(
47 const DictionaryValue& settings) { 47 const DictionaryValue& settings) {
48 DictionaryValue* old_settings = new DictionaryValue();
48 std::set<std::string>* changed_keys = new std::set<std::string>(); 49 std::set<std::string>* changed_keys = new std::set<std::string>();
49 for (DictionaryValue::key_iterator it = settings.begin_keys(); 50 for (DictionaryValue::key_iterator it = settings.begin_keys();
50 it != settings.end_keys(); ++it) { 51 it != settings.end_keys(); ++it) {
51 Value* old_value = NULL; 52 Value* old_value = NULL;
52 storage_.GetWithoutPathExpansion(*it, &old_value); 53 if (storage_.GetWithoutPathExpansion(*it, &old_value)) {
54 old_settings->SetWithoutPathExpansion(*it, old_value->DeepCopy());
55 }
53 Value* new_value = NULL; 56 Value* new_value = NULL;
54 settings.GetWithoutPathExpansion(*it, &new_value); 57 settings.GetWithoutPathExpansion(*it, &new_value);
55 if (old_value == NULL || !old_value->Equals(new_value)) { 58 if (old_value == NULL || !old_value->Equals(new_value)) {
56 changed_keys->insert(*it); 59 changed_keys->insert(*it);
57 storage_.SetWithoutPathExpansion(*it, new_value->DeepCopy()); 60 storage_.SetWithoutPathExpansion(*it, new_value->DeepCopy());
58 } 61 }
59 } 62 }
60 return Result(settings.DeepCopy(), changed_keys); 63 return Result(settings.DeepCopy(), old_settings, changed_keys);
61 } 64 }
62 65
63 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Remove( 66 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Remove(
64 const std::string& key) { 67 const std::string& key) {
65 return Remove(CreateVector(key)); 68 return Remove(CreateVector(key));
66 } 69 }
67 70
68 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Remove( 71 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Remove(
69 const std::vector<std::string>& keys) { 72 const std::vector<std::string>& keys) {
73 DictionaryValue* old_settings = new DictionaryValue();
70 std::set<std::string>* changed_keys = new std::set<std::string>(); 74 std::set<std::string>* changed_keys = new std::set<std::string>();
71 for (std::vector<std::string>::const_iterator it = keys.begin(); 75 for (std::vector<std::string>::const_iterator it = keys.begin();
72 it != keys.end(); ++it) { 76 it != keys.end(); ++it) {
73 if (storage_.RemoveWithoutPathExpansion(*it, NULL)) { 77 Value* old_value = NULL;
78 if (storage_.RemoveWithoutPathExpansion(*it, &old_value)) {
79 old_settings->SetWithoutPathExpansion(*it, old_value);
74 changed_keys->insert(*it); 80 changed_keys->insert(*it);
75 } 81 }
76 } 82 }
77 return Result(NULL, changed_keys); 83 return Result(NULL, old_settings, changed_keys);
78 } 84 }
79 85
80 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Clear() { 86 ExtensionSettingsStorage::Result InMemoryExtensionSettingsStorage::Clear() {
81 std::set<std::string>* changed_keys = new std::set<std::string>(); 87 std::set<std::string>* changed_keys = new std::set<std::string>();
82 for (DictionaryValue::key_iterator it = storage_.begin_keys(); 88 for (DictionaryValue::key_iterator it = storage_.begin_keys();
83 it != storage_.end_keys(); ++it) { 89 it != storage_.end_keys(); ++it) {
84 changed_keys->insert(*it); 90 changed_keys->insert(*it);
85 } 91 }
86 storage_.Clear(); 92 DictionaryValue* old_settings = new DictionaryValue();
87 return Result(NULL, changed_keys); 93 storage_.Swap(old_settings);
94 return Result(NULL, old_settings, changed_keys);
88 } 95 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698