| 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 |