| 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..30a4c7262c40ef701c188ee5ab96d61078be4197 100644
|
| --- a/chrome/browser/search_engines/template_url_service_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| @@ -28,6 +28,7 @@
|
| #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_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"
|
| @@ -1481,6 +1482,100 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) {
|
| EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2")));
|
| }
|
|
|
| +// Check that default extension engine and user engines with same keywords are
|
| +// handled corrected.
|
| +TEST_F(TemplateURLServiceTest, DefaultExtensionAndUserEnginesWithSameKeywords) {
|
| + test_util()->VerifyLoad();
|
| + // TemplateURLData used for all engines.
|
| + auto turl_data = GenerateDummyTemplateURLData("extension");
|
| + turl_data->safe_for_autoreplace = false;
|
| +
|
| + // Add non replaceable user engine.
|
| + const TemplateURL* user1 =
|
| + model()->Add(base::MakeUnique<TemplateURL>(*turl_data));
|
| +
|
| + // Add default extension engine with same keyword.
|
| + auto ext_dse = base::MakeUnique<TemplateURL>(
|
| + *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| + auto extension_info =
|
| + base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id");
|
| + extension_info->wants_to_be_default_engine = true;
|
| +
|
| + const TemplateURL* extension = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| +
|
| + // Add another non replaceable user engine with same keyword as extension.
|
| + const TemplateURL* user2 =
|
| + model()->Add(base::MakeUnique<TemplateURL>(*turl_data));
|
| +
|
| + // Wait for any saves to finish.
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Check extension DSE is set as default and its keyword is not changed.
|
| + auto current_dse = model()->GetDefaultSearchProvider();
|
| + EXPECT_EQ(extension, current_dse);
|
| + ExpectSimilar(turl_data.get(), ¤t_dse->data());
|
| +
|
| + // Expect that both user engine keywords are changed because of conflict
|
| + // with extension engine keyword.
|
| + EXPECT_NE(turl_data->keyword(), user1->keyword());
|
| + EXPECT_NE(turl_data->keyword(), user2->keyword());
|
| + // Check that user engine keywords are different.
|
| + EXPECT_NE(user1->keyword(), user2->keyword());
|
| +}
|
| +
|
| +// Check that two extensions with same engine are handled corrected.
|
| +TEST_F(TemplateURLServiceTest, ExtensionsWithSameKeywords) {
|
| + test_util()->VerifyLoad();
|
| +
|
| + // TemplateURLData used for all extensions.
|
| + auto turl_data = GenerateDummyTemplateURLData("extension");
|
| + turl_data->safe_for_autoreplace = false;
|
| +
|
| + // Add non default extension engine.
|
| + auto ext_dse = base::MakeUnique<TemplateURL>(
|
| + *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| + auto extension_info =
|
| + base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id1");
|
| + extension_info->wants_to_be_default_engine = false;
|
| +
|
| + const TemplateURL* extension1 = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| +
|
| + // Add default extension engine.
|
| + ext_dse = base::MakeUnique<TemplateURL>(
|
| + *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| + extension_info =
|
| + base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id2");
|
| + extension_info->wants_to_be_default_engine = true;
|
| +
|
| + const TemplateURL* extension2 = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| +
|
| + // Add another non default extension with same keyword. This action must not
|
| + // change default extension keyword due to conflict.
|
| + ext_dse = base::MakeUnique<TemplateURL>(
|
| + *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| + extension_info =
|
| + base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id3");
|
| + extension_info->wants_to_be_default_engine = false;
|
| +
|
| + const TemplateURL* extension3 = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| + // Wait for any saves to finish.
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Check that extension2 is set as default. Its keyword must not be changed.
|
| + auto current_dse = model()->GetDefaultSearchProvider();
|
| + EXPECT_EQ(extension2, current_dse);
|
| + ExpectSimilar(turl_data.get(), ¤t_dse->data());
|
| +
|
| + // Check that non default extensions keywords are updated.
|
| + EXPECT_NE(extension1->keyword(), turl_data->keyword());
|
| + EXPECT_NE(extension3->keyword(), turl_data->keyword());
|
| + EXPECT_NE(extension1->keyword(), extension3->keyword());
|
| +}
|
| +
|
| TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) {
|
| // Set a managed preference that establishes a default search provider.
|
| std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine();
|
|
|