OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <map> | 5 #include <map> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
11 #include "base/json/json_reader.h" | 11 #include "base/json/json_reader.h" |
12 #include "base/json/json_string_value_serializer.h" | 12 #include "base/json/json_string_value_serializer.h" |
| 13 #include "base/json/json_writer.h" |
13 #include "base/location.h" | 14 #include "base/location.h" |
14 #include "base/stl_util.h" | 15 #include "base/stl_util.h" |
15 #include "base/strings/string_piece.h" | 16 #include "base/strings/string_piece.h" |
16 #include "chrome/browser/invalidation/invalidation_service_factory.h" | 17 #include "chrome/browser/invalidation/invalidation_service_factory.h" |
17 #include "chrome/browser/prefs/pref_model_associator.h" | 18 #include "chrome/browser/prefs/pref_model_associator.h" |
18 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 19 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
19 #include "chrome/browser/signin/signin_manager.h" | 20 #include "chrome/browser/signin/signin_manager.h" |
20 #include "chrome/browser/signin/signin_manager_factory.h" | 21 #include "chrome/browser/signin/signin_manager_factory.h" |
21 #include "chrome/browser/signin/token_service_factory.h" | 22 #include "chrome/browser/signin/token_service_factory.h" |
22 #include "chrome/browser/sync/abstract_profile_sync_service_test.h" | 23 #include "chrome/browser/sync/abstract_profile_sync_service_test.h" |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 | 396 |
396 value.reset(GetSyncedValue(prefs::kDefaultCharset)); | 397 value.reset(GetSyncedValue(prefs::kDefaultCharset)); |
397 ASSERT_TRUE(value.get()); | 398 ASSERT_TRUE(value.get()); |
398 EXPECT_TRUE(value->GetAsString(&string_value)); | 399 EXPECT_TRUE(value->GetAsString(&string_value)); |
399 EXPECT_EQ(non_default_charset_value_, string_value); | 400 EXPECT_EQ(non_default_charset_value_, string_value); |
400 EXPECT_EQ(non_default_charset_value_, | 401 EXPECT_EQ(non_default_charset_value_, |
401 prefs_->GetString(prefs::kDefaultCharset)); | 402 prefs_->GetString(prefs::kDefaultCharset)); |
402 STLDeleteValues(&cloud_data); | 403 STLDeleteValues(&cloud_data); |
403 } | 404 } |
404 | 405 |
| 406 TEST_F(ProfileSyncServicePreferenceTest, |
| 407 ModelAssociationCloudHasOldMigratedData) { |
| 408 ASSERT_TRUE(PrefModelAssociator::IsMigratedPreference( |
| 409 prefs::kURLsToRestoreOnStartup)); |
| 410 ASSERT_TRUE(PrefModelAssociator::IsOldMigratedPreference( |
| 411 prefs::kURLsToRestoreOnStartupOld)); |
| 412 prefs_->SetString(prefs::kHomePage, example_url0_); |
| 413 { |
| 414 ListPrefUpdate update(prefs_, prefs::kURLsToRestoreOnStartup); |
| 415 ListValue* url_list = update.Get(); |
| 416 url_list->Append(Value::CreateStringValue(example_url0_)); |
| 417 url_list->Append(Value::CreateStringValue(example_url1_)); |
| 418 } |
| 419 |
| 420 PreferenceValues cloud_data; |
| 421 cloud_data[prefs::kHomePage] = Value::CreateStringValue(example_url1_); |
| 422 ListValue* urls_to_restore = new ListValue; |
| 423 urls_to_restore->Append(Value::CreateStringValue(example_url1_)); |
| 424 urls_to_restore->Append(Value::CreateStringValue(example_url2_)); |
| 425 cloud_data[prefs::kURLsToRestoreOnStartupOld] = urls_to_restore; |
| 426 |
| 427 AddPreferenceEntriesHelper helper(this, cloud_data); |
| 428 ASSERT_TRUE(StartSyncService(helper.callback(), false)); |
| 429 ASSERT_TRUE(helper.success()); |
| 430 |
| 431 scoped_ptr<const Value> value(GetSyncedValue(prefs::kHomePage)); |
| 432 ASSERT_TRUE(value.get()); |
| 433 std::string string_value; |
| 434 EXPECT_TRUE(value->GetAsString(&string_value)); |
| 435 EXPECT_EQ(example_url1_, string_value); |
| 436 EXPECT_EQ(example_url1_, prefs_->GetString(prefs::kHomePage)); |
| 437 |
| 438 // Expect that the new preference data contains the merged old prefs values. |
| 439 scoped_ptr<ListValue> expected_urls(new ListValue); |
| 440 expected_urls->Append(Value::CreateStringValue(example_url1_)); |
| 441 expected_urls->Append(Value::CreateStringValue(example_url2_)); |
| 442 expected_urls->Append(Value::CreateStringValue(example_url0_)); |
| 443 |
| 444 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartup)); |
| 445 ASSERT_TRUE(value.get()); |
| 446 EXPECT_TRUE(value->Equals(expected_urls.get())); |
| 447 EXPECT_TRUE(GetPreferenceValue(prefs::kURLsToRestoreOnStartup). |
| 448 Equals(expected_urls.get())); |
| 449 |
| 450 // The old preference name should also contain the merged sync data. |
| 451 expected_urls.reset(new ListValue); |
| 452 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartupOld)); |
| 453 ASSERT_TRUE(value.get()); |
| 454 EXPECT_TRUE(GetPreferenceValue(prefs::kURLsToRestoreOnStartupOld). |
| 455 Equals(expected_urls.get())); |
| 456 } |
| 457 |
| 458 TEST_F(ProfileSyncServicePreferenceTest, |
| 459 ModelAssociationCloudHasNewMigratedData) { |
| 460 ASSERT_TRUE(PrefModelAssociator::IsMigratedPreference( |
| 461 prefs::kURLsToRestoreOnStartup)); |
| 462 ASSERT_TRUE(PrefModelAssociator::IsOldMigratedPreference( |
| 463 prefs::kURLsToRestoreOnStartupOld)); |
| 464 prefs_->SetString(prefs::kHomePage, example_url0_); |
| 465 { |
| 466 ListPrefUpdate update(prefs_, prefs::kURLsToRestoreOnStartupOld); |
| 467 ListValue* url_list = update.Get(); |
| 468 url_list->Append(Value::CreateStringValue(example_url0_)); |
| 469 url_list->Append(Value::CreateStringValue(example_url1_)); |
| 470 } |
| 471 |
| 472 PreferenceValues cloud_data; |
| 473 cloud_data[prefs::kHomePage] = Value::CreateStringValue(example_url1_); |
| 474 ListValue* urls_to_restore = new ListValue; |
| 475 urls_to_restore->Append(Value::CreateStringValue(example_url1_)); |
| 476 urls_to_restore->Append(Value::CreateStringValue(example_url2_)); |
| 477 cloud_data[prefs::kURLsToRestoreOnStartup] = urls_to_restore; |
| 478 |
| 479 AddPreferenceEntriesHelper helper(this, cloud_data); |
| 480 ASSERT_TRUE(StartSyncService(helper.callback(), false)); |
| 481 ASSERT_TRUE(helper.success()); |
| 482 |
| 483 scoped_ptr<const Value> value(GetSyncedValue(prefs::kHomePage)); |
| 484 ASSERT_TRUE(value.get()); |
| 485 std::string string_value; |
| 486 EXPECT_TRUE(value->GetAsString(&string_value)); |
| 487 EXPECT_EQ(example_url1_, string_value); |
| 488 EXPECT_EQ(example_url1_, prefs_->GetString(prefs::kHomePage)); |
| 489 |
| 490 // Expect that the cloud data under the new migrated preference name sticks. |
| 491 scoped_ptr<ListValue> expected_urls(new ListValue); |
| 492 expected_urls->Append(Value::CreateStringValue(example_url1_)); |
| 493 expected_urls->Append(Value::CreateStringValue(example_url2_)); |
| 494 |
| 495 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartup)); |
| 496 ASSERT_TRUE(value.get()); |
| 497 EXPECT_TRUE(value->Equals(expected_urls.get())); |
| 498 EXPECT_TRUE(GetPreferenceValue(prefs::kURLsToRestoreOnStartup). |
| 499 Equals(expected_urls.get())); |
| 500 |
| 501 // The old preference data should still be here, though not synced. |
| 502 expected_urls.reset(new ListValue); |
| 503 expected_urls->Append(Value::CreateStringValue(example_url0_)); |
| 504 expected_urls->Append(Value::CreateStringValue(example_url1_)); |
| 505 |
| 506 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartupOld)); |
| 507 ASSERT_FALSE(value.get()); |
| 508 EXPECT_TRUE(GetPreferenceValue(prefs::kURLsToRestoreOnStartupOld). |
| 509 Equals(expected_urls.get())); |
| 510 } |
| 511 |
| 512 TEST_F(ProfileSyncServicePreferenceTest, |
| 513 ModelAssociationCloudAddsOldAndNewMigratedData) { |
| 514 ASSERT_TRUE(PrefModelAssociator::IsMigratedPreference( |
| 515 prefs::kURLsToRestoreOnStartup)); |
| 516 ASSERT_TRUE(PrefModelAssociator::IsOldMigratedPreference( |
| 517 prefs::kURLsToRestoreOnStartupOld)); |
| 518 prefs_->SetString(prefs::kHomePage, example_url0_); |
| 519 { |
| 520 ListPrefUpdate update_old(prefs_, prefs::kURLsToRestoreOnStartupOld); |
| 521 ListValue* url_list_old = update_old.Get(); |
| 522 url_list_old->Append(Value::CreateStringValue(example_url0_)); |
| 523 url_list_old->Append(Value::CreateStringValue(example_url1_)); |
| 524 ListPrefUpdate update(prefs_, prefs::kURLsToRestoreOnStartup); |
| 525 ListValue* url_list = update.Get(); |
| 526 url_list->Append(Value::CreateStringValue(example_url1_)); |
| 527 url_list->Append(Value::CreateStringValue(example_url2_)); |
| 528 } |
| 529 |
| 530 PreferenceValues cloud_data; |
| 531 cloud_data[prefs::kHomePage] = Value::CreateStringValue(example_url1_); |
| 532 |
| 533 AddPreferenceEntriesHelper helper(this, cloud_data); |
| 534 ASSERT_TRUE(StartSyncService(helper.callback(), false)); |
| 535 ASSERT_TRUE(helper.success()); |
| 536 |
| 537 scoped_ptr<const Value> value(GetSyncedValue(prefs::kHomePage)); |
| 538 ASSERT_TRUE(value.get()); |
| 539 std::string string_value; |
| 540 EXPECT_TRUE(value->GetAsString(&string_value)); |
| 541 EXPECT_EQ(example_url1_, string_value); |
| 542 EXPECT_EQ(example_url1_, prefs_->GetString(prefs::kHomePage)); |
| 543 |
| 544 // Expect that the cloud data under the new migrated preference name sticks. |
| 545 scoped_ptr<ListValue> expected_urls(new ListValue); |
| 546 expected_urls->Append(Value::CreateStringValue(example_url1_)); |
| 547 expected_urls->Append(Value::CreateStringValue(example_url2_)); |
| 548 |
| 549 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartup)); |
| 550 ASSERT_TRUE(value.get()); |
| 551 EXPECT_TRUE(value->Equals(expected_urls.get())); |
| 552 EXPECT_TRUE(GetPreferenceValue(prefs::kURLsToRestoreOnStartup). |
| 553 Equals(expected_urls.get())); |
| 554 |
| 555 // Should not have synced in the old startup url values. |
| 556 value.reset(GetSyncedValue(prefs::kURLsToRestoreOnStartupOld)); |
| 557 ASSERT_FALSE(value.get()); |
| 558 EXPECT_FALSE(GetPreferenceValue(prefs::kURLsToRestoreOnStartupOld). |
| 559 Equals(expected_urls.get())); |
| 560 } |
| 561 |
405 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) { | 562 TEST_F(ProfileSyncServicePreferenceTest, FailModelAssociation) { |
406 ASSERT_TRUE(StartSyncService(base::Closure(), true)); | 563 ASSERT_TRUE(StartSyncService(base::Closure(), true)); |
407 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); | 564 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); |
408 } | 565 } |
409 | 566 |
410 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) { | 567 TEST_F(ProfileSyncServicePreferenceTest, UpdatedPreferenceWithDefaultValue) { |
411 const PrefService::Preference* pref = | 568 const PrefService::Preference* pref = |
412 prefs_->FindPreference(prefs::kHomePage); | 569 prefs_->FindPreference(prefs::kHomePage); |
413 EXPECT_TRUE(pref->IsDefaultValue()); | 570 EXPECT_TRUE(pref->IsDefaultValue()); |
414 | 571 |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 EXPECT_FALSE(pref->IsDefaultValue()); | 841 EXPECT_FALSE(pref->IsDefaultValue()); |
685 // There should be no synced value. | 842 // There should be no synced value. |
686 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 843 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
687 // Switch kHomePage back to unmanaged. | 844 // Switch kHomePage back to unmanaged. |
688 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); | 845 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); |
689 // The original value should be picked up. | 846 // The original value should be picked up. |
690 EXPECT_TRUE(pref->IsDefaultValue()); | 847 EXPECT_TRUE(pref->IsDefaultValue()); |
691 // There should still be no synced value. | 848 // There should still be no synced value. |
692 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); | 849 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); |
693 } | 850 } |
OLD | NEW |