| Index: chrome/browser/search_engines/template_url_service_unittest.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service_unittest.cc b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| index ddc06380b068dc5a15b115a81b7277584f0d54a4..0e4919d93a87dacb50b11211921a85fac41d2fb8 100644
|
| --- a/chrome/browser/search_engines/template_url_service_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| @@ -28,10 +28,12 @@
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "components/history/core/browser/history_service.h"
|
| #include "components/search_engines/keyword_web_data_service.h"
|
| +#include "components/search_engines/search_engines_pref_names.h"
|
| #include "components/search_engines/search_host_to_urls_map.h"
|
| #include "components/search_engines/search_terms_data.h"
|
| #include "components/search_engines/template_url.h"
|
| #include "components/search_engines/template_url_prepopulate_data.h"
|
| +#include "components/sync_preferences/testing_pref_service_syncable.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -186,6 +188,9 @@ class TemplateURLServiceTest : public testing::Test {
|
| bool safe_for_autoreplace,
|
| int prepopulate_id);
|
|
|
| + // Set custom search engine as default through overrides pref.
|
| + void SetOverriddenEngines();
|
| +
|
| // Helper methods to make calling TemplateURLServiceTestUtil methods less
|
| // visually noisy in the test code.
|
| void VerifyObserverCount(int expected_changed_count);
|
| @@ -292,6 +297,32 @@ std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL(
|
| return base::MakeUnique<TemplateURL>(data);
|
| }
|
|
|
| +void TemplateURLServiceTest::SetOverriddenEngines() {
|
| + // Set custom search engine as default through overrides.
|
| + auto prefs = test_util()->profile()->GetTestingPrefService();
|
| + prefs->SetUserPref(prefs::kSearchProviderOverridesVersion,
|
| + new base::FundamentalValue(1));
|
| + auto overrides_list = base::MakeUnique<base::ListValue>();
|
| + auto entry = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + entry->SetString("name", "override_name");
|
| + entry->SetString("keyword", "override_keyword");
|
| + entry->SetString("search_url", "http://override.com/s?q={searchTerms}");
|
| + entry->SetString("favicon_url", "http://override.com/favicon.ico");
|
| + entry->SetString("encoding", "UTF-8");
|
| + entry->SetInteger("id", 1001);
|
| + entry->SetString("suggest_url",
|
| + "http://override.com/suggest?q={searchTerms}");
|
| + entry->SetString("instant_url",
|
| + "http://override.com/instant?q={searchTerms}");
|
| + auto alternate_urls = base::MakeUnique<base::ListValue>();
|
| + alternate_urls->AppendString("http://override.com/alternate?q={searchTerms}");
|
| + entry->Set("alternate_urls", std::move(alternate_urls));
|
| + overrides_list->Append(std::move(entry));
|
| +
|
| + prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides_list.release());
|
| +}
|
| +
|
| void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
|
| EXPECT_EQ(expected_changed_count, test_util_->GetObserverCount());
|
| test_util_->ResetObserverCount();
|
| @@ -893,6 +924,100 @@ TEST_F(TemplateURLServiceTest, RepairSearchEnginesWithManagedDefault) {
|
| ExpectSimilar(expected_managed_default.get(), actual_managed_default);
|
| }
|
|
|
| +// Test checks that RepairPrepopulatedEngines correctly updates sync guid for
|
| +// default search. Repair is considered a user action and new DSE must
|
| +// be synced to other devices as well. Otherwise previous user selected engine
|
| +// will arrive on next sync attempt.
|
| +TEST_F(TemplateURLServiceTest, RepairPrepopulatedEnginesUpdatesSyncGuid) {
|
| + test_util()->VerifyLoad();
|
| +
|
| + // The synced DSE GUID should be empty until the user selects something or
|
| + // there is sync activity.
|
| + EXPECT_TRUE(test_util()
|
| + ->profile()
|
| + ->GetTestingPrefService()
|
| + ->GetString(prefs::kSyncedDefaultSearchProviderGUID)
|
| + .empty());
|
| +
|
| + // Google engine must exist.
|
| + TemplateURL* google =
|
| + model()->GetTemplateURLForKeyword(ASCIIToUTF16("google.com"));
|
| + ASSERT_TRUE(google);
|
| +
|
| + // Add user provided default search engine.
|
| + TemplateURL* user_dse = AddKeywordWithDate(
|
| + "user_dse", "user_dse.com", "http://www.user_dse.com/s?q={searchTerms}",
|
| + std::string(), std::string(), std::string(), true, "UTF-8", Time(),
|
| + Time(), Time());
|
| + model()->SetUserSelectedDefaultSearchProvider(user_dse);
|
| + EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
|
| +
|
| + // Check that user DSE guid is stored in kSyncedDefaultSearchProviderGUID.
|
| + EXPECT_EQ(user_dse->sync_guid(),
|
| + test_util()->profile()->GetTestingPrefService()->GetString(
|
| + prefs::kSyncedDefaultSearchProviderGUID));
|
| +
|
| + model()->RepairPrepopulatedSearchEngines();
|
| +
|
| + // Check that Google is default after repair.
|
| + ASSERT_EQ(google, model()->GetDefaultSearchProvider());
|
| + // Check that google guid is stored in kSyncedDefaultSearchProviderGUID.
|
| + const std::string dse_guid =
|
| + test_util()->profile()->GetTestingPrefService()->GetString(
|
| + prefs::kSyncedDefaultSearchProviderGUID);
|
| + EXPECT_EQ(google->sync_guid(), dse_guid);
|
| + EXPECT_EQ(google->keyword(),
|
| + model()->GetTemplateURLForGUID(dse_guid)->keyword());
|
| +}
|
| +
|
| +// Test checks that RepairPrepopulatedEngines correctly updates sync guid for
|
| +// default search when search engines are overridden using pref.
|
| +TEST_F(TemplateURLServiceTest,
|
| + RepairPrepopulatedEnginesWithOverridesUpdatesSyncGuid) {
|
| + SetOverriddenEngines();
|
| + test_util()->VerifyLoad();
|
| +
|
| + // The synced DSE GUID should be empty until the user selects something or
|
| + // there is sync activity.
|
| + EXPECT_TRUE(test_util()
|
| + ->profile()
|
| + ->GetTestingPrefService()
|
| + ->GetString(prefs::kSyncedDefaultSearchProviderGUID)
|
| + .empty());
|
| +
|
| + TemplateURL* overridden_engine =
|
| + model()->GetTemplateURLForKeyword(ASCIIToUTF16("override_keyword"));
|
| + ASSERT_TRUE(overridden_engine);
|
| +
|
| + EXPECT_EQ(overridden_engine, model()->GetDefaultSearchProvider());
|
| +
|
| + // Add user provided default search engine.
|
| + TemplateURL* user_dse = AddKeywordWithDate(
|
| + "user_dse", "user_dse.com", "http://www.user_dse.com/s?q={searchTerms}",
|
| + std::string(), std::string(), std::string(), true, "UTF-8", Time(),
|
| + Time(), Time());
|
| + model()->SetUserSelectedDefaultSearchProvider(user_dse);
|
| + EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
|
| +
|
| + // Check that user DSE guid is stored in kSyncedDefaultSearchProviderGUID.
|
| + EXPECT_EQ(user_dse->sync_guid(),
|
| + test_util()->profile()->GetTestingPrefService()->GetString(
|
| + prefs::kSyncedDefaultSearchProviderGUID));
|
| +
|
| + model()->RepairPrepopulatedSearchEngines();
|
| +
|
| + // Check that overridden engine is returned as default after repair.
|
| + ASSERT_EQ(overridden_engine, model()->GetDefaultSearchProvider());
|
| + // Check that overridden_engine guid is stored in
|
| + // kSyncedDefaultSearchProviderGUID.
|
| + const std::string dse_guid =
|
| + test_util()->profile()->GetTestingPrefService()->GetString(
|
| + prefs::kSyncedDefaultSearchProviderGUID);
|
| + EXPECT_EQ(overridden_engine->sync_guid(), dse_guid);
|
| + EXPECT_EQ(overridden_engine->keyword(),
|
| + model()->GetTemplateURLForGUID(dse_guid)->keyword());
|
| +}
|
| +
|
| TEST_F(TemplateURLServiceTest, UpdateKeywordSearchTermsForURL) {
|
| struct TestData {
|
| const std::string url;
|
|
|