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

Side by Side Diff: chrome/browser/extensions/extension_settings_storage_unittest.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: . 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/extension_settings_storage_unittest.h" 5 #include "chrome/browser/extensions/extension_settings_storage_unittest.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 10
(...skipping 15 matching lines...) Expand all
26 string.append(", "); 26 string.append(", ");
27 } 27 }
28 string.append(*it); 28 string.append(*it);
29 } 29 }
30 string.append("}"); 30 string.append("}");
31 return string; 31 return string;
32 } 32 }
33 33
34 } // namespace 34 } // namespace
35 35
36 // Compares two possibly NULL values for equality, filling |error| with an
37 // appropriate error message if they're different.
38 bool ValuesEqual(Value* expected, Value* actual, std::string* error) {
39 if (expected == actual) {
40 return true;
41 }
42 if (expected && !actual) {
43 *error = "Expected: " + GetJSON(*expected) + ", actual: NULL";
44 return false;
45 }
46 if (actual && !expected) {
47 *error = "Expected: NULL, actual: " + GetJSON(*actual);
48 return false;
49 }
50 if (!expected->Equals(actual)) {
51 *error =
52 "Expected: " + GetJSON(*expected) + ", actual: " + GetJSON(*actual);
53 return false;
54 }
55 return true;
56 }
57
36 // Returns whether the result of a storage operation has the expected settings 58 // Returns whether the result of a storage operation has the expected settings
37 // and changed keys. 59 // and changed keys.
38 testing::AssertionResult SettingsEq( 60 testing::AssertionResult SettingsEq(
39 const char* _1, const char* _2, const char* _3, 61 const char* _1, const char* _2, const char* _3, const char* _4,
40 DictionaryValue* expected_settings, 62 DictionaryValue* expected_settings,
63 DictionaryValue* expected_old_settings,
41 std::set<std::string>* expected_changed_keys, 64 std::set<std::string>* expected_changed_keys,
42 ExtensionSettingsStorage::Result actual) { 65 ExtensionSettingsStorage::Result actual) {
66 std::string error;
67
43 if (actual.HasError()) { 68 if (actual.HasError()) {
44 return testing::AssertionFailure() << 69 return testing::AssertionFailure() <<
45 "Expected: " << GetJSON(*expected_settings) << 70 "Expected: " << GetJSON(*expected_settings) <<
46 ", " << ToString(*expected_changed_keys) << "\n" << 71 ", " << ToString(*expected_changed_keys) << "\n" <<
47 ", actual has error: " << actual.GetError(); 72 ", actual has error: " << actual.GetError();
48 } 73 }
49 if (expected_settings == NULL && actual.GetSettings() != NULL) { 74
50 return testing::AssertionFailure() << 75 if (!ValuesEqual(expected_settings, actual.GetSettings(), &error)) {
51 "Expected NULL settings, actual: " << GetJSON(*actual.GetSettings()); 76 return testing::AssertionFailure() << "For settings, " << error;
52 } 77 }
53 if (expected_changed_keys == NULL && actual.GetChangedKeys() != NULL) { 78
79 if (!expected_changed_keys && actual.GetChangedKeys()) {
54 return testing::AssertionFailure() << 80 return testing::AssertionFailure() <<
55 "Expected NULL changed keys, actual: " << 81 "Expected NULL changed keys, actual: " <<
56 ToString(*actual.GetChangedKeys()); 82 ToString(*actual.GetChangedKeys());
57 } 83 }
58 if (expected_settings != NULL && actual.GetSettings() == NULL) { 84 if (expected_changed_keys && !actual.GetChangedKeys()) {
59 return testing::AssertionFailure() <<
60 "Expected: " << GetJSON(*expected_settings) << ", actual NULL";
61 }
62 if (expected_changed_keys != NULL && actual.GetChangedKeys() == NULL) {
63 return testing::AssertionFailure() << 85 return testing::AssertionFailure() <<
64 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL"; 86 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL";
65 } 87 }
66 if (expected_settings != actual.GetSettings() &&
67 !expected_settings->Equals(actual.GetSettings())) {
68 return testing::AssertionFailure() <<
69 "Expected: " << GetJSON(*expected_settings) <<
70 ", actual: " << GetJSON(*actual.GetSettings());
71 }
72 if (expected_changed_keys != actual.GetChangedKeys() && 88 if (expected_changed_keys != actual.GetChangedKeys() &&
73 *expected_changed_keys != *actual.GetChangedKeys()) { 89 *expected_changed_keys != *actual.GetChangedKeys()) {
74 return testing::AssertionFailure() << 90 return testing::AssertionFailure() <<
75 "Expected: " << ToString(*expected_changed_keys) << 91 "Expected: " << ToString(*expected_changed_keys) <<
76 ", actual: " << ToString(*actual.GetChangedKeys()); 92 ", actual: " << ToString(*actual.GetChangedKeys());
77 } 93 }
94
95 std::set<std::string>* changed_keys = actual.GetChangedKeys();
96 if (changed_keys) {
97 for (std::set<std::string>::iterator it = changed_keys->begin();
98 it != changed_keys->end(); ++it) {
99 Value *expected_old_value = NULL;
100 expected_old_settings->GetWithoutPathExpansion(*it, &expected_old_value);
101 Value *actual_old_value = NULL;
102 actual.GetOldValue(*it, &actual_old_value);
103 if (!ValuesEqual(expected_old_value, actual_old_value, &error)) {
104 return testing::AssertionFailure() << "Old values not equal: " << error;
105 }
106
107 Value *expected_new_value = NULL;
108 if (expected_settings) {
109 expected_settings->GetWithoutPathExpansion(*it, &expected_new_value);
110 }
111 Value *actual_new_value = NULL;
112 actual.GetNewValue(*it, &actual_new_value);
113 if (!ValuesEqual(expected_new_value, actual_new_value, &error)) {
114 return testing::AssertionFailure() << "New values not equal: " << error;
115 }
116 }
117 }
118
78 return testing::AssertionSuccess(); 119 return testing::AssertionSuccess();
79 } 120 }
80 121
81 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest() 122 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest()
82 : key1_("foo"), 123 : key1_("foo"),
83 key2_("bar"), 124 key2_("bar"),
84 key3_("baz"), 125 key3_("baz"),
85 empty_dict_(new DictionaryValue), 126 empty_dict_(new DictionaryValue()),
86 dict1_(new DictionaryValue), 127 dict1_(new DictionaryValue()),
87 dict12_(new DictionaryValue), 128 dict3_(new DictionaryValue()),
88 dict123_(new DictionaryValue), 129 dict12_(new DictionaryValue()),
130 dict123_(new DictionaryValue()),
89 ui_thread_(BrowserThread::UI, MessageLoop::current()), 131 ui_thread_(BrowserThread::UI, MessageLoop::current()),
90 file_thread_(BrowserThread::FILE, MessageLoop::current()) { 132 file_thread_(BrowserThread::FILE, MessageLoop::current()) {
91 val1_.reset(Value::CreateStringValue(key1_ + "Value")); 133 val1_.reset(Value::CreateStringValue(key1_ + "Value"));
92 val2_.reset(Value::CreateStringValue(key2_ + "Value")); 134 val2_.reset(Value::CreateStringValue(key2_ + "Value"));
93 val3_.reset(Value::CreateStringValue(key3_ + "Value")); 135 val3_.reset(Value::CreateStringValue(key3_ + "Value"));
94 136
95 list1_.push_back(key1_); 137 list1_.push_back(key1_);
96 list2_.push_back(key2_); 138 list2_.push_back(key2_);
97 list3_.push_back(key3_); 139 list3_.push_back(key3_);
98 list12_.push_back(key1_); 140 list12_.push_back(key1_);
99 list12_.push_back(key2_); 141 list12_.push_back(key2_);
100 list13_.push_back(key1_); 142 list13_.push_back(key1_);
101 list13_.push_back(key3_); 143 list13_.push_back(key3_);
102 list123_.push_back(key1_); 144 list123_.push_back(key1_);
103 list123_.push_back(key2_); 145 list123_.push_back(key2_);
104 list123_.push_back(key3_); 146 list123_.push_back(key3_);
105 147
106 set1_.insert(list1_.begin(), list1_.end()); 148 set1_.insert(list1_.begin(), list1_.end());
107 set2_.insert(list2_.begin(), list2_.end()); 149 set2_.insert(list2_.begin(), list2_.end());
108 set3_.insert(list3_.begin(), list3_.end()); 150 set3_.insert(list3_.begin(), list3_.end());
109 set12_.insert(list12_.begin(), list12_.end()); 151 set12_.insert(list12_.begin(), list12_.end());
110 set13_.insert(list13_.begin(), list13_.end()); 152 set13_.insert(list13_.begin(), list13_.end());
111 set123_.insert(list123_.begin(), list123_.end()); 153 set123_.insert(list123_.begin(), list123_.end());
112 154
113 dict1_->Set(key1_, val1_->DeepCopy()); 155 dict1_->Set(key1_, val1_->DeepCopy());
156 dict3_->Set(key3_, val3_->DeepCopy());
114 dict12_->Set(key1_, val1_->DeepCopy()); 157 dict12_->Set(key1_, val1_->DeepCopy());
115 dict12_->Set(key2_, val2_->DeepCopy()); 158 dict12_->Set(key2_, val2_->DeepCopy());
116 dict123_->Set(key1_, val1_->DeepCopy()); 159 dict123_->Set(key1_, val1_->DeepCopy());
117 dict123_->Set(key2_, val2_->DeepCopy()); 160 dict123_->Set(key2_, val2_->DeepCopy());
118 dict123_->Set(key3_, val3_->DeepCopy()); 161 dict123_->Set(key3_, val3_->DeepCopy());
119 } 162 }
120 163
121 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {} 164 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {}
122 165
123 void ExtensionSettingsStorageTest::SetUp() { 166 void ExtensionSettingsStorageTest::SetUp() {
124 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 167 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
125 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension")); 168 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension"));
126 ASSERT_TRUE(storage_.get()); 169 ASSERT_TRUE(storage_.get());
127 } 170 }
128 171
129 void ExtensionSettingsStorageTest::TearDown() { 172 void ExtensionSettingsStorageTest::TearDown() {
130 storage_.reset(); 173 storage_.reset();
131 } 174 }
132 175
133 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) { 176 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) {
134 EXPECT_PRED_FORMAT3(SettingsEq, 177 EXPECT_PRED_FORMAT4(SettingsEq,
135 empty_dict_.get(), NULL, storage_->Get(key1_)); 178 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
136 EXPECT_PRED_FORMAT3(SettingsEq, 179 EXPECT_PRED_FORMAT4(SettingsEq,
137 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 180 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
138 EXPECT_PRED_FORMAT3(SettingsEq, 181 EXPECT_PRED_FORMAT4(SettingsEq,
139 empty_dict_.get(), NULL, storage_->Get(list123_)); 182 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
140 EXPECT_PRED_FORMAT3(SettingsEq, 183 EXPECT_PRED_FORMAT4(SettingsEq,
141 empty_dict_.get(), NULL, storage_->Get()); 184 empty_dict_.get(), NULL, NULL, storage_->Get());
142 } 185 }
143 186
144 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) { 187 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) {
145 EXPECT_PRED_FORMAT3(SettingsEq, 188 EXPECT_PRED_FORMAT4(SettingsEq,
146 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 189 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
147 190
148 EXPECT_PRED_FORMAT3(SettingsEq, 191 EXPECT_PRED_FORMAT4(SettingsEq,
149 dict1_.get(), NULL, storage_->Get(key1_)); 192 dict1_.get(), NULL, NULL, storage_->Get(key1_));
150 EXPECT_PRED_FORMAT3(SettingsEq, 193 EXPECT_PRED_FORMAT4(SettingsEq,
151 empty_dict_.get(), NULL, storage_->Get(key2_)); 194 empty_dict_.get(), NULL, NULL, storage_->Get(key2_));
152 EXPECT_PRED_FORMAT3(SettingsEq, 195 EXPECT_PRED_FORMAT4(SettingsEq,
153 empty_dict_.get(), NULL, storage_->Get(key3_)); 196 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
154 EXPECT_PRED_FORMAT3(SettingsEq, 197 EXPECT_PRED_FORMAT4(SettingsEq,
155 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 198 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
156 EXPECT_PRED_FORMAT3(SettingsEq, 199 EXPECT_PRED_FORMAT4(SettingsEq,
157 dict1_.get(), NULL, storage_->Get(list123_)); 200 dict1_.get(), NULL, NULL, storage_->Get(list123_));
158 EXPECT_PRED_FORMAT3(SettingsEq, 201 EXPECT_PRED_FORMAT4(SettingsEq,
159 dict1_.get(), NULL, storage_->Get()); 202 dict1_.get(), NULL, NULL, storage_->Get());
160 } 203 }
161 204
162 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) { 205 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) {
163 EXPECT_PRED_FORMAT3(SettingsEq, 206 EXPECT_PRED_FORMAT4(SettingsEq,
164 dict12_.get(), &set12_, storage_->Set(*dict12_)); 207 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
165 208
166 EXPECT_PRED_FORMAT3(SettingsEq, 209 EXPECT_PRED_FORMAT4(SettingsEq,
167 dict1_.get(), NULL, storage_->Get(key1_)); 210 dict1_.get(), NULL, NULL, storage_->Get(key1_));
168 EXPECT_PRED_FORMAT3(SettingsEq, 211 EXPECT_PRED_FORMAT4(SettingsEq,
169 empty_dict_.get(), NULL, storage_->Get(key3_)); 212 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
170 EXPECT_PRED_FORMAT3(SettingsEq, 213 EXPECT_PRED_FORMAT4(SettingsEq,
171 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 214 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
172 EXPECT_PRED_FORMAT3(SettingsEq, 215 EXPECT_PRED_FORMAT4(SettingsEq,
173 dict12_.get(), NULL, storage_->Get(list123_)); 216 dict12_.get(), NULL, NULL, storage_->Get(list123_));
174 EXPECT_PRED_FORMAT3(SettingsEq, 217 EXPECT_PRED_FORMAT4(SettingsEq,
175 dict12_.get(), NULL, storage_->Get()); 218 dict12_.get(), NULL, NULL, storage_->Get());
176 } 219 }
177 220
178 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) { 221 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) {
179 EXPECT_PRED_FORMAT3(SettingsEq, 222 EXPECT_PRED_FORMAT4(SettingsEq,
180 NULL, &empty_set_, storage_->Remove(key1_)); 223 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_));
181 224
182 EXPECT_PRED_FORMAT3(SettingsEq, 225 EXPECT_PRED_FORMAT4(SettingsEq,
183 empty_dict_.get(), NULL, storage_->Get(key1_)); 226 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
184 EXPECT_PRED_FORMAT3(SettingsEq, 227 EXPECT_PRED_FORMAT4(SettingsEq,
185 empty_dict_.get(), NULL, storage_->Get(list1_)); 228 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
186 EXPECT_PRED_FORMAT3(SettingsEq, 229 EXPECT_PRED_FORMAT4(SettingsEq,
187 empty_dict_.get(), NULL, storage_->Get()); 230 empty_dict_.get(), NULL, NULL, storage_->Get());
188 } 231 }
189 232
190 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { 233 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) {
191 EXPECT_PRED_FORMAT3(SettingsEq, 234 EXPECT_PRED_FORMAT4(SettingsEq,
192 dict1_.get(), &set1_, storage_->Set(*dict1_)); 235 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(*dict1_));
193 EXPECT_PRED_FORMAT3(SettingsEq, 236 EXPECT_PRED_FORMAT4(SettingsEq,
194 NULL, &set1_, storage_->Remove(key1_)); 237 NULL, dict1_.get(), &set1_, storage_->Remove(key1_));
195 238
196 EXPECT_PRED_FORMAT3(SettingsEq, 239 EXPECT_PRED_FORMAT4(SettingsEq,
197 empty_dict_.get(), NULL, storage_->Get(key1_)); 240 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
198 EXPECT_PRED_FORMAT3(SettingsEq, 241 EXPECT_PRED_FORMAT4(SettingsEq,
199 empty_dict_.get(), NULL, storage_->Get(key2_)); 242 empty_dict_.get(), NULL, NULL, storage_->Get(key2_));
200 EXPECT_PRED_FORMAT3(SettingsEq, 243 EXPECT_PRED_FORMAT4(SettingsEq,
201 empty_dict_.get(), NULL, storage_->Get(list1_)); 244 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
202 EXPECT_PRED_FORMAT3(SettingsEq, 245 EXPECT_PRED_FORMAT4(SettingsEq,
203 empty_dict_.get(), NULL, storage_->Get(list12_)); 246 empty_dict_.get(), NULL, NULL, storage_->Get(list12_));
204 EXPECT_PRED_FORMAT3(SettingsEq, 247 EXPECT_PRED_FORMAT4(SettingsEq,
205 empty_dict_.get(), NULL, storage_->Get()); 248 empty_dict_.get(), NULL, NULL, storage_->Get());
206 } 249 }
207 250
208 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { 251 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) {
209 EXPECT_PRED_FORMAT3(SettingsEq, 252 EXPECT_PRED_FORMAT4(SettingsEq,
210 dict123_.get(), &set123_, storage_->Set(*dict123_)); 253 dict123_.get(), empty_dict_.get(), &set123_, storage_->Set(*dict123_));
211 EXPECT_PRED_FORMAT3(SettingsEq, 254 EXPECT_PRED_FORMAT4(SettingsEq,
212 NULL, &set3_, storage_->Remove(key3_)); 255 NULL, dict3_.get(), &set3_, storage_->Remove(key3_));
213 256
214 EXPECT_PRED_FORMAT3(SettingsEq, 257 EXPECT_PRED_FORMAT4(SettingsEq,
215 dict1_.get(), NULL, storage_->Get(key1_)); 258 dict1_.get(), NULL, NULL, storage_->Get(key1_));
216 EXPECT_PRED_FORMAT3(SettingsEq, 259 EXPECT_PRED_FORMAT4(SettingsEq,
217 empty_dict_.get(), NULL, storage_->Get(key3_)); 260 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
218 EXPECT_PRED_FORMAT3(SettingsEq, 261 EXPECT_PRED_FORMAT4(SettingsEq,
219 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 262 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
220 EXPECT_PRED_FORMAT3(SettingsEq, 263 EXPECT_PRED_FORMAT4(SettingsEq,
221 dict1_.get(), NULL, storage_->Get(list1_)); 264 dict1_.get(), NULL, NULL, storage_->Get(list1_));
222 EXPECT_PRED_FORMAT3(SettingsEq, 265 EXPECT_PRED_FORMAT4(SettingsEq,
223 dict12_.get(), NULL, storage_->Get(list12_)); 266 dict12_.get(), NULL, NULL, storage_->Get(list12_));
224 EXPECT_PRED_FORMAT3(SettingsEq, 267 EXPECT_PRED_FORMAT4(SettingsEq,
225 dict1_.get(), NULL, storage_->Get(list13_)); 268 dict1_.get(), NULL, NULL, storage_->Get(list13_));
226 EXPECT_PRED_FORMAT3(SettingsEq, 269 EXPECT_PRED_FORMAT4(SettingsEq,
227 dict12_.get(), NULL, storage_->Get(list123_)); 270 dict12_.get(), NULL, NULL, storage_->Get(list123_));
228 EXPECT_PRED_FORMAT3(SettingsEq, 271 EXPECT_PRED_FORMAT4(SettingsEq,
229 dict12_.get(), NULL, storage_->Get()); 272 dict12_.get(), NULL, NULL, storage_->Get());
230 273
231 EXPECT_PRED_FORMAT3(SettingsEq, 274 EXPECT_PRED_FORMAT4(SettingsEq,
232 NULL, &set12_, storage_->Remove(list12_)); 275 NULL, dict12_.get(), &set12_, storage_->Remove(list12_));
233 276
234 EXPECT_PRED_FORMAT3(SettingsEq, 277 EXPECT_PRED_FORMAT4(SettingsEq,
235 empty_dict_.get(), NULL, storage_->Get(key1_)); 278 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
236 EXPECT_PRED_FORMAT3(SettingsEq, 279 EXPECT_PRED_FORMAT4(SettingsEq,
237 empty_dict_.get(), NULL, storage_->Get(key3_)); 280 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
238 EXPECT_PRED_FORMAT3(SettingsEq, 281 EXPECT_PRED_FORMAT4(SettingsEq,
239 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 282 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
240 EXPECT_PRED_FORMAT3(SettingsEq, 283 EXPECT_PRED_FORMAT4(SettingsEq,
241 empty_dict_.get(), NULL, storage_->Get(list1_)); 284 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
242 EXPECT_PRED_FORMAT3(SettingsEq, 285 EXPECT_PRED_FORMAT4(SettingsEq,
243 empty_dict_.get(), NULL, storage_->Get(list12_)); 286 empty_dict_.get(), NULL, NULL, storage_->Get(list12_));
244 EXPECT_PRED_FORMAT3(SettingsEq, 287 EXPECT_PRED_FORMAT4(SettingsEq,
245 empty_dict_.get(), NULL, storage_->Get(list13_)); 288 empty_dict_.get(), NULL, NULL, storage_->Get(list13_));
246 EXPECT_PRED_FORMAT3(SettingsEq, 289 EXPECT_PRED_FORMAT4(SettingsEq,
247 empty_dict_.get(), NULL, storage_->Get(list123_)); 290 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
248 EXPECT_PRED_FORMAT3(SettingsEq, 291 EXPECT_PRED_FORMAT4(SettingsEq,
249 empty_dict_.get(), NULL, storage_->Get()); 292 empty_dict_.get(), NULL, NULL, storage_->Get());
250 } 293 }
251 294
252 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { 295 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) {
253 DictionaryValue key1_val2; 296 DictionaryValue key1_val2;
254 key1_val2.Set(key1_, val2_->DeepCopy()); 297 key1_val2.Set(key1_, val2_->DeepCopy());
255 298
256 EXPECT_PRED_FORMAT3(SettingsEq, 299 EXPECT_PRED_FORMAT4(SettingsEq,
257 &key1_val2, &set1_, storage_->Set(key1_, *val2_)); 300 &key1_val2, empty_dict_.get(), &set1_, storage_->Set(key1_, *val2_));
258 EXPECT_PRED_FORMAT3(SettingsEq, 301 EXPECT_PRED_FORMAT4(SettingsEq,
259 dict12_.get(), &set12_, storage_->Set(*dict12_)); 302 dict12_.get(), &key1_val2, &set12_, storage_->Set(*dict12_));
260 303
261 EXPECT_PRED_FORMAT3(SettingsEq, 304 EXPECT_PRED_FORMAT4(SettingsEq,
262 dict1_.get(), NULL, storage_->Get(key1_)); 305 dict1_.get(), NULL, NULL, storage_->Get(key1_));
263 EXPECT_PRED_FORMAT3(SettingsEq, 306 EXPECT_PRED_FORMAT4(SettingsEq,
264 empty_dict_.get(), NULL, storage_->Get(key3_)); 307 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
265 EXPECT_PRED_FORMAT3(SettingsEq, 308 EXPECT_PRED_FORMAT4(SettingsEq,
266 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 309 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
267 EXPECT_PRED_FORMAT3(SettingsEq, 310 EXPECT_PRED_FORMAT4(SettingsEq,
268 dict1_.get(), NULL, storage_->Get(list1_)); 311 dict1_.get(), NULL, NULL, storage_->Get(list1_));
269 EXPECT_PRED_FORMAT3(SettingsEq, 312 EXPECT_PRED_FORMAT4(SettingsEq,
270 dict12_.get(), NULL, storage_->Get(list12_)); 313 dict12_.get(), NULL, NULL, storage_->Get(list12_));
271 EXPECT_PRED_FORMAT3(SettingsEq, 314 EXPECT_PRED_FORMAT4(SettingsEq,
272 dict1_.get(), NULL, storage_->Get(list13_)); 315 dict1_.get(), NULL, NULL, storage_->Get(list13_));
273 EXPECT_PRED_FORMAT3(SettingsEq, 316 EXPECT_PRED_FORMAT4(SettingsEq,
274 dict12_.get(), NULL, storage_->Get(list123_)); 317 dict12_.get(), NULL, NULL, storage_->Get(list123_));
275 EXPECT_PRED_FORMAT3(SettingsEq, 318 EXPECT_PRED_FORMAT4(SettingsEq,
276 dict12_.get(), NULL, storage_->Get()); 319 dict12_.get(), NULL, NULL, storage_->Get());
277 } 320 }
278 321
279 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { 322 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) {
280 EXPECT_PRED_FORMAT3(SettingsEq, 323 EXPECT_PRED_FORMAT4(SettingsEq,
281 NULL, &empty_set_, storage_->Clear()); 324 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
282 325
283 EXPECT_PRED_FORMAT3(SettingsEq, 326 EXPECT_PRED_FORMAT4(SettingsEq,
284 empty_dict_.get(), NULL, storage_->Get(key1_)); 327 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
285 EXPECT_PRED_FORMAT3(SettingsEq, 328 EXPECT_PRED_FORMAT4(SettingsEq,
286 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 329 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
287 EXPECT_PRED_FORMAT3(SettingsEq, 330 EXPECT_PRED_FORMAT4(SettingsEq,
288 empty_dict_.get(), NULL, storage_->Get(list123_)); 331 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
289 EXPECT_PRED_FORMAT3(SettingsEq, 332 EXPECT_PRED_FORMAT4(SettingsEq,
290 empty_dict_.get(), NULL, storage_->Get()); 333 empty_dict_.get(), NULL, NULL, storage_->Get());
291 } 334 }
292 335
293 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { 336 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) {
294 EXPECT_PRED_FORMAT3(SettingsEq, 337 EXPECT_PRED_FORMAT4(SettingsEq,
295 dict12_.get(), &set12_, storage_->Set(*dict12_)); 338 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
296 EXPECT_PRED_FORMAT3(SettingsEq, 339 EXPECT_PRED_FORMAT4(SettingsEq,
297 NULL, &set12_, storage_->Clear()); 340 NULL, dict12_.get(), &set12_, storage_->Clear());
298 341
299 EXPECT_PRED_FORMAT3(SettingsEq, 342 EXPECT_PRED_FORMAT4(SettingsEq,
300 empty_dict_.get(), NULL, storage_->Get(key1_)); 343 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
301 EXPECT_PRED_FORMAT3(SettingsEq, 344 EXPECT_PRED_FORMAT4(SettingsEq,
302 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 345 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
303 EXPECT_PRED_FORMAT3(SettingsEq, 346 EXPECT_PRED_FORMAT4(SettingsEq,
304 empty_dict_.get(), NULL, storage_->Get(list123_)); 347 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
305 EXPECT_PRED_FORMAT3(SettingsEq, 348 EXPECT_PRED_FORMAT4(SettingsEq,
306 empty_dict_.get(), NULL, storage_->Get()); 349 empty_dict_.get(), NULL, NULL, storage_->Get());
307 } 350 }
308 351
309 // Dots should be allowed in key names; they shouldn't be interpreted as 352 // Dots should be allowed in key names; they shouldn't be interpreted as
310 // indexing into a dictionary. 353 // indexing into a dictionary.
311 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { 354 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) {
312 std::string dot_key("foo.bar"); 355 std::string dot_key("foo.bar");
313 StringValue dot_value("baz.qux"); 356 StringValue dot_value("baz.qux");
314 std::vector<std::string> dot_list; 357 std::vector<std::string> dot_list;
315 dot_list.push_back(dot_key); 358 dot_list.push_back(dot_key);
316 std::set<std::string> dot_set; 359 std::set<std::string> dot_set;
317 dot_set.insert(dot_key); 360 dot_set.insert(dot_key);
318 DictionaryValue dot_dict; 361 DictionaryValue dot_dict;
319 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); 362 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy());
320 363
321 EXPECT_PRED_FORMAT3(SettingsEq, 364 EXPECT_PRED_FORMAT4(SettingsEq,
322 empty_dict_.get(), NULL, storage_->Get(dot_key)); 365 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key));
323 366
324 EXPECT_PRED_FORMAT3(SettingsEq, 367 EXPECT_PRED_FORMAT4(SettingsEq,
325 &dot_dict, &dot_set, storage_->Set(dot_key, dot_value)); 368 &dot_dict, empty_dict_.get(), &dot_set,
326 EXPECT_PRED_FORMAT3(SettingsEq, 369 storage_->Set(dot_key, dot_value));
327 &dot_dict, &empty_set_, storage_->Set(dot_key, dot_value)); 370 EXPECT_PRED_FORMAT4(SettingsEq,
328 EXPECT_PRED_FORMAT3(SettingsEq, 371 &dot_dict, &dot_dict, &empty_set_,
329 &dot_dict, NULL, storage_->Get(dot_key)); 372 storage_->Set(dot_key, dot_value));
373 EXPECT_PRED_FORMAT4(SettingsEq,
374 &dot_dict, NULL, NULL, storage_->Get(dot_key));
330 375
331 EXPECT_PRED_FORMAT3(SettingsEq, 376 EXPECT_PRED_FORMAT4(SettingsEq,
332 NULL, &dot_set, storage_->Remove(dot_key)); 377 NULL, &dot_dict, &dot_set, storage_->Remove(dot_key));
333 EXPECT_PRED_FORMAT3(SettingsEq, 378 EXPECT_PRED_FORMAT4(SettingsEq,
334 NULL, &empty_set_, storage_->Remove(dot_key)); 379 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(dot_key));
335 EXPECT_PRED_FORMAT3(SettingsEq, 380 EXPECT_PRED_FORMAT4(SettingsEq,
336 &dot_dict, &dot_set, storage_->Set(dot_dict)); 381 &dot_dict, empty_dict_.get(), &dot_set, storage_->Set(dot_dict));
337 EXPECT_PRED_FORMAT3(SettingsEq, 382 EXPECT_PRED_FORMAT4(SettingsEq,
338 &dot_dict, NULL, storage_->Get(dot_list)); 383 &dot_dict, NULL, NULL, storage_->Get(dot_list));
339 EXPECT_PRED_FORMAT3(SettingsEq, 384 EXPECT_PRED_FORMAT4(SettingsEq,
340 &dot_dict, NULL, storage_->Get()); 385 &dot_dict, NULL, NULL, storage_->Get());
341 386
342 EXPECT_PRED_FORMAT3(SettingsEq, 387 EXPECT_PRED_FORMAT4(SettingsEq,
343 NULL, &dot_set, storage_->Remove(dot_list)); 388 NULL, &dot_dict, &dot_set, storage_->Remove(dot_list));
344 EXPECT_PRED_FORMAT3(SettingsEq, 389 EXPECT_PRED_FORMAT4(SettingsEq,
345 empty_dict_.get(), NULL, storage_->Get(dot_key)); 390 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key));
346 EXPECT_PRED_FORMAT3(SettingsEq, 391 EXPECT_PRED_FORMAT4(SettingsEq,
347 empty_dict_.get(), NULL, storage_->Get()); 392 empty_dict_.get(), NULL, NULL, storage_->Get());
348 } 393 }
349 394
350 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { 395 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) {
351 DictionaryValue outer_dict; 396 DictionaryValue outer_dict;
352 DictionaryValue* inner_dict = new DictionaryValue(); 397 DictionaryValue* inner_dict = new DictionaryValue();
353 outer_dict.Set("foo", inner_dict); 398 outer_dict.Set("foo", inner_dict);
354 inner_dict->Set("bar", Value::CreateStringValue("baz")); 399 inner_dict->Set("bar", Value::CreateStringValue("baz"));
355 std::set<std::string> changed_keys; 400 std::set<std::string> changed_keys;
356 changed_keys.insert("foo"); 401 changed_keys.insert("foo");
357 402
358 EXPECT_PRED_FORMAT3(SettingsEq, 403 EXPECT_PRED_FORMAT4(SettingsEq,
359 &outer_dict, &changed_keys, storage_->Set(outer_dict)); 404 &outer_dict, empty_dict_.get(), &changed_keys, storage_->Set(outer_dict));
360 EXPECT_PRED_FORMAT3(SettingsEq, 405 EXPECT_PRED_FORMAT4(SettingsEq,
361 &outer_dict, NULL, storage_->Get("foo")); 406 &outer_dict, NULL, NULL, storage_->Get("foo"));
362 EXPECT_PRED_FORMAT3(SettingsEq, 407 EXPECT_PRED_FORMAT4(SettingsEq,
363 empty_dict_.get(), NULL, storage_->Get("foo.bar")); 408 empty_dict_.get(), NULL, NULL, storage_->Get("foo.bar"));
364 } 409 }
365 410
366 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { 411 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) {
367 // Test: 412 // Test:
368 // - Setting over missing/changed/same keys, combinations. 413 // - Setting over missing/changed/same keys, combinations.
369 // - Removing over missing and present keys, combinations. 414 // - Removing over missing and present keys, combinations.
370 // - Clearing. 415 // - Clearing.
371 std::vector<std::string> complex_list; 416 std::vector<std::string> complex_list;
372 std::set<std::string> complex_set; 417 std::set<std::string> complex_set;
373 DictionaryValue complex_dict; 418 DictionaryValue complex_dict;
419 DictionaryValue complex_changed_dict;
374 420
375 EXPECT_PRED_FORMAT3(SettingsEq, 421 EXPECT_PRED_FORMAT4(SettingsEq,
376 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 422 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
377 EXPECT_PRED_FORMAT3(SettingsEq, 423 EXPECT_PRED_FORMAT4(SettingsEq,
378 dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_)); 424 dict1_.get(), dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_));
379 425
380 complex_dict.Clear(); 426 complex_dict.Clear();
381 complex_dict.Set(key1_, val2_->DeepCopy()); 427 complex_dict.Set(key1_, val2_->DeepCopy());
382 EXPECT_PRED_FORMAT3(SettingsEq, 428 EXPECT_PRED_FORMAT4(SettingsEq,
383 &complex_dict, &set1_, storage_->Set(key1_, *val2_)); 429 &complex_dict, dict1_.get(), &set1_, storage_->Set(key1_, *val2_));
384 430
385 EXPECT_PRED_FORMAT3(SettingsEq, 431 EXPECT_PRED_FORMAT4(SettingsEq,
386 NULL, &set1_, storage_->Remove(key1_)); 432 NULL, &complex_dict, &set1_, storage_->Remove(key1_));
387 EXPECT_PRED_FORMAT3(SettingsEq, 433 EXPECT_PRED_FORMAT4(SettingsEq,
388 NULL, &empty_set_, storage_->Remove(key1_)); 434 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_));
389 435
390 EXPECT_PRED_FORMAT3(SettingsEq, 436 EXPECT_PRED_FORMAT4(SettingsEq,
391 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 437 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
392 EXPECT_PRED_FORMAT3(SettingsEq, 438 EXPECT_PRED_FORMAT4(SettingsEq,
393 NULL, &set1_, storage_->Clear()); 439 NULL, dict1_.get(), &set1_, storage_->Clear());
394 EXPECT_PRED_FORMAT3(SettingsEq, 440 EXPECT_PRED_FORMAT4(SettingsEq,
395 NULL, &empty_set_, storage_->Clear()); 441 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
396 442
397 EXPECT_PRED_FORMAT3(SettingsEq, 443 EXPECT_PRED_FORMAT4(SettingsEq,
398 dict12_.get(), &set12_, storage_->Set(*dict12_)); 444 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
399 EXPECT_PRED_FORMAT3(SettingsEq, 445 EXPECT_PRED_FORMAT4(SettingsEq,
400 dict12_.get(), &empty_set_, storage_->Set(*dict12_)); 446 dict12_.get(), dict12_.get(), &empty_set_, storage_->Set(*dict12_));
401 EXPECT_PRED_FORMAT3(SettingsEq, 447 EXPECT_PRED_FORMAT4(SettingsEq,
402 dict123_.get(), &set3_, storage_->Set(*dict123_)); 448 dict123_.get(), dict12_.get(), &set3_, storage_->Set(*dict123_));
403 449
404 complex_dict.Clear(); 450 complex_dict.Clear();
405 complex_dict.Set(key1_, val2_->DeepCopy()); 451 complex_dict.Set(key1_, val2_->DeepCopy());
406 complex_dict.Set(key2_, val2_->DeepCopy()); 452 complex_dict.Set(key2_, val2_->DeepCopy());
407 complex_dict.Set("asdf", val1_->DeepCopy()); 453 complex_dict.Set("asdf", val1_->DeepCopy());
408 complex_dict.Set("qwerty", val3_->DeepCopy()); 454 complex_dict.Set("qwerty", val3_->DeepCopy());
455 complex_changed_dict.Clear();
456 complex_changed_dict.Set(key1_, val1_->DeepCopy());
457 complex_changed_dict.Set(key2_, val2_->DeepCopy());
409 complex_set.clear(); 458 complex_set.clear();
410 complex_set.insert(key1_); 459 complex_set.insert(key1_);
411 complex_set.insert("asdf"); 460 complex_set.insert("asdf");
412 complex_set.insert("qwerty"); 461 complex_set.insert("qwerty");
413 EXPECT_PRED_FORMAT3(SettingsEq, 462 EXPECT_PRED_FORMAT4(SettingsEq,
414 &complex_dict, &complex_set, storage_->Set(complex_dict)); 463 &complex_dict, &complex_changed_dict, &complex_set,
464 storage_->Set(complex_dict));
415 465
416 EXPECT_PRED_FORMAT3(SettingsEq, 466 complex_changed_dict.Clear();
417 NULL, &set12_, storage_->Remove(list12_)); 467 complex_changed_dict.Set(key1_, val2_->DeepCopy());
418 EXPECT_PRED_FORMAT3(SettingsEq, 468 complex_changed_dict.Set(key2_, val2_->DeepCopy());
419 NULL, &empty_set_, storage_->Remove(list12_)); 469 EXPECT_PRED_FORMAT4(SettingsEq,
470 NULL, &complex_changed_dict, &set12_, storage_->Remove(list12_));
471 EXPECT_PRED_FORMAT4(SettingsEq,
472 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(list12_));
420 473
421 complex_list.clear(); 474 complex_list.clear();
422 complex_list.push_back(key1_); 475 complex_list.push_back(key1_);
423 complex_list.push_back("asdf"); 476 complex_list.push_back("asdf");
477 complex_changed_dict.Clear();
478 complex_changed_dict.Set("asdf", val1_->DeepCopy());
424 complex_set.clear(); 479 complex_set.clear();
425 complex_set.insert("asdf"); 480 complex_set.insert("asdf");
426 EXPECT_PRED_FORMAT3(SettingsEq, 481 EXPECT_PRED_FORMAT4(SettingsEq,
427 NULL, &complex_set, storage_->Remove(complex_list)); 482 NULL,
483 &complex_changed_dict,
484 &complex_set,
485 storage_->Remove(complex_list));
428 486
487 complex_changed_dict.Clear();
488 complex_changed_dict.Set(key3_, val3_->DeepCopy());
489 complex_changed_dict.Set("qwerty", val3_->DeepCopy());
429 complex_set.clear(); 490 complex_set.clear();
430 complex_set.insert(key3_); 491 complex_set.insert(key3_);
431 complex_set.insert("qwerty"); 492 complex_set.insert("qwerty");
432 EXPECT_PRED_FORMAT3(SettingsEq, 493 EXPECT_PRED_FORMAT4(SettingsEq,
433 NULL, &complex_set, storage_->Clear()); 494 NULL, &complex_changed_dict, &complex_set, storage_->Clear());
434 EXPECT_PRED_FORMAT3(SettingsEq, 495 EXPECT_PRED_FORMAT4(SettingsEq,
435 NULL, &empty_set_, storage_->Clear()); 496 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
436 } 497 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698