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

Side by Side Diff: chrome/browser/extensions/settings/settings_storage_unittest.cc

Issue 8587025: Extension settings API: force through changes that come from sync (ignoring (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 9 years, 1 month 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/settings/settings_storage_unittest.h" 5 #include "chrome/browser/extensions/settings/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
11 namespace extensions { 11 namespace extensions {
12 12
13 using content::BrowserThread; 13 using content::BrowserThread;
14 14
15 namespace { 15 namespace {
16 16
17 // To save typing SettingsStorage::DEFAULTS everywhere.
18 const SettingsStorage::WriteOptions DEFAULTS = SettingsStorage::DEFAULTS;
19
17 // Gets the pretty-printed JSON for a value. 20 // Gets the pretty-printed JSON for a value.
18 std::string GetJSON(const Value& value) { 21 std::string GetJSON(const Value& value) {
19 std::string json; 22 std::string json;
20 base::JSONWriter::Write(&value, true, &json); 23 base::JSONWriter::Write(&value, true, &json);
21 return json; 24 return json;
22 } 25 }
23 26
24 // Pretty-prints a set of strings. 27 // Pretty-prints a set of strings.
25 std::string ToString(const std::set<std::string>& strings) { 28 std::string ToString(const std::set<std::string>& strings) {
26 std::string string("{"); 29 std::string string("{");
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); 195 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_));
193 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 196 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
194 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); 197 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_));
195 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 198 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
196 } 199 }
197 200
198 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) { 201 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) {
199 { 202 {
200 SettingChangeList changes; 203 SettingChangeList changes;
201 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); 204 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy()));
202 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(key1_, *val1_)); 205 EXPECT_PRED_FORMAT2(ChangesEq,
206 changes, storage_->Set(DEFAULTS, key1_, *val1_));
203 } 207 }
204 208
205 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); 209 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_));
206 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_)); 210 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_));
207 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); 211 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_));
208 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 212 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
209 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list123_)); 213 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list123_));
210 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get()); 214 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get());
211 } 215 }
212 216
213 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) { 217 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) {
214 { 218 {
215 SettingChangeList changes; 219 SettingChangeList changes;
216 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); 220 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy()));
217 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); 221 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy()));
218 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict12_)); 222 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict12_));
219 } 223 }
220 224
221 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); 225 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_));
222 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); 226 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_));
223 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 227 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
224 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); 228 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_));
225 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); 229 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get());
226 } 230 }
227 231
228 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) { 232 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) {
229 EXPECT_PRED_FORMAT2(ChangesEq, 233 EXPECT_PRED_FORMAT2(ChangesEq, SettingChangeList(), storage_->Remove(key1_));
230 SettingChangeList(), storage_->Remove(key1_));
231 234
232 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); 235 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_));
233 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); 236 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_));
234 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 237 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
235 } 238 }
236 239
237 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { 240 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) {
238 storage_->Set(*dict1_); 241 storage_->Set(DEFAULTS, *dict1_);
239 { 242 {
240 SettingChangeList changes; 243 SettingChangeList changes;
241 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); 244 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL));
242 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_)); 245 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_));
243 } 246 }
244 247
245 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); 248 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_));
246 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_)); 249 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_));
247 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); 250 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_));
248 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); 251 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_));
249 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 252 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
250 } 253 }
251 254
252 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { 255 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) {
253 storage_->Set(*dict123_); 256 storage_->Set(DEFAULTS, *dict123_);
254 { 257 {
255 SettingChangeList changes; 258 SettingChangeList changes;
256 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); 259 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL));
257 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key3_)); 260 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key3_));
258 } 261 }
259 262
260 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); 263 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_));
261 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); 264 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_));
262 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 265 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
263 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); 266 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_));
(...skipping 13 matching lines...) Expand all
277 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); 280 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_));
278 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 281 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
279 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); 282 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_));
280 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); 283 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_));
281 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list13_)); 284 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list13_));
282 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); 285 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_));
283 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 286 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
284 } 287 }
285 288
286 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { 289 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) {
287 storage_->Set(key1_, *val2_); 290 storage_->Set(DEFAULTS, key1_, *val2_);
288 { 291 {
289 SettingChangeList changes; 292 SettingChangeList changes;
290 changes.push_back( 293 changes.push_back(
291 SettingChange(key1_, val2_->DeepCopy(), val1_->DeepCopy())); 294 SettingChange(key1_, val2_->DeepCopy(), val1_->DeepCopy()));
292 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); 295 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy()));
293 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict12_)); 296 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict12_));
294 } 297 }
295 298
296 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); 299 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_));
297 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); 300 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_));
298 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 301 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
299 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); 302 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_));
300 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_)); 303 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_));
301 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_)); 304 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_));
302 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); 305 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_));
303 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); 306 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get());
304 } 307 }
305 308
306 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { 309 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) {
307 EXPECT_PRED_FORMAT2(ChangesEq, 310 EXPECT_PRED_FORMAT2(ChangesEq, SettingChangeList(), storage_->Clear());
308 SettingChangeList(), storage_->Clear());
309 311
310 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); 312 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_));
311 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 313 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
312 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); 314 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_));
313 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 315 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
314 } 316 }
315 317
316 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { 318 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) {
317 storage_->Set(*dict12_); 319 storage_->Set(DEFAULTS, *dict12_);
318 { 320 {
319 SettingChangeList changes; 321 SettingChangeList changes;
320 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); 322 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL));
321 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); 323 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL));
322 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); 324 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear());
323 } 325 }
324 326
325 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); 327 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_));
326 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); 328 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_));
327 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); 329 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_));
328 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 330 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
329 } 331 }
330 332
331 // Dots should be allowed in key names; they shouldn't be interpreted as 333 // Dots should be allowed in key names; they shouldn't be interpreted as
332 // indexing into a dictionary. 334 // indexing into a dictionary.
333 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { 335 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) {
334 std::string dot_key("foo.bar"); 336 std::string dot_key("foo.bar");
335 StringValue dot_value("baz.qux"); 337 StringValue dot_value("baz.qux");
336 std::vector<std::string> dot_list; 338 std::vector<std::string> dot_list;
337 dot_list.push_back(dot_key); 339 dot_list.push_back(dot_key);
338 DictionaryValue dot_dict; 340 DictionaryValue dot_dict;
339 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); 341 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy());
340 342
341 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); 343 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key));
342 344
343 { 345 {
344 SettingChangeList changes; 346 SettingChangeList changes;
345 changes.push_back( 347 changes.push_back(
346 SettingChange(dot_key, NULL, dot_value.DeepCopy())); 348 SettingChange(dot_key, NULL, dot_value.DeepCopy()));
347 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(dot_key, dot_value)); 349 EXPECT_PRED_FORMAT2(ChangesEq,
350 changes, storage_->Set(DEFAULTS, dot_key, dot_value));
348 } 351 }
349 EXPECT_PRED_FORMAT2(ChangesEq, 352 EXPECT_PRED_FORMAT2(ChangesEq,
350 SettingChangeList(), storage_->Set(dot_key, dot_value)); 353 SettingChangeList(), storage_->Set(DEFAULTS, dot_key, dot_value));
351 354
352 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_key)); 355 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_key));
353 356
354 { 357 {
355 SettingChangeList changes; 358 SettingChangeList changes;
356 changes.push_back( 359 changes.push_back(
357 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); 360 SettingChange(dot_key, dot_value.DeepCopy(), NULL));
358 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_key)); 361 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_key));
359 } 362 }
360 EXPECT_PRED_FORMAT2(ChangesEq, 363 EXPECT_PRED_FORMAT2(ChangesEq,
361 SettingChangeList(), storage_->Remove(dot_key)); 364 SettingChangeList(), storage_->Remove(dot_key));
362 { 365 {
363 SettingChangeList changes; 366 SettingChangeList changes;
364 changes.push_back( 367 changes.push_back(
365 SettingChange(dot_key, NULL, dot_value.DeepCopy())); 368 SettingChange(dot_key, NULL, dot_value.DeepCopy()));
366 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(dot_dict)); 369 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, dot_dict));
367 } 370 }
368 371
369 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_list)); 372 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_list));
370 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get()); 373 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get());
371 374
372 { 375 {
373 SettingChangeList changes; 376 SettingChangeList changes;
374 changes.push_back( 377 changes.push_back(
375 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); 378 SettingChange(dot_key, dot_value.DeepCopy(), NULL));
376 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_list)); 379 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_list));
377 } 380 }
378 381
379 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); 382 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key));
380 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); 383 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get());
381 } 384 }
382 385
383 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { 386 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) {
384 DictionaryValue outer_dict; 387 DictionaryValue outer_dict;
385 DictionaryValue* inner_dict = new DictionaryValue(); 388 DictionaryValue* inner_dict = new DictionaryValue();
386 outer_dict.Set("foo", inner_dict); 389 outer_dict.Set("foo", inner_dict);
387 inner_dict->SetString("bar", "baz"); 390 inner_dict->SetString("bar", "baz");
388 391
389 { 392 {
390 SettingChangeList changes; 393 SettingChangeList changes;
391 changes.push_back( 394 changes.push_back(
392 SettingChange("foo", NULL, inner_dict->DeepCopy())); 395 SettingChange("foo", NULL, inner_dict->DeepCopy()));
393 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(outer_dict)); 396 EXPECT_PRED_FORMAT2(ChangesEq,
397 changes, storage_->Set(DEFAULTS, outer_dict));
394 } 398 }
395 399
396 EXPECT_PRED_FORMAT2(SettingsEq, outer_dict, storage_->Get("foo")); 400 EXPECT_PRED_FORMAT2(SettingsEq, outer_dict, storage_->Get("foo"));
397 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get("foo.bar")); 401 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get("foo.bar"));
398 } 402 }
399 403
400 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { 404 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) {
401 // Test: 405 // Test:
402 // - Setting over missing/changed/same keys, combinations. 406 // - Setting over missing/changed/same keys, combinations.
403 // - Removing over missing and present keys, combinations. 407 // - Removing over missing and present keys, combinations.
404 // - Clearing. 408 // - Clearing.
405 std::vector<std::string> complex_list; 409 std::vector<std::string> complex_list;
406 DictionaryValue complex_changed_dict; 410 DictionaryValue complex_changed_dict;
407 411
408 storage_->Set(key1_, *val1_); 412 storage_->Set(DEFAULTS, key1_, *val1_);
409 EXPECT_PRED_FORMAT2(ChangesEq, 413 EXPECT_PRED_FORMAT2(ChangesEq,
410 SettingChangeList(), storage_->Set(key1_, *val1_)); 414 SettingChangeList(), storage_->Set(DEFAULTS, key1_, *val1_));
411 { 415 {
412 SettingChangeList changes; 416 SettingChangeList changes;
413 changes.push_back(SettingChange( 417 changes.push_back(SettingChange(
414 key1_, val1_->DeepCopy(), val2_->DeepCopy())); 418 key1_, val1_->DeepCopy(), val2_->DeepCopy()));
415 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(key1_, *val2_)); 419 EXPECT_PRED_FORMAT2(ChangesEq,
420 changes, storage_->Set(DEFAULTS, key1_, *val2_));
416 } 421 }
417 { 422 {
418 SettingChangeList changes; 423 SettingChangeList changes;
419 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); 424 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL));
420 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_)); 425 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_));
421 EXPECT_PRED_FORMAT2(ChangesEq, 426 EXPECT_PRED_FORMAT2(ChangesEq,
422 SettingChangeList(), storage_->Remove(key1_)); 427 SettingChangeList(), storage_->Remove(key1_));
423 } 428 }
424 { 429 {
425 SettingChangeList changes; 430 SettingChangeList changes;
426 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); 431 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy()));
427 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(key1_, *val1_)); 432 EXPECT_PRED_FORMAT2(ChangesEq,
433 changes, storage_->Set(DEFAULTS, key1_, *val1_));
428 } 434 }
429 { 435 {
430 SettingChangeList changes; 436 SettingChangeList changes;
431 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); 437 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL));
432 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); 438 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear());
433 EXPECT_PRED_FORMAT2(ChangesEq, 439 EXPECT_PRED_FORMAT2(ChangesEq, SettingChangeList(), storage_->Clear());
434 SettingChangeList(), storage_->Clear());
435 } 440 }
436 441
437 { 442 {
438 SettingChangeList changes; 443 SettingChangeList changes;
439 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); 444 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy()));
440 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); 445 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy()));
441 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict12_)); 446 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict12_));
442 EXPECT_PRED_FORMAT2(ChangesEq, 447 EXPECT_PRED_FORMAT2(ChangesEq,
443 SettingChangeList(), storage_->Set(*dict12_)); 448 SettingChangeList(), storage_->Set(DEFAULTS, *dict12_));
444 } 449 }
445 { 450 {
446 SettingChangeList changes; 451 SettingChangeList changes;
447 changes.push_back(SettingChange(key3_, NULL, val3_->DeepCopy())); 452 changes.push_back(SettingChange(key3_, NULL, val3_->DeepCopy()));
448 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict123_)); 453 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict123_));
449 } 454 }
450 { 455 {
451 DictionaryValue to_set; 456 DictionaryValue to_set;
452 to_set.Set(key1_, val2_->DeepCopy()); 457 to_set.Set(key1_, val2_->DeepCopy());
453 to_set.Set(key2_, val2_->DeepCopy()); 458 to_set.Set(key2_, val2_->DeepCopy());
454 to_set.Set("asdf", val1_->DeepCopy()); 459 to_set.Set("asdf", val1_->DeepCopy());
455 to_set.Set("qwerty", val3_->DeepCopy()); 460 to_set.Set("qwerty", val3_->DeepCopy());
456 461
457 SettingChangeList changes; 462 SettingChangeList changes;
458 changes.push_back( 463 changes.push_back(
459 SettingChange(key1_, val1_->DeepCopy(), val2_->DeepCopy())); 464 SettingChange(key1_, val1_->DeepCopy(), val2_->DeepCopy()));
460 changes.push_back(SettingChange("asdf", NULL, val1_->DeepCopy())); 465 changes.push_back(SettingChange("asdf", NULL, val1_->DeepCopy()));
461 changes.push_back( 466 changes.push_back(
462 SettingChange("qwerty", NULL, val3_->DeepCopy())); 467 SettingChange("qwerty", NULL, val3_->DeepCopy()));
463 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(to_set)); 468 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, to_set));
464 } 469 }
465 { 470 {
466 SettingChangeList changes; 471 SettingChangeList changes;
467 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); 472 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL));
468 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); 473 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL));
469 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(list12_)); 474 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(list12_));
470 } 475 }
471 { 476 {
472 std::vector<std::string> to_remove; 477 std::vector<std::string> to_remove;
473 to_remove.push_back(key1_); 478 to_remove.push_back(key1_);
474 to_remove.push_back("asdf"); 479 to_remove.push_back("asdf");
475 480
476 SettingChangeList changes; 481 SettingChangeList changes;
477 changes.push_back(SettingChange("asdf", val1_->DeepCopy(), NULL)); 482 changes.push_back(SettingChange("asdf", val1_->DeepCopy(), NULL));
478 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(to_remove)); 483 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(to_remove));
479 } 484 }
480 { 485 {
481 SettingChangeList changes; 486 SettingChangeList changes;
482 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); 487 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL));
483 changes.push_back( 488 changes.push_back(
484 SettingChange("qwerty", val3_->DeepCopy(), NULL)); 489 SettingChange("qwerty", val3_->DeepCopy(), NULL));
485 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); 490 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear());
486 EXPECT_PRED_FORMAT2(ChangesEq, 491 EXPECT_PRED_FORMAT2(ChangesEq, SettingChangeList(), storage_->Clear());
487 SettingChangeList(), storage_->Clear());
488 } 492 }
489 } 493 }
490 494
491 } // namespace extensions 495 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698