| Index: chrome/browser/search_engines/template_url_service_sync_unittest.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service_sync_unittest.cc b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
|
| index 1b0332a879135cdf10f9a317e953002359eb4420..d307aa4d5596b5509ecf730a0d0272b39261557c 100644
|
| --- a/chrome/browser/search_engines/template_url_service_sync_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
|
| @@ -230,6 +230,7 @@ TemplateURLServiceSyncTest::TemplateURLServiceSyncTest()
|
| sync_processor_.get())) {}
|
|
|
| void TemplateURLServiceSyncTest::SetUp() {
|
| + TemplateURLService::DisableFallbackSearchEngines();
|
| test_util_a_.SetUp();
|
| // Use ChangeToLoadState() instead of VerifyLoad() so we don't actually pull
|
| // in the prepopulate data, which the sync tests don't care about (and would
|
| @@ -1444,288 +1445,6 @@ TEST_F(TemplateURLServiceSyncTest, MergeTwiceWithSameSyncData) {
|
| AssertEquals(*updated_turl, *reupdated_turl);
|
| }
|
|
|
| -TEST_F(TemplateURLServiceSyncTest, SyncedDefaultGUIDArrivesFirst) {
|
| - syncer::SyncDataList initial_data = CreateInitialSyncData();
|
| - // The default search provider should support replacement.
|
| - scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
|
| - "http://key2.com/{searchTerms}", "key2", 90));
|
| - initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID("key2"));
|
| -
|
| - EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - const TemplateURL* default_search = model()->GetDefaultSearchProvider();
|
| - ASSERT_TRUE(default_search);
|
| -
|
| - // Change kSyncedDefaultSearchProviderGUID to a GUID that does not exist in
|
| - // the model yet. Ensure that the default has not changed in any way.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID, "newdefault");
|
| -
|
| - ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
|
| -
|
| - // Bring in a random new search engine with a different GUID. Ensure that
|
| - // it doesn't change the default.
|
| - syncer::SyncChangeList changes1;
|
| - changes1.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
|
| - CreateTestTemplateURL(ASCIIToUTF16("random"), "http://random.com",
|
| - "random")));
|
| - model()->ProcessSyncChanges(FROM_HERE, changes1);
|
| -
|
| - EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
|
| -
|
| - // Finally, bring in the expected entry with the right GUID. Ensure that
|
| - // the default has changed to the new search engine.
|
| - syncer::SyncChangeList changes2;
|
| - changes2.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
|
| - CreateTestTemplateURL(ASCIIToUTF16("new"), "http://new.com/{searchTerms}",
|
| - "newdefault")));
|
| - model()->ProcessSyncChanges(FROM_HERE, changes2);
|
| -
|
| - EXPECT_EQ(5U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - ASSERT_NE(default_search, model()->GetDefaultSearchProvider());
|
| - ASSERT_EQ("newdefault", model()->GetDefaultSearchProvider()->sync_guid());
|
| -}
|
| -
|
| -TEST_F(TemplateURLServiceSyncTest, DefaultGuidDeletedBeforeNewDSPArrives) {
|
| - syncer::SyncDataList initial_data;
|
| - // The default search provider should support replacement.
|
| - scoped_ptr<TemplateURL> turl1(CreateTestTemplateURL(ASCIIToUTF16("key1"),
|
| - "http://key1.com/{searchTerms}", "key1", 90));
|
| - // Create a second default search provider for the
|
| - // FindNewDefaultSearchProvider method to find.
|
| - TemplateURLData data;
|
| - data.short_name = ASCIIToUTF16("unittest");
|
| - data.SetKeyword(ASCIIToUTF16("key2"));
|
| - data.SetURL("http://key2.com/{searchTerms}");
|
| - data.favicon_url = GURL("http://favicon.url");
|
| - data.safe_for_autoreplace = false;
|
| - data.date_created = Time::FromTimeT(100);
|
| - data.last_modified = Time::FromTimeT(100);
|
| - data.created_by_policy = false;
|
| - data.prepopulate_id = 999999;
|
| - data.sync_guid = "key2";
|
| - data.show_in_default_list = true;
|
| - scoped_ptr<TemplateURL> turl2(new TemplateURL(NULL, data));
|
| - initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
|
| - *turl1));
|
| - initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
|
| - *turl2));
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID("key1"));
|
| - ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
|
| -
|
| - EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - const TemplateURL* default_search = model()->GetDefaultSearchProvider();
|
| - ASSERT_TRUE(default_search);
|
| -
|
| - // Change kSyncedDefaultSearchProviderGUID to a GUID that does not exist in
|
| - // the model yet. Ensure that the default has not changed in any way.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID, "newdefault");
|
| -
|
| - ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
|
| - EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID));
|
| -
|
| - // Simulate a situation where an ACTION_DELETE on the default arrives before
|
| - // the new default search provider entry. This should fail to delete the
|
| - // target entry, and instead send up an "undelete" to the server, after
|
| - // further uniquifying the keyword to avoid infinite sync loops. The synced
|
| - // default GUID should not be changed so that when the expected default entry
|
| - // arrives, it can still be set as the default.
|
| - syncer::SyncChangeList changes1;
|
| - changes1.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_DELETE,
|
| - turl1.release()));
|
| - model()->ProcessSyncChanges(FROM_HERE, changes1);
|
| -
|
| - EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("key1_")));
|
| - EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - EXPECT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
|
| - EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID));
|
| - syncer::SyncChange undelete = processor()->change_for_guid("key1");
|
| - EXPECT_EQ(syncer::SyncChange::ACTION_ADD, undelete.change_type());
|
| - EXPECT_EQ("key1_",
|
| - undelete.sync_data().GetSpecifics().search_engine().keyword());
|
| -
|
| - // Finally, bring in the expected entry with the right GUID. Ensure that
|
| - // the default has changed to the new search engine.
|
| - syncer::SyncChangeList changes2;
|
| - changes2.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
|
| - CreateTestTemplateURL(ASCIIToUTF16("new"), "http://new.com/{searchTerms}",
|
| - "newdefault")));
|
| - model()->ProcessSyncChanges(FROM_HERE, changes2);
|
| -
|
| - EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - EXPECT_EQ("newdefault", model()->GetDefaultSearchProvider()->sync_guid());
|
| - EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID));
|
| -}
|
| -
|
| -TEST_F(TemplateURLServiceSyncTest, SyncedDefaultArrivesAfterStartup) {
|
| - // Start with the default set to something in the model before we start
|
| - // syncing.
|
| - model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
|
| - "http://thewhat.com/{searchTerms}",
|
| - "initdefault"));
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID("initdefault"));
|
| -
|
| - const TemplateURL* default_search = model()->GetDefaultSearchProvider();
|
| - ASSERT_TRUE(default_search);
|
| -
|
| - // Set kSyncedDefaultSearchProviderGUID to something that is not yet in
|
| - // the model but is expected in the initial sync. Ensure that this doesn't
|
| - // change our default since we're not quite syncing yet.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID, "key2");
|
| -
|
| - EXPECT_EQ(default_search, model()->GetDefaultSearchProvider());
|
| -
|
| - // Now sync the initial data, which will include the search engine entry
|
| - // destined to become the new default.
|
| - syncer::SyncDataList initial_data = CreateInitialSyncData();
|
| - // The default search provider should support replacement.
|
| - scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
|
| - "http://key2.com/{searchTerms}", "key2", 90));
|
| - initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
|
| -
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| -
|
| - // Ensure that the new default has been set.
|
| - EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - ASSERT_NE(default_search, model()->GetDefaultSearchProvider());
|
| - ASSERT_EQ("key2", model()->GetDefaultSearchProvider()->sync_guid());
|
| -}
|
| -
|
| -TEST_F(TemplateURLServiceSyncTest, SyncedDefaultAlreadySetOnStartup) {
|
| - // Start with the default set to something in the model before we start
|
| - // syncing.
|
| - const char kGUID[] = "initdefault";
|
| - model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
|
| - "http://thewhat.com/{searchTerms}",
|
| - kGUID));
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID(kGUID));
|
| -
|
| - const TemplateURL* default_search = model()->GetDefaultSearchProvider();
|
| - ASSERT_TRUE(default_search);
|
| -
|
| - // Set kSyncedDefaultSearchProviderGUID to the current default.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID, kGUID);
|
| -
|
| - EXPECT_EQ(default_search, model()->GetDefaultSearchProvider());
|
| -
|
| - // Now sync the initial data.
|
| - syncer::SyncDataList initial_data = CreateInitialSyncData();
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| -
|
| - // Ensure that the new entries were added and the default has not changed.
|
| - EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
|
| -}
|
| -
|
| -TEST_F(TemplateURLServiceSyncTest, NewDefaultIsAlreadySynced) {
|
| - // Ensure that if the synced DSP pref changed to another synced entry (as
|
| - // opposed to coming in as a new entry), it gets reset correctly.
|
| - // Start by setting kSyncedDefaultSearchProviderGUID to the entry that should
|
| - // end up as the default. Note that this must be done before the initial
|
| - // entries are added as otherwise this call will set the DSP immediately.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID, "key2");
|
| -
|
| - syncer::SyncDataList initial_data = CreateInitialSyncData();
|
| - // Ensure that our candidate default supports replacement.
|
| - scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
|
| - "http://key2.com/{searchTerms}", "key2", 90));
|
| - initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
|
| - for (syncer::SyncDataList::const_iterator iter = initial_data.begin();
|
| - iter != initial_data.end(); ++iter) {
|
| - TemplateURL* converted = Deserialize(*iter);
|
| - model()->Add(converted);
|
| - }
|
| -
|
| - // Set the initial default to something other than the desired default.
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID("key1"));
|
| -
|
| - // Merge in the same data (i.e. already synced entries).
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| -
|
| - EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - TemplateURL* current_default = model()->GetDefaultSearchProvider();
|
| - ASSERT_TRUE(current_default);
|
| - EXPECT_EQ("key2", current_default->sync_guid());
|
| - EXPECT_EQ(ASCIIToUTF16("key2"), current_default->keyword());
|
| -}
|
| -
|
| -TEST_F(TemplateURLServiceSyncTest, SyncWithManagedDefaultSearch) {
|
| - // First start off with a few entries and make sure we can set an unmanaged
|
| - // default search provider.
|
| - syncer::SyncDataList initial_data = CreateInitialSyncData();
|
| - model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
|
| - PassProcessor(), CreateAndPassSyncErrorFactory());
|
| - model()->SetUserSelectedDefaultSearchProvider(
|
| - model()->GetTemplateURLForGUID("key2"));
|
| -
|
| - EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| - ASSERT_FALSE(model()->is_default_search_managed());
|
| - ASSERT_TRUE(model()->GetDefaultSearchProvider());
|
| -
|
| - // Change the default search provider to a managed one.
|
| - const char kName[] = "manageddefault";
|
| - const char kSearchURL[] = "http://manageddefault.com/search?t={searchTerms}";
|
| - const char kIconURL[] = "http://manageddefault.com/icon.jpg";
|
| - const char kEncodings[] = "UTF-16;UTF-32";
|
| - const char kAlternateURL[] =
|
| - "http://manageddefault.com/search#t={searchTerms}";
|
| - const char kSearchTermsReplacementKey[] = "espv";
|
| - test_util_a_.SetManagedDefaultSearchPreferences(true, kName, kName,
|
| - kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL,
|
| - kSearchTermsReplacementKey);
|
| - const TemplateURL* dsp_turl = model()->GetDefaultSearchProvider();
|
| -
|
| - EXPECT_TRUE(model()->is_default_search_managed());
|
| -
|
| - // Add a new entry from Sync. It should still sync in despite the default
|
| - // being managed.
|
| - syncer::SyncChangeList changes;
|
| - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
|
| - CreateTestTemplateURL(ASCIIToUTF16("newkeyword"),
|
| - "http://new.com/{searchTerms}",
|
| - "newdefault")));
|
| - model()->ProcessSyncChanges(FROM_HERE, changes);
|
| -
|
| - EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
|
| -
|
| - // Change kSyncedDefaultSearchProviderGUID to point to the new entry and
|
| - // ensure that the DSP remains managed.
|
| - profile_a()->GetTestingPrefService()->SetString(
|
| - prefs::kSyncedDefaultSearchProviderGUID,
|
| - "newdefault");
|
| -
|
| - EXPECT_EQ(dsp_turl, model()->GetDefaultSearchProvider());
|
| - EXPECT_TRUE(model()->is_default_search_managed());
|
| -
|
| - // Go unmanaged. Ensure that the DSP changes to the expected pending entry
|
| - // from Sync.
|
| - const TemplateURL* expected_default =
|
| - model()->GetTemplateURLForGUID("newdefault");
|
| - test_util_a_.RemoveManagedDefaultSearchPreferences();
|
| -
|
| - EXPECT_EQ(expected_default, model()->GetDefaultSearchProvider());
|
| -}
|
| -
|
| TEST_F(TemplateURLServiceSyncTest, SyncMergeDeletesDefault) {
|
| // If the value from Sync is a duplicate of the local default and is newer, it
|
| // should safely replace the local value and set as the new default.
|
| @@ -1881,9 +1600,9 @@ TEST_F(TemplateURLServiceSyncTest, PreSyncUpdates) {
|
| // updated time.
|
| TemplateURL* added_turl = model()->GetTemplateURLForKeyword(
|
| ASCIIToUTF16(kNewKeyword));
|
| + ASSERT_TRUE(added_turl);
|
| base::Time new_timestamp = added_turl->last_modified();
|
| EXPECT_GE(new_timestamp, pre_merge_time);
|
| - ASSERT_TRUE(added_turl);
|
| std::string sync_guid = added_turl->sync_guid();
|
|
|
| // Bring down a copy of the prepopulate engine from Sync with the old values,
|
| @@ -2249,3 +1968,25 @@ TEST_F(TemplateURLServiceSyncTest, MergeNonEditedPrepopulatedEngine) {
|
| EXPECT_EQ(default_turl->short_name, result_turl->short_name());
|
| EXPECT_EQ(default_turl->url(), result_turl->url());
|
| }
|
| +
|
| +TEST_F(TemplateURLServiceSyncTest, GUIDUpdatedOnDefaultSearchChange) {
|
| + const char kGUID[] = "initdefault";
|
| + model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
|
| + "http://thewhat.com/{searchTerms}",
|
| + kGUID));
|
| + model()->SetUserSelectedDefaultSearchProvider(
|
| + model()->GetTemplateURLForGUID(kGUID));
|
| +
|
| + const TemplateURL* default_search = model()->GetDefaultSearchProvider();
|
| + ASSERT_TRUE(default_search);
|
| +
|
| + const char kNewGUID[] = "newdefault";
|
| + model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
|
| + "http://thewhat.com/{searchTerms}",
|
| + kNewGUID));
|
| + model()->SetUserSelectedDefaultSearchProvider(
|
| + model()->GetTemplateURLForGUID(kNewGUID));
|
| +
|
| + EXPECT_EQ(kNewGUID, profile_a()->GetTestingPrefService()->GetString(
|
| + prefs::kSyncedDefaultSearchProviderGUID));
|
| +}
|
|
|