OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |