| 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, |
| 230 SettingChangeList(), storage_->Remove(key1_)); | 234 SettingChangeList(), storage_->Remove(DEFAULTS, key1_)); |
| 231 | 235 |
| 232 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); | 236 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); |
| 233 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); | 237 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); |
| 234 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 238 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 235 } | 239 } |
| 236 | 240 |
| 237 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { | 241 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { |
| 238 storage_->Set(*dict1_); | 242 storage_->Set(DEFAULTS, *dict1_); |
| 239 { | 243 { |
| 240 SettingChangeList changes; | 244 SettingChangeList changes; |
| 241 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); | 245 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); |
| 242 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_)); | 246 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(DEFAULTS, key1_)); |
| 243 } | 247 } |
| 244 | 248 |
| 245 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); | 249 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); |
| 246 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_)); | 250 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key2_)); |
| 247 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); | 251 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); |
| 248 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); | 252 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); |
| 249 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 253 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 250 } | 254 } |
| 251 | 255 |
| 252 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { | 256 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { |
| 253 storage_->Set(*dict123_); | 257 storage_->Set(DEFAULTS, *dict123_); |
| 254 { | 258 { |
| 255 SettingChangeList changes; | 259 SettingChangeList changes; |
| 256 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); | 260 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); |
| 257 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key3_)); | 261 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(DEFAULTS, key3_)); |
| 258 } | 262 } |
| 259 | 263 |
| 260 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); | 264 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); |
| 261 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); | 265 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); |
| 262 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); | 266 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); |
| 263 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); | 267 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); |
| 264 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_)); | 268 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_)); |
| 265 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_)); | 269 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_)); |
| 266 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); | 270 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); |
| 267 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); | 271 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); |
| 268 | 272 |
| 269 { | 273 { |
| 270 SettingChangeList changes; | 274 SettingChangeList changes; |
| 271 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); | 275 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); |
| 272 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); | 276 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); |
| 273 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(list12_)); | 277 EXPECT_PRED_FORMAT2(ChangesEq, |
| 278 changes, storage_->Remove(DEFAULTS, list12_)); |
| 274 } | 279 } |
| 275 | 280 |
| 276 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); | 281 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); |
| 277 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); | 282 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); |
| 278 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); | 283 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); |
| 279 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); | 284 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list1_)); |
| 280 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); | 285 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list12_)); |
| 281 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list13_)); | 286 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list13_)); |
| 282 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); | 287 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); |
| 283 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 288 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 284 } | 289 } |
| 285 | 290 |
| 286 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { | 291 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { |
| 287 storage_->Set(key1_, *val2_); | 292 storage_->Set(DEFAULTS, key1_, *val2_); |
| 288 { | 293 { |
| 289 SettingChangeList changes; | 294 SettingChangeList changes; |
| 290 changes.push_back( | 295 changes.push_back( |
| 291 SettingChange(key1_, val2_->DeepCopy(), val1_->DeepCopy())); | 296 SettingChange(key1_, val2_->DeepCopy(), val1_->DeepCopy())); |
| 292 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); | 297 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); |
| 293 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict12_)); | 298 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict12_)); |
| 294 } | 299 } |
| 295 | 300 |
| 296 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); | 301 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(key1_)); |
| 297 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); | 302 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key3_)); |
| 298 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); | 303 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); |
| 299 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); | 304 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list1_)); |
| 300 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_)); | 305 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list12_)); |
| 301 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_)); | 306 EXPECT_PRED_FORMAT2(SettingsEq, *dict1_, storage_->Get(list13_)); |
| 302 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); | 307 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get(list123_)); |
| 303 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); | 308 EXPECT_PRED_FORMAT2(SettingsEq, *dict12_, storage_->Get()); |
| 304 } | 309 } |
| 305 | 310 |
| 306 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { | 311 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { |
| 307 EXPECT_PRED_FORMAT2(ChangesEq, | 312 EXPECT_PRED_FORMAT2(ChangesEq, |
| 308 SettingChangeList(), storage_->Clear()); | 313 SettingChangeList(), storage_->Clear(DEFAULTS)); |
| 309 | 314 |
| 310 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); | 315 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); |
| 311 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); | 316 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); |
| 312 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); | 317 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); |
| 313 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 318 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 314 } | 319 } |
| 315 | 320 |
| 316 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { | 321 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { |
| 317 storage_->Set(*dict12_); | 322 storage_->Set(DEFAULTS, *dict12_); |
| 318 { | 323 { |
| 319 SettingChangeList changes; | 324 SettingChangeList changes; |
| 320 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); | 325 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); |
| 321 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); | 326 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); |
| 322 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); | 327 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear(DEFAULTS)); |
| 323 } | 328 } |
| 324 | 329 |
| 325 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); | 330 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(key1_)); |
| 326 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); | 331 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(empty_list_)); |
| 327 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); | 332 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(list123_)); |
| 328 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 333 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 329 } | 334 } |
| 330 | 335 |
| 331 // Dots should be allowed in key names; they shouldn't be interpreted as | 336 // Dots should be allowed in key names; they shouldn't be interpreted as |
| 332 // indexing into a dictionary. | 337 // indexing into a dictionary. |
| 333 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { | 338 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { |
| 334 std::string dot_key("foo.bar"); | 339 std::string dot_key("foo.bar"); |
| 335 StringValue dot_value("baz.qux"); | 340 StringValue dot_value("baz.qux"); |
| 336 std::vector<std::string> dot_list; | 341 std::vector<std::string> dot_list; |
| 337 dot_list.push_back(dot_key); | 342 dot_list.push_back(dot_key); |
| 338 DictionaryValue dot_dict; | 343 DictionaryValue dot_dict; |
| 339 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); | 344 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); |
| 340 | 345 |
| 341 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); | 346 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); |
| 342 | 347 |
| 343 { | 348 { |
| 344 SettingChangeList changes; | 349 SettingChangeList changes; |
| 345 changes.push_back( | 350 changes.push_back( |
| 346 SettingChange(dot_key, NULL, dot_value.DeepCopy())); | 351 SettingChange(dot_key, NULL, dot_value.DeepCopy())); |
| 347 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(dot_key, dot_value)); | 352 EXPECT_PRED_FORMAT2(ChangesEq, |
| 353 changes, storage_->Set(DEFAULTS, dot_key, dot_value)); |
| 348 } | 354 } |
| 349 EXPECT_PRED_FORMAT2(ChangesEq, | 355 EXPECT_PRED_FORMAT2(ChangesEq, |
| 350 SettingChangeList(), storage_->Set(dot_key, dot_value)); | 356 SettingChangeList(), storage_->Set(DEFAULTS, dot_key, dot_value)); |
| 351 | 357 |
| 352 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_key)); | 358 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_key)); |
| 353 | 359 |
| 354 { | 360 { |
| 355 SettingChangeList changes; | 361 SettingChangeList changes; |
| 356 changes.push_back( | 362 changes.push_back( |
| 357 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); | 363 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); |
| 358 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_key)); | 364 EXPECT_PRED_FORMAT2(ChangesEq, |
| 365 changes, storage_->Remove(DEFAULTS, dot_key)); |
| 359 } | 366 } |
| 360 EXPECT_PRED_FORMAT2(ChangesEq, | 367 EXPECT_PRED_FORMAT2(ChangesEq, |
| 361 SettingChangeList(), storage_->Remove(dot_key)); | 368 SettingChangeList(), storage_->Remove(DEFAULTS, dot_key)); |
| 362 { | 369 { |
| 363 SettingChangeList changes; | 370 SettingChangeList changes; |
| 364 changes.push_back( | 371 changes.push_back( |
| 365 SettingChange(dot_key, NULL, dot_value.DeepCopy())); | 372 SettingChange(dot_key, NULL, dot_value.DeepCopy())); |
| 366 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(dot_dict)); | 373 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, dot_dict)); |
| 367 } | 374 } |
| 368 | 375 |
| 369 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_list)); | 376 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get(dot_list)); |
| 370 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get()); | 377 EXPECT_PRED_FORMAT2(SettingsEq, dot_dict, storage_->Get()); |
| 371 | 378 |
| 372 { | 379 { |
| 373 SettingChangeList changes; | 380 SettingChangeList changes; |
| 374 changes.push_back( | 381 changes.push_back( |
| 375 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); | 382 SettingChange(dot_key, dot_value.DeepCopy(), NULL)); |
| 376 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(dot_list)); | 383 EXPECT_PRED_FORMAT2(ChangesEq, |
| 384 changes, storage_->Remove(DEFAULTS, dot_list)); |
| 377 } | 385 } |
| 378 | 386 |
| 379 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); | 387 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get(dot_key)); |
| 380 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); | 388 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get()); |
| 381 } | 389 } |
| 382 | 390 |
| 383 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { | 391 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { |
| 384 DictionaryValue outer_dict; | 392 DictionaryValue outer_dict; |
| 385 DictionaryValue* inner_dict = new DictionaryValue(); | 393 DictionaryValue* inner_dict = new DictionaryValue(); |
| 386 outer_dict.Set("foo", inner_dict); | 394 outer_dict.Set("foo", inner_dict); |
| 387 inner_dict->SetString("bar", "baz"); | 395 inner_dict->SetString("bar", "baz"); |
| 388 | 396 |
| 389 { | 397 { |
| 390 SettingChangeList changes; | 398 SettingChangeList changes; |
| 391 changes.push_back( | 399 changes.push_back( |
| 392 SettingChange("foo", NULL, inner_dict->DeepCopy())); | 400 SettingChange("foo", NULL, inner_dict->DeepCopy())); |
| 393 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(outer_dict)); | 401 EXPECT_PRED_FORMAT2(ChangesEq, |
| 402 changes, storage_->Set(DEFAULTS, outer_dict)); |
| 394 } | 403 } |
| 395 | 404 |
| 396 EXPECT_PRED_FORMAT2(SettingsEq, outer_dict, storage_->Get("foo")); | 405 EXPECT_PRED_FORMAT2(SettingsEq, outer_dict, storage_->Get("foo")); |
| 397 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get("foo.bar")); | 406 EXPECT_PRED_FORMAT2(SettingsEq, *empty_dict_, storage_->Get("foo.bar")); |
| 398 } | 407 } |
| 399 | 408 |
| 400 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { | 409 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { |
| 401 // Test: | 410 // Test: |
| 402 // - Setting over missing/changed/same keys, combinations. | 411 // - Setting over missing/changed/same keys, combinations. |
| 403 // - Removing over missing and present keys, combinations. | 412 // - Removing over missing and present keys, combinations. |
| 404 // - Clearing. | 413 // - Clearing. |
| 405 std::vector<std::string> complex_list; | 414 std::vector<std::string> complex_list; |
| 406 DictionaryValue complex_changed_dict; | 415 DictionaryValue complex_changed_dict; |
| 407 | 416 |
| 408 storage_->Set(key1_, *val1_); | 417 storage_->Set(DEFAULTS, key1_, *val1_); |
| 409 EXPECT_PRED_FORMAT2(ChangesEq, | 418 EXPECT_PRED_FORMAT2(ChangesEq, |
| 410 SettingChangeList(), storage_->Set(key1_, *val1_)); | 419 SettingChangeList(), storage_->Set(DEFAULTS, key1_, *val1_)); |
| 411 { | 420 { |
| 412 SettingChangeList changes; | 421 SettingChangeList changes; |
| 413 changes.push_back(SettingChange( | 422 changes.push_back(SettingChange( |
| 414 key1_, val1_->DeepCopy(), val2_->DeepCopy())); | 423 key1_, val1_->DeepCopy(), val2_->DeepCopy())); |
| 415 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(key1_, *val2_)); | 424 EXPECT_PRED_FORMAT2(ChangesEq, |
| 425 changes, storage_->Set(DEFAULTS, key1_, *val2_)); |
| 416 } | 426 } |
| 417 { | 427 { |
| 418 SettingChangeList changes; | 428 SettingChangeList changes; |
| 419 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); | 429 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); |
| 420 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(key1_)); | 430 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(DEFAULTS, key1_)); |
| 421 EXPECT_PRED_FORMAT2(ChangesEq, | 431 EXPECT_PRED_FORMAT2(ChangesEq, |
| 422 SettingChangeList(), storage_->Remove(key1_)); | 432 SettingChangeList(), storage_->Remove(DEFAULTS, key1_)); |
| 423 } | 433 } |
| 424 { | 434 { |
| 425 SettingChangeList changes; | 435 SettingChangeList changes; |
| 426 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); | 436 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); |
| 427 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(key1_, *val1_)); | 437 EXPECT_PRED_FORMAT2(ChangesEq, |
| 438 changes, storage_->Set(DEFAULTS, key1_, *val1_)); |
| 428 } | 439 } |
| 429 { | 440 { |
| 430 SettingChangeList changes; | 441 SettingChangeList changes; |
| 431 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); | 442 changes.push_back(SettingChange(key1_, val1_->DeepCopy(), NULL)); |
| 432 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); | 443 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear(DEFAULTS)); |
| 433 EXPECT_PRED_FORMAT2(ChangesEq, | 444 EXPECT_PRED_FORMAT2(ChangesEq, |
| 434 SettingChangeList(), storage_->Clear()); | 445 SettingChangeList(), storage_->Clear(DEFAULTS)); |
| 435 } | 446 } |
| 436 | 447 |
| 437 { | 448 { |
| 438 SettingChangeList changes; | 449 SettingChangeList changes; |
| 439 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); | 450 changes.push_back(SettingChange(key1_, NULL, val1_->DeepCopy())); |
| 440 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); | 451 changes.push_back(SettingChange(key2_, NULL, val2_->DeepCopy())); |
| 441 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict12_)); | 452 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict12_)); |
| 442 EXPECT_PRED_FORMAT2(ChangesEq, | 453 EXPECT_PRED_FORMAT2(ChangesEq, |
| 443 SettingChangeList(), storage_->Set(*dict12_)); | 454 SettingChangeList(), storage_->Set(DEFAULTS, *dict12_)); |
| 444 } | 455 } |
| 445 { | 456 { |
| 446 SettingChangeList changes; | 457 SettingChangeList changes; |
| 447 changes.push_back(SettingChange(key3_, NULL, val3_->DeepCopy())); | 458 changes.push_back(SettingChange(key3_, NULL, val3_->DeepCopy())); |
| 448 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(*dict123_)); | 459 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, *dict123_)); |
| 449 } | 460 } |
| 450 { | 461 { |
| 451 DictionaryValue to_set; | 462 DictionaryValue to_set; |
| 452 to_set.Set(key1_, val2_->DeepCopy()); | 463 to_set.Set(key1_, val2_->DeepCopy()); |
| 453 to_set.Set(key2_, val2_->DeepCopy()); | 464 to_set.Set(key2_, val2_->DeepCopy()); |
| 454 to_set.Set("asdf", val1_->DeepCopy()); | 465 to_set.Set("asdf", val1_->DeepCopy()); |
| 455 to_set.Set("qwerty", val3_->DeepCopy()); | 466 to_set.Set("qwerty", val3_->DeepCopy()); |
| 456 | 467 |
| 457 SettingChangeList changes; | 468 SettingChangeList changes; |
| 458 changes.push_back( | 469 changes.push_back( |
| 459 SettingChange(key1_, val1_->DeepCopy(), val2_->DeepCopy())); | 470 SettingChange(key1_, val1_->DeepCopy(), val2_->DeepCopy())); |
| 460 changes.push_back(SettingChange("asdf", NULL, val1_->DeepCopy())); | 471 changes.push_back(SettingChange("asdf", NULL, val1_->DeepCopy())); |
| 461 changes.push_back( | 472 changes.push_back( |
| 462 SettingChange("qwerty", NULL, val3_->DeepCopy())); | 473 SettingChange("qwerty", NULL, val3_->DeepCopy())); |
| 463 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(to_set)); | 474 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Set(DEFAULTS, to_set)); |
| 464 } | 475 } |
| 465 { | 476 { |
| 466 SettingChangeList changes; | 477 SettingChangeList changes; |
| 467 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); | 478 changes.push_back(SettingChange(key1_, val2_->DeepCopy(), NULL)); |
| 468 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); | 479 changes.push_back(SettingChange(key2_, val2_->DeepCopy(), NULL)); |
| 469 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(list12_)); | 480 EXPECT_PRED_FORMAT2(ChangesEq, |
| 481 changes, storage_->Remove(DEFAULTS, list12_)); |
| 470 } | 482 } |
| 471 { | 483 { |
| 472 std::vector<std::string> to_remove; | 484 std::vector<std::string> to_remove; |
| 473 to_remove.push_back(key1_); | 485 to_remove.push_back(key1_); |
| 474 to_remove.push_back("asdf"); | 486 to_remove.push_back("asdf"); |
| 475 | 487 |
| 476 SettingChangeList changes; | 488 SettingChangeList changes; |
| 477 changes.push_back(SettingChange("asdf", val1_->DeepCopy(), NULL)); | 489 changes.push_back(SettingChange("asdf", val1_->DeepCopy(), NULL)); |
| 478 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Remove(to_remove)); | 490 EXPECT_PRED_FORMAT2(ChangesEq, |
| 491 changes, storage_->Remove(DEFAULTS, to_remove)); |
| 479 } | 492 } |
| 480 { | 493 { |
| 481 SettingChangeList changes; | 494 SettingChangeList changes; |
| 482 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); | 495 changes.push_back(SettingChange(key3_, val3_->DeepCopy(), NULL)); |
| 483 changes.push_back( | 496 changes.push_back( |
| 484 SettingChange("qwerty", val3_->DeepCopy(), NULL)); | 497 SettingChange("qwerty", val3_->DeepCopy(), NULL)); |
| 485 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear()); | 498 EXPECT_PRED_FORMAT2(ChangesEq, changes, storage_->Clear(DEFAULTS)); |
| 486 EXPECT_PRED_FORMAT2(ChangesEq, | 499 EXPECT_PRED_FORMAT2(ChangesEq, |
| 487 SettingChangeList(), storage_->Clear()); | 500 SettingChangeList(), storage_->Clear(DEFAULTS)); |
| 488 } | 501 } |
| 489 } | 502 } |
| 490 | 503 |
| 491 } // namespace extensions | 504 } // namespace extensions |
| OLD | NEW |