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

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

Issue 2659353002: Fix TemplateUrl::MatchesData comparison of search_terms_replacement_key (reland) (Closed)
Patch Set: Fixed deps Created 3 years, 10 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
« no previous file with comments | « no previous file | components/google/core/browser/google_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..07abd01787e417ddfe0c61ae831ce0db68cf4db4 100644
--- a/chrome/browser/search_engines/template_url_service_unittest.cc
+++ b/chrome/browser/search_engines/template_url_service_unittest.cc
@@ -28,10 +28,13 @@
#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_engines_test_util.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 +189,9 @@ class TemplateURLServiceTest : public testing::Test {
bool safe_for_autoreplace,
int prepopulate_id);
+ // Set custom search engine as default fallback 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 +298,29 @@ std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL(
return base::MakeUnique<TemplateURL>(data);
}
+void TemplateURLServiceTest::SetOverriddenEngines() {
+ // Set custom search engine as default fallback through overrides.
+ 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 overrides_list = base::MakeUnique<base::ListValue>();
+ overrides_list->Append(std::move(entry));
+
+ auto prefs = test_util()->profile()->GetTestingPrefService();
+ prefs->SetUserPref(prefs::kSearchProviderOverridesVersion,
+ new base::FundamentalValue(1));
+ 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 +922,154 @@ TEST_F(TemplateURLServiceTest, RepairSearchEnginesWithManagedDefault) {
ExpectSimilar(expected_managed_default.get(), actual_managed_default);
}
+// 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());
+
+ TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
+ ASSERT_TRUE(initial_dse);
+
+ // 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 is different from initial.
+ EXPECT_NE(initial_dse, user_dse);
+
+ // 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 initial search engine is returned as default after repair.
+ ASSERT_EQ(initial_dse, model()->GetDefaultSearchProvider());
+ // Check that initial_dse guid is stored in kSyncedDefaultSearchProviderGUID.
+ const std::string dse_guid =
+ test_util()->profile()->GetTestingPrefService()->GetString(
+ prefs::kSyncedDefaultSearchProviderGUID);
+ EXPECT_EQ(initial_dse->sync_guid(), dse_guid);
+ EXPECT_EQ(initial_dse->keyword(),
+ model()->GetTemplateURLForGUID(dse_guid)->keyword());
+}
+
+// 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());
+}
+
+// Checks that RepairPrepopulatedEngines correctly updates sync guid for default
+// search when search engines is overridden by extension.
+TEST_F(TemplateURLServiceTest,
+ RepairPrepopulatedEnginesWithExtensionUpdatesSyncGuid) {
+ 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());
+
+ // Get initial DSE to check its guid later.
+ TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
+ ASSERT_TRUE(initial_dse);
+
+ // Add user provided default search engine.
+ TemplateURL* user_dse = model()->Add(
+ base::MakeUnique<TemplateURL>(*GenerateDummyTemplateURLData("user_dse")));
+ 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));
+
+ // Add extension controlled default search engine.
+ std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
+ new TemplateURL::AssociatedExtensionInfo("extension"));
+ extension_info->wants_to_be_default_engine = true;
+ TemplateURL* extension_dse = model()->AddExtensionControlledTURL(
+ base::MakeUnique<TemplateURL>(
+ *GenerateDummyTemplateURLData("extension_dse"),
+ TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION),
+ std::move(extension_info));
+ EXPECT_EQ(extension_dse, model()->GetDefaultSearchProvider());
+ // Check that user DSE guid is still stored in
+ // kSyncedDefaultSearchProviderGUID.
+ EXPECT_EQ(user_dse->sync_guid(),
+ test_util()->profile()->GetTestingPrefService()->GetString(
+ prefs::kSyncedDefaultSearchProviderGUID));
+
+ model()->RepairPrepopulatedSearchEngines();
+ // Check that extension engine is still default but sync guid is updated to
+ // initial dse guid.
+ EXPECT_EQ(extension_dse, model()->GetDefaultSearchProvider());
+ EXPECT_EQ(initial_dse->sync_guid(),
+ test_util()->profile()->GetTestingPrefService()->GetString(
+ prefs::kSyncedDefaultSearchProviderGUID));
+}
+
TEST_F(TemplateURLServiceTest, UpdateKeywordSearchTermsForURL) {
struct TestData {
const std::string url;
« no previous file with comments | « no previous file | components/google/core/browser/google_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698