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

Side by Side Diff: chrome/browser/sync/profile_sync_service_preference_unittest.cc

Issue 24930003: Migrate startup URLs pref. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698