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 5d1c2ea3d2fdce13696b5f3f92e6124e6734e02b..80b702a45e297fc98975d37ef70a224664a24c30 100644 |
--- a/chrome/browser/search_engines/template_url_service_unittest.cc |
+++ b/chrome/browser/search_engines/template_url_service_unittest.cc |
@@ -127,7 +127,6 @@ void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual) { |
ASSERT_TRUE(expected != NULL); |
ASSERT_TRUE(actual != NULL); |
EXPECT_EQ(expected->short_name(), actual->short_name()); |
- EXPECT_EQ(expected->keyword(), actual->keyword()); |
EXPECT_EQ(expected->url(), actual->url()); |
vasilii
2017/02/27 15:20:35
Why is the keyword check gone?
Alexander Yashkin
2017/02/27 19:36:03
My fault, did not restored previous version comple
|
EXPECT_EQ(expected->suggestions_url(), actual->suggestions_url()); |
EXPECT_EQ(expected->favicon_url(), actual->favicon_url()); |
@@ -275,8 +274,8 @@ TemplateURL* TemplateURLServiceTest::AddExtensionSearchEngine( |
extension_info->wants_to_be_default_engine = wants_to_be_default_engine; |
extension_info->install_time = install_time; |
- return model()->AddExtensionControlledTURL(std::move(ext_dse), |
- std::move(extension_info)); |
+ return test_util()->AddExtensionControlledTURL(std::move(ext_dse), |
+ std::move(extension_info)); |
} |
void TemplateURLServiceTest::AssertEquals(const TemplateURL& expected, |
@@ -1082,14 +1081,8 @@ TEST_F(TemplateURLServiceTest, |
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)); |
+ TemplateURL* extension_dse = |
+ AddExtensionSearchEngine("extension_dse", "extension_id", true, Time()); |
EXPECT_EQ(extension_dse, model()->GetDefaultSearchProvider()); |
// Check that user DSE guid is still stored in |
// kSyncedDefaultSearchProviderGUID. |
@@ -1647,16 +1640,15 @@ TEST_F(TemplateURLServiceTest, DefaultExtensionEngine) { |
std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
new TemplateURL::AssociatedExtensionInfo("ext")); |
extension_info->wants_to_be_default_engine = true; |
- TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
+ TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
std::move(ext_dse), std::move(extension_info)); |
EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
- model()->RemoveExtensionControlledTURL( |
- "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
+ test_util()->RemoveExtensionControlledTURL("ext"); |
ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
} |
-TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
+TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersist) { |
test_util()->VerifyLoad(); |
// Add third-party default search engine. |
TemplateURL* user_dse = AddKeywordWithDate( |
@@ -1665,6 +1657,7 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
model()->SetUserSelectedDefaultSearchProvider(user_dse); |
EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
+ // Create non-default extension search engine. |
std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), |
@@ -1672,10 +1665,12 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
new TemplateURL::AssociatedExtensionInfo("ext1")); |
extension_info->wants_to_be_default_engine = false; |
- model()->AddExtensionControlledTURL(std::move(ext_dse), |
- std::move(extension_info)); |
+ |
+ test_util()->AddExtensionControlledTURL(std::move(ext_dse), |
+ std::move(extension_info)); |
EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
+ // Create default extension search engine. |
ext_dse = CreateKeywordWithDate( |
model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", |
std::string(), std::string(), std::string(), true, kPrepopulatedId, |
@@ -1683,15 +1678,47 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); |
extension_info->wants_to_be_default_engine = true; |
- TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
+ |
+ auto cloned_ext_dse = base::MakeUnique<TemplateURL>(ext_dse->data()); |
+ TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
std::move(ext_dse), std::move(extension_info)); |
EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
- test_util()->ResetModel(true); |
- user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); |
- ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
+ // A default search engine set by an extension must be persisted across |
+ // browser restarts, until the extension is unloaded/disabled. |
+ test_util()->ResetModel(false); |
+ EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); |
+ ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); |
+ |
+ // Non-default extension engines are not persisted across restarts. |
EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
- EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); |
+} |
+ |
+TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersistsBeforeLoad) { |
+ // Chrome will load the extension system before the TemplateURLService, so |
+ // extensions controlling the default search engine may be registered before |
+ // the service has loaded. |
+ std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
+ model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", |
+ std::string(), std::string(), std::string(), true, kPrepopulatedId, |
+ "UTF-8", Time(), Time(), Time(), |
+ TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
+ auto extension_info = |
+ base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext2"); |
+ extension_info->wants_to_be_default_engine = true; |
+ |
+ auto cloned_ext_dse = base::MakeUnique<TemplateURL>(ext_dse->data()); |
+ test_util()->AddExtensionControlledTURL(std::move(ext_dse), |
+ std::move(extension_info)); |
+ |
+ // Default search engine from extension must be persisted between browser |
+ // restarts, and should be available before the TemplateURLService is loaded. |
+ EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); |
+ ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); |
+ |
+ // Check extension DSE is the same after service load. |
+ test_util()->VerifyLoad(); |
+ ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); |
} |
// Checks that correct priority is applied when resolving conflicts between the |
@@ -1769,7 +1796,6 @@ TEST_F(TemplateURLServiceTest, CheckEnginesWithSameKeywords) { |
// Check that two extensions with the same engine are handled correctly. |
TEST_F(TemplateURLServiceTest, ExtensionsWithSameKeywords) { |
test_util()->VerifyLoad(); |
- |
// Add non default extension engine. |
const TemplateURL* extension1 = AddExtensionSearchEngine( |
"common_keyword", "extension_id1", false, Time::FromDoubleT(1)); |
@@ -1781,7 +1807,6 @@ TEST_F(TemplateURLServiceTest, ExtensionsWithSameKeywords) { |
// Add default extension engine with the same keyword. |
const TemplateURL* extension2 = AddExtensionSearchEngine( |
"common_keyword", "extension_id2", true, Time::FromDoubleT(2)); |
- |
// Check that GetTemplateURLForKeyword now returns extension2 because it was |
// installed later. |
EXPECT_EQ(extension2, |
@@ -1791,7 +1816,6 @@ TEST_F(TemplateURLServiceTest, ExtensionsWithSameKeywords) { |
// change any keyword due to conflict. |
const TemplateURL* extension3 = AddExtensionSearchEngine( |
"common_keyword", "extension_id3", false, Time::FromDoubleT(3)); |
- |
// Check that extension2 is set as default. |
EXPECT_EQ(extension2, model()->GetDefaultSearchProvider()); |
@@ -1824,7 +1848,7 @@ TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { |
auto extension_info = |
base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); |
extension_info->wants_to_be_default_engine = true; |
- TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
+ TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
std::move(ext_dse), std::move(extension_info)); |
EXPECT_EQ(ext_dse_ptr, |
model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |