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

Unified Diff: chrome/browser/search_engines/template_url_service_sync_unittest.cc

Issue 268643002: Use the DefaultSearchManager as the exclusive authority on DSE, ignoring Web Data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: D'oh. Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
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));
+}

Powered by Google App Engine
This is Rietveld 408576698