Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/search_engines/template_url_service.h" | 5 #include "components/search_engines/template_url_service.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 63 | 63 |
| 64 std::unique_ptr<TemplateURL> CreateKeywordWithDate( | 64 std::unique_ptr<TemplateURL> CreateKeywordWithDate( |
| 65 TemplateURLService* model, | 65 TemplateURLService* model, |
| 66 const std::string& short_name, | 66 const std::string& short_name, |
| 67 const std::string& keyword, | 67 const std::string& keyword, |
| 68 const std::string& url, | 68 const std::string& url, |
| 69 const std::string& suggest_url, | 69 const std::string& suggest_url, |
| 70 const std::string& alternate_url, | 70 const std::string& alternate_url, |
| 71 const std::string& favicon_url, | 71 const std::string& favicon_url, |
| 72 bool safe_for_autoreplace, | 72 bool safe_for_autoreplace, |
| 73 bool show_in_default_list, | 73 int prepopulate_id, |
| 74 const std::string& encodings, | 74 const std::string& encodings, |
| 75 Time date_created, | 75 Time date_created, |
| 76 Time last_modified, | 76 Time last_modified, |
| 77 TemplateURL::Type type = TemplateURL::NORMAL) { | 77 TemplateURL::Type type = TemplateURL::NORMAL) { |
| 78 TemplateURLData data; | 78 TemplateURLData data; |
| 79 data.SetShortName(base::UTF8ToUTF16(short_name)); | 79 data.SetShortName(base::UTF8ToUTF16(short_name)); |
| 80 data.SetKeyword(base::UTF8ToUTF16(keyword)); | 80 data.SetKeyword(base::UTF8ToUTF16(keyword)); |
| 81 data.SetURL(url); | 81 data.SetURL(url); |
| 82 data.suggestions_url = suggest_url; | 82 data.suggestions_url = suggest_url; |
| 83 if (!alternate_url.empty()) | 83 if (!alternate_url.empty()) |
| 84 data.alternate_urls.push_back(alternate_url); | 84 data.alternate_urls.push_back(alternate_url); |
| 85 data.favicon_url = GURL(favicon_url); | 85 data.favicon_url = GURL(favicon_url); |
| 86 data.safe_for_autoreplace = safe_for_autoreplace; | 86 data.safe_for_autoreplace = safe_for_autoreplace; |
| 87 data.show_in_default_list = show_in_default_list; | 87 data.prepopulate_id = prepopulate_id; |
| 88 data.input_encodings = base::SplitString( | 88 data.input_encodings = base::SplitString( |
| 89 encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 89 encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 90 data.date_created = date_created; | 90 data.date_created = date_created; |
| 91 data.last_modified = last_modified; | 91 data.last_modified = last_modified; |
| 92 return base::MakeUnique<TemplateURL>(data, type); | 92 return base::MakeUnique<TemplateURL>(data, type); |
| 93 } | 93 } |
| 94 | 94 |
| 95 TemplateURL* AddKeywordWithDate( | 95 TemplateURL* AddKeywordWithDate( |
| 96 TemplateURLService* model, | 96 TemplateURLService* model, |
| 97 const std::string& short_name, | 97 const std::string& short_name, |
| 98 const std::string& keyword, | 98 const std::string& keyword, |
| 99 const std::string& url, | 99 const std::string& url, |
| 100 const std::string& suggest_url, | 100 const std::string& suggest_url, |
| 101 const std::string& alternate_url, | 101 const std::string& alternate_url, |
| 102 const std::string& favicon_url, | 102 const std::string& favicon_url, |
| 103 bool safe_for_autoreplace, | 103 bool safe_for_autoreplace, |
| 104 const std::string& encodings, | 104 const std::string& encodings, |
| 105 Time date_created, | 105 Time date_created, |
| 106 Time last_modified) { | 106 Time last_modified) { |
| 107 TemplateURL* t_url = model->Add(CreateKeywordWithDate( | 107 TemplateURL* t_url = model->Add(CreateKeywordWithDate( |
| 108 model, short_name, keyword, url, suggest_url, alternate_url, favicon_url, | 108 model, short_name, keyword, url, suggest_url, alternate_url, favicon_url, |
| 109 safe_for_autoreplace, false, encodings, date_created, last_modified)); | 109 safe_for_autoreplace, 0, encodings, date_created, last_modified)); |
| 110 EXPECT_NE(0, t_url->id()); | 110 EXPECT_NE(0, t_url->id()); |
| 111 return t_url; | 111 return t_url; |
| 112 } | 112 } |
| 113 | 113 |
| 114 // Checks that the two TemplateURLs are similar. It does not check the id, the | 114 // Checks that the two TemplateURLs are similar. It does not check the id, the |
| 115 // date_created or the last_modified time. Neither pointer should be NULL. | 115 // date_created or the last_modified time. Neither pointer should be NULL. |
| 116 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual) { | 116 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual) { |
| 117 ASSERT_TRUE(expected != NULL); | 117 ASSERT_TRUE(expected != NULL); |
| 118 ASSERT_TRUE(actual != NULL); | 118 ASSERT_TRUE(actual != NULL); |
| 119 EXPECT_EQ(expected->short_name(), actual->short_name()); | 119 EXPECT_EQ(expected->short_name(), actual->short_name()); |
| 120 EXPECT_EQ(expected->keyword(), actual->keyword()); | 120 EXPECT_EQ(expected->keyword(), actual->keyword()); |
| 121 EXPECT_EQ(expected->url(), actual->url()); | 121 EXPECT_EQ(expected->url(), actual->url()); |
| 122 EXPECT_EQ(expected->suggestions_url(), actual->suggestions_url()); | 122 EXPECT_EQ(expected->suggestions_url(), actual->suggestions_url()); |
| 123 EXPECT_EQ(expected->favicon_url(), actual->favicon_url()); | 123 EXPECT_EQ(expected->favicon_url(), actual->favicon_url()); |
| 124 EXPECT_EQ(expected->alternate_urls(), actual->alternate_urls()); | 124 EXPECT_EQ(expected->alternate_urls(), actual->alternate_urls()); |
| 125 EXPECT_EQ(expected->show_in_default_list(), actual->show_in_default_list()); | |
| 126 EXPECT_EQ(expected->safe_for_autoreplace(), actual->safe_for_autoreplace()); | 125 EXPECT_EQ(expected->safe_for_autoreplace(), actual->safe_for_autoreplace()); |
| 127 EXPECT_EQ(expected->input_encodings(), actual->input_encodings()); | 126 EXPECT_EQ(expected->input_encodings(), actual->input_encodings()); |
| 128 EXPECT_EQ(expected->search_terms_replacement_key(), | 127 EXPECT_EQ(expected->search_terms_replacement_key(), |
| 129 actual->search_terms_replacement_key()); | 128 actual->search_terms_replacement_key()); |
| 130 } | 129 } |
| 131 | 130 |
| 132 } // namespace | 131 } // namespace |
| 133 | 132 |
| 134 | 133 |
| 135 // TemplateURLServiceTest ----------------------------------------------------- | 134 // TemplateURLServiceTest ----------------------------------------------------- |
| 136 | 135 |
| 137 class TemplateURLServiceTest : public testing::Test { | 136 class TemplateURLServiceTest : public testing::Test { |
| 138 public: | 137 public: |
| 139 TemplateURLServiceTest(); | 138 TemplateURLServiceTest(); |
| 140 | 139 |
| 140 // A prepopulated ID to set for engines we want to show in the default list. | |
| 141 // This must simply be greater than 0. | |
| 142 const int kPrepopulatedId = 999999; | |
|
Peter Kasting
2016/11/14 19:59:16
Nit: constexpr
ltian
2016/11/15 19:43:41
Done.
| |
| 143 | |
| 141 // testing::Test: | 144 // testing::Test: |
| 142 void SetUp() override; | 145 void SetUp() override; |
| 143 void TearDown() override; | 146 void TearDown() override; |
| 144 | 147 |
| 145 TemplateURL* AddKeywordWithDate(const std::string& short_name, | 148 TemplateURL* AddKeywordWithDate(const std::string& short_name, |
| 146 const std::string& keyword, | 149 const std::string& keyword, |
| 147 const std::string& url, | 150 const std::string& url, |
| 148 const std::string& suggest_url, | 151 const std::string& suggest_url, |
| 149 const std::string& alternate_url, | 152 const std::string& alternate_url, |
| 150 const std::string& favicon_url, | 153 const std::string& favicon_url, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 226 } | 229 } |
| 227 | 230 |
| 228 void TemplateURLServiceTest::AssertEquals(const TemplateURL& expected, | 231 void TemplateURLServiceTest::AssertEquals(const TemplateURL& expected, |
| 229 const TemplateURL& actual) { | 232 const TemplateURL& actual) { |
| 230 ASSERT_EQ(expected.short_name(), actual.short_name()); | 233 ASSERT_EQ(expected.short_name(), actual.short_name()); |
| 231 ASSERT_EQ(expected.keyword(), actual.keyword()); | 234 ASSERT_EQ(expected.keyword(), actual.keyword()); |
| 232 ASSERT_EQ(expected.url(), actual.url()); | 235 ASSERT_EQ(expected.url(), actual.url()); |
| 233 ASSERT_EQ(expected.suggestions_url(), actual.suggestions_url()); | 236 ASSERT_EQ(expected.suggestions_url(), actual.suggestions_url()); |
| 234 ASSERT_EQ(expected.favicon_url(), actual.favicon_url()); | 237 ASSERT_EQ(expected.favicon_url(), actual.favicon_url()); |
| 235 ASSERT_EQ(expected.alternate_urls(), actual.alternate_urls()); | 238 ASSERT_EQ(expected.alternate_urls(), actual.alternate_urls()); |
| 236 ASSERT_EQ(expected.show_in_default_list(), actual.show_in_default_list()); | 239 ASSERT_EQ(expected.prepopulate_id(), actual.prepopulate_id()); |
| 237 ASSERT_EQ(expected.safe_for_autoreplace(), actual.safe_for_autoreplace()); | 240 ASSERT_EQ(expected.safe_for_autoreplace(), actual.safe_for_autoreplace()); |
| 238 ASSERT_EQ(expected.input_encodings(), actual.input_encodings()); | 241 ASSERT_EQ(expected.input_encodings(), actual.input_encodings()); |
| 239 ASSERT_EQ(expected.id(), actual.id()); | 242 ASSERT_EQ(expected.id(), actual.id()); |
| 240 ASSERT_EQ(expected.date_created(), actual.date_created()); | 243 ASSERT_EQ(expected.date_created(), actual.date_created()); |
| 241 AssertTimesEqual(expected.last_modified(), actual.last_modified()); | 244 AssertTimesEqual(expected.last_modified(), actual.last_modified()); |
| 242 ASSERT_EQ(expected.sync_guid(), actual.sync_guid()); | 245 ASSERT_EQ(expected.sync_guid(), actual.sync_guid()); |
| 243 ASSERT_EQ(expected.search_terms_replacement_key(), | 246 ASSERT_EQ(expected.search_terms_replacement_key(), |
| 244 actual.search_terms_replacement_key()); | 247 actual.search_terms_replacement_key()); |
| 245 } | 248 } |
| 246 | 249 |
| 247 void TemplateURLServiceTest::AssertTimesEqual(const base::Time& expected, | 250 void TemplateURLServiceTest::AssertTimesEqual(const base::Time& expected, |
| 248 const base::Time& actual) { | 251 const base::Time& actual) { |
| 249 // Because times are stored with a granularity of one second, there is a loss | 252 // Because times are stored with a granularity of one second, there is a loss |
| 250 // of precision when serializing and deserializing the timestamps. Hence, only | 253 // of precision when serializing and deserializing the timestamps. Hence, only |
| 251 // expect timestamps to be equal to within one second of one another. | 254 // expect timestamps to be equal to within one second of one another. |
| 252 ASSERT_LT((expected - actual).magnitude(), base::TimeDelta::FromSeconds(1)); | 255 ASSERT_LT((expected - actual).magnitude(), base::TimeDelta::FromSeconds(1)); |
| 253 } | 256 } |
| 254 | 257 |
| 255 std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL( | 258 std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL( |
| 256 bool safe_for_autoreplace, | 259 bool safe_for_autoreplace, |
| 257 int prepopulate_id) { | 260 int prepopulate_id) { |
| 258 TemplateURLData data; | 261 TemplateURLData data; |
| 259 data.SetShortName(ASCIIToUTF16("unittest")); | 262 data.SetShortName(ASCIIToUTF16("unittest")); |
| 260 data.SetKeyword(ASCIIToUTF16("unittest")); | 263 data.SetKeyword(ASCIIToUTF16("unittest")); |
| 261 data.SetURL("http://www.unittest.com/{searchTerms}"); | 264 data.SetURL("http://www.unittest.com/{searchTerms}"); |
| 262 data.favicon_url = GURL("http://favicon.url"); | 265 data.favicon_url = GURL("http://favicon.url"); |
| 263 data.show_in_default_list = true; | |
| 264 data.safe_for_autoreplace = safe_for_autoreplace; | 266 data.safe_for_autoreplace = safe_for_autoreplace; |
| 265 data.input_encodings.push_back("UTF-8"); | 267 data.input_encodings.push_back("UTF-8"); |
| 266 data.date_created = Time::FromTimeT(100); | 268 data.date_created = Time::FromTimeT(100); |
| 267 data.last_modified = Time::FromTimeT(100); | 269 data.last_modified = Time::FromTimeT(100); |
| 268 data.prepopulate_id = prepopulate_id; | 270 data.prepopulate_id = prepopulate_id; |
| 269 return base::MakeUnique<TemplateURL>(data); | 271 return base::MakeUnique<TemplateURL>(data); |
| 270 } | 272 } |
| 271 | 273 |
| 272 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) { | 274 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) { |
| 273 EXPECT_EQ(expected_changed_count, test_util_->GetObserverCount()); | 275 EXPECT_EQ(expected_changed_count, test_util_->GetObserverCount()); |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 679 test_util()->VerifyLoad(); | 681 test_util()->VerifyLoad(); |
| 680 const size_t initial_count = model()->GetTemplateURLs().size(); | 682 const size_t initial_count = model()->GetTemplateURLs().size(); |
| 681 TemplateURL* t_url = AddKeywordWithDate( | 683 TemplateURL* t_url = AddKeywordWithDate( |
| 682 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1", | 684 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1", |
| 683 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time()); | 685 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time()); |
| 684 test_util()->ResetObserverCount(); | 686 test_util()->ResetObserverCount(); |
| 685 | 687 |
| 686 model()->SetUserSelectedDefaultSearchProvider(t_url); | 688 model()->SetUserSelectedDefaultSearchProvider(t_url); |
| 687 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); | 689 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); |
| 688 ASSERT_TRUE(t_url->safe_for_autoreplace()); | 690 ASSERT_TRUE(t_url->safe_for_autoreplace()); |
| 689 ASSERT_TRUE(t_url->show_in_default_list()); | 691 ASSERT_TRUE(model()->ShowInDefaultList(t_url)); |
| 690 | 692 |
| 691 // Setting the default search provider should have caused notification. | 693 // Setting the default search provider should have caused notification. |
| 692 VerifyObserverCount(1); | 694 VerifyObserverCount(1); |
| 693 base::RunLoop().RunUntilIdle(); | 695 base::RunLoop().RunUntilIdle(); |
| 694 | 696 |
| 695 std::unique_ptr<TemplateURL> cloned_url( | 697 std::unique_ptr<TemplateURL> cloned_url( |
| 696 base::MakeUnique<TemplateURL>(t_url->data())); | 698 base::MakeUnique<TemplateURL>(t_url->data())); |
| 697 | 699 |
| 698 // Make sure when we reload we get a default search provider. | 700 // Make sure when we reload we get a default search provider. |
| 699 test_util()->ResetModel(true); | 701 test_util()->ResetModel(true); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 859 kIconURL, kEncodings, | 861 kIconURL, kEncodings, |
| 860 kAlternateURL, | 862 kAlternateURL, |
| 861 kSearchTermsReplacementKey); | 863 kSearchTermsReplacementKey); |
| 862 test_util()->VerifyLoad(); | 864 test_util()->VerifyLoad(); |
| 863 // Verify that the default manager we are getting is the managed one. | 865 // Verify that the default manager we are getting is the managed one. |
| 864 TemplateURLData data; | 866 TemplateURLData data; |
| 865 data.SetShortName(ASCIIToUTF16(kName)); | 867 data.SetShortName(ASCIIToUTF16(kName)); |
| 866 data.SetKeyword(ASCIIToUTF16(kKeyword)); | 868 data.SetKeyword(ASCIIToUTF16(kKeyword)); |
| 867 data.SetURL(kSearchURL); | 869 data.SetURL(kSearchURL); |
| 868 data.favicon_url = GURL(kIconURL); | 870 data.favicon_url = GURL(kIconURL); |
| 869 data.show_in_default_list = true; | 871 data.prepopulate_id = kPrepopulatedId; |
| 870 data.input_encodings = base::SplitString( | 872 data.input_encodings = base::SplitString( |
| 871 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 873 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 872 data.alternate_urls.push_back(kAlternateURL); | 874 data.alternate_urls.push_back(kAlternateURL); |
| 873 data.search_terms_replacement_key = kSearchTermsReplacementKey; | 875 data.search_terms_replacement_key = kSearchTermsReplacementKey; |
| 874 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data)); | 876 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data)); |
| 875 EXPECT_TRUE(model()->is_default_search_managed()); | 877 EXPECT_TRUE(model()->is_default_search_managed()); |
| 876 const TemplateURL* actual_managed_default = | 878 const TemplateURL* actual_managed_default = |
| 877 model()->GetDefaultSearchProvider(); | 879 model()->GetDefaultSearchProvider(); |
| 878 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 880 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
| 879 | 881 |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1041 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( | 1043 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| 1042 callback.visits[0].transition, ui::PAGE_TRANSITION_KEYWORD_GENERATED)); | 1044 callback.visits[0].transition, ui::PAGE_TRANSITION_KEYWORD_GENERATED)); |
| 1043 } | 1045 } |
| 1044 | 1046 |
| 1045 // Make sure that the load routine deletes prepopulated engines that no longer | 1047 // Make sure that the load routine deletes prepopulated engines that no longer |
| 1046 // exist in the prepopulate data. | 1048 // exist in the prepopulate data. |
| 1047 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) { | 1049 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) { |
| 1048 // Create a preloaded template url. Add it to a loaded model and wait for the | 1050 // Create a preloaded template url. Add it to a loaded model and wait for the |
| 1049 // saves to finish. | 1051 // saves to finish. |
| 1050 test_util()->ChangeModelToLoadState(); | 1052 test_util()->ChangeModelToLoadState(); |
| 1051 model()->Add(CreatePreloadedTemplateURL(true, 999999)); | 1053 model()->Add(CreatePreloadedTemplateURL(true, kPrepopulatedId)); |
| 1052 ASSERT_TRUE( | 1054 ASSERT_TRUE( |
| 1053 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); | 1055 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); |
| 1054 base::RunLoop().RunUntilIdle(); | 1056 base::RunLoop().RunUntilIdle(); |
| 1055 | 1057 |
| 1056 // Ensure that merging clears this engine. | 1058 // Ensure that merging clears this engine. |
| 1057 test_util()->ResetModel(true); | 1059 test_util()->ResetModel(true); |
| 1058 ASSERT_TRUE( | 1060 ASSERT_TRUE( |
| 1059 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); | 1061 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); |
| 1060 | 1062 |
| 1061 // Wait for any saves to finish. | 1063 // Wait for any saves to finish. |
| 1062 base::RunLoop().RunUntilIdle(); | 1064 base::RunLoop().RunUntilIdle(); |
| 1063 | 1065 |
| 1064 // Reload the model to verify that the database was updated as a result of the | 1066 // Reload the model to verify that the database was updated as a result of the |
| 1065 // merge. | 1067 // merge. |
| 1066 test_util()->ResetModel(true); | 1068 test_util()->ResetModel(true); |
| 1067 ASSERT_TRUE( | 1069 ASSERT_TRUE( |
| 1068 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); | 1070 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); |
| 1069 } | 1071 } |
| 1070 | 1072 |
| 1071 // Make sure that load routine doesn't delete prepopulated engines that no | 1073 // Make sure that load routine doesn't delete prepopulated engines that no |
| 1072 // longer exist in the prepopulate data if it has been modified by the user. | 1074 // longer exist in the prepopulate data if it has been modified by the user. |
| 1073 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { | 1075 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { |
| 1074 // Create a preloaded template url and add it to a loaded model. | 1076 // Create a preloaded template url and add it to a loaded model. |
| 1075 test_util()->ChangeModelToLoadState(); | 1077 test_util()->ChangeModelToLoadState(); |
| 1076 TemplateURL* t_url = model()->Add(CreatePreloadedTemplateURL(false, 999999)); | 1078 TemplateURL* t_url = |
| 1079 model()->Add(CreatePreloadedTemplateURL(false, kPrepopulatedId)); | |
| 1077 | 1080 |
| 1078 // Do the copy after t_url is added so that the id is set. | 1081 // Do the copy after t_url is added so that the id is set. |
| 1079 std::unique_ptr<TemplateURL> cloned_url = | 1082 std::unique_ptr<TemplateURL> cloned_url = |
| 1080 base::MakeUnique<TemplateURL>(t_url->data()); | 1083 base::MakeUnique<TemplateURL>(t_url->data()); |
| 1081 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); | 1084 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); |
| 1082 | 1085 |
| 1083 // Wait for any saves to finish. | 1086 // Wait for any saves to finish. |
| 1084 base::RunLoop().RunUntilIdle(); | 1087 base::RunLoop().RunUntilIdle(); |
| 1085 | 1088 |
| 1086 // Ensure that merging won't clear it if the user has edited it. | 1089 // Ensure that merging won't clear it if the user has edited it. |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1122 } | 1125 } |
| 1123 | 1126 |
| 1124 // Make sure that the load routine doesn't delete | 1127 // Make sure that the load routine doesn't delete |
| 1125 // prepopulated engines that no longer exist in the prepopulate data if | 1128 // prepopulated engines that no longer exist in the prepopulate data if |
| 1126 // it is the default search provider. | 1129 // it is the default search provider. |
| 1127 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) { | 1130 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) { |
| 1128 // Set the default search provider to a preloaded template url which | 1131 // Set the default search provider to a preloaded template url which |
| 1129 // is not in the current set of preloaded template urls and save | 1132 // is not in the current set of preloaded template urls and save |
| 1130 // the result. | 1133 // the result. |
| 1131 test_util()->ChangeModelToLoadState(); | 1134 test_util()->ChangeModelToLoadState(); |
| 1132 TemplateURL* t_url = model()->Add(CreatePreloadedTemplateURL(true, 999999)); | 1135 TemplateURL* t_url = |
| 1136 model()->Add(CreatePreloadedTemplateURL(true, kPrepopulatedId)); | |
| 1133 model()->SetUserSelectedDefaultSearchProvider(t_url); | 1137 model()->SetUserSelectedDefaultSearchProvider(t_url); |
| 1134 // Do the copy after t_url is added and set as default so that its | 1138 // Do the copy after t_url is added and set as default so that its |
| 1135 // internal state is correct. | 1139 // internal state is correct. |
| 1136 std::unique_ptr<TemplateURL> cloned_url = | 1140 std::unique_ptr<TemplateURL> cloned_url = |
| 1137 base::MakeUnique<TemplateURL>(t_url->data()); | 1141 base::MakeUnique<TemplateURL>(t_url->data()); |
| 1138 | 1142 |
| 1139 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); | 1143 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); |
| 1140 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); | 1144 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); |
| 1141 base::RunLoop().RunUntilIdle(); | 1145 base::RunLoop().RunUntilIdle(); |
| 1142 | 1146 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1239 VerifyObserverFired(); | 1243 VerifyObserverFired(); |
| 1240 EXPECT_TRUE(model()->is_default_search_managed()); | 1244 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1241 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); | 1245 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); |
| 1242 | 1246 |
| 1243 // Verify that the default manager we are getting is the managed one. | 1247 // Verify that the default manager we are getting is the managed one. |
| 1244 TemplateURLData data; | 1248 TemplateURLData data; |
| 1245 data.SetShortName(ASCIIToUTF16(kName)); | 1249 data.SetShortName(ASCIIToUTF16(kName)); |
| 1246 data.SetKeyword(ASCIIToUTF16(kKeyword)); | 1250 data.SetKeyword(ASCIIToUTF16(kKeyword)); |
| 1247 data.SetURL(kSearchURL); | 1251 data.SetURL(kSearchURL); |
| 1248 data.favicon_url = GURL(kIconURL); | 1252 data.favicon_url = GURL(kIconURL); |
| 1249 data.show_in_default_list = true; | 1253 data.prepopulate_id = kPrepopulatedId; |
| 1250 data.input_encodings = base::SplitString( | 1254 data.input_encodings = base::SplitString( |
| 1251 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 1255 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 1252 data.alternate_urls.push_back(kAlternateURL); | 1256 data.alternate_urls.push_back(kAlternateURL); |
| 1253 data.search_terms_replacement_key = kSearchTermsReplacementKey; | 1257 data.search_terms_replacement_key = kSearchTermsReplacementKey; |
| 1254 std::unique_ptr<TemplateURL> expected_managed_default1(new TemplateURL(data)); | 1258 std::unique_ptr<TemplateURL> expected_managed_default1(new TemplateURL(data)); |
| 1255 const TemplateURL* actual_managed_default = | 1259 const TemplateURL* actual_managed_default = |
| 1256 model()->GetDefaultSearchProvider(); | 1260 model()->GetDefaultSearchProvider(); |
| 1257 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); | 1261 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); |
| 1258 EXPECT_TRUE(actual_managed_default->show_in_default_list()); | 1262 EXPECT_TRUE(model()->ShowInDefaultList(actual_managed_default)); |
| 1259 | 1263 |
| 1260 // Update the managed preference and check that the model has changed. | 1264 // Update the managed preference and check that the model has changed. |
| 1261 const char kNewName[] = "test2"; | 1265 const char kNewName[] = "test2"; |
| 1262 const char kNewKeyword[] = "other.com"; | 1266 const char kNewKeyword[] = "other.com"; |
| 1263 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; | 1267 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; |
| 1264 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; | 1268 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; |
| 1265 test_util()->SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword, | 1269 test_util()->SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword, |
| 1266 kNewSearchURL, kNewSuggestURL, std::string(), std::string(), | 1270 kNewSearchURL, kNewSuggestURL, std::string(), std::string(), |
| 1267 std::string(), std::string()); | 1271 std::string(), std::string()); |
| 1268 VerifyObserverFired(); | 1272 VerifyObserverFired(); |
| 1269 EXPECT_TRUE(model()->is_default_search_managed()); | 1273 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1270 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); | 1274 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); |
| 1271 | 1275 |
| 1272 // Verify that the default manager we are now getting is the correct one. | 1276 // Verify that the default manager we are now getting is the correct one. |
| 1273 TemplateURLData data2; | 1277 TemplateURLData data2; |
| 1274 data2.SetShortName(ASCIIToUTF16(kNewName)); | 1278 data2.SetShortName(ASCIIToUTF16(kNewName)); |
| 1275 data2.SetKeyword(ASCIIToUTF16(kNewKeyword)); | 1279 data2.SetKeyword(ASCIIToUTF16(kNewKeyword)); |
| 1276 data2.SetURL(kNewSearchURL); | 1280 data2.SetURL(kNewSearchURL); |
| 1277 data2.suggestions_url = kNewSuggestURL; | 1281 data2.suggestions_url = kNewSuggestURL; |
| 1278 data2.show_in_default_list = true; | 1282 data2.prepopulate_id = kPrepopulatedId; |
| 1279 std::unique_ptr<TemplateURL> expected_managed_default2( | 1283 std::unique_ptr<TemplateURL> expected_managed_default2( |
| 1280 new TemplateURL(data2)); | 1284 new TemplateURL(data2)); |
| 1281 actual_managed_default = model()->GetDefaultSearchProvider(); | 1285 actual_managed_default = model()->GetDefaultSearchProvider(); |
| 1282 ExpectSimilar(expected_managed_default2.get(), actual_managed_default); | 1286 ExpectSimilar(expected_managed_default2.get(), actual_managed_default); |
| 1283 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); | 1287 EXPECT_EQ(model()->ShowInDefaultList(actual_managed_default), true); |
| 1284 | 1288 |
| 1285 // Remove all the managed prefs and check that we are no longer managed. | 1289 // Remove all the managed prefs and check that we are no longer managed. |
| 1286 test_util()->RemoveManagedDefaultSearchPreferences(); | 1290 test_util()->RemoveManagedDefaultSearchPreferences(); |
| 1287 VerifyObserverFired(); | 1291 VerifyObserverFired(); |
| 1288 EXPECT_FALSE(model()->is_default_search_managed()); | 1292 EXPECT_FALSE(model()->is_default_search_managed()); |
| 1289 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); | 1293 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); |
| 1290 | 1294 |
| 1291 // The default should now be the user preference. | 1295 // The default should now be the user preference. |
| 1292 const TemplateURL* actual_final_managed_default = | 1296 const TemplateURL* actual_final_managed_default = |
| 1293 model()->GetDefaultSearchProvider(); | 1297 model()->GetDefaultSearchProvider(); |
| 1294 ExpectSimilar(regular_default, actual_final_managed_default); | 1298 ExpectSimilar(regular_default, actual_final_managed_default); |
| 1295 EXPECT_EQ(actual_final_managed_default->show_in_default_list(), true); | 1299 EXPECT_EQ(model()->ShowInDefaultList(actual_final_managed_default), true); |
| 1296 | 1300 |
| 1297 // Disable the default search provider through policy. | 1301 // Disable the default search provider through policy. |
| 1298 test_util()->SetManagedDefaultSearchPreferences(false, std::string(), | 1302 test_util()->SetManagedDefaultSearchPreferences(false, std::string(), |
| 1299 std::string(), std::string(), std::string(), std::string(), | 1303 std::string(), std::string(), std::string(), std::string(), |
| 1300 std::string(), std::string(), std::string()); | 1304 std::string(), std::string(), std::string()); |
| 1301 VerifyObserverFired(); | 1305 VerifyObserverFired(); |
| 1302 EXPECT_TRUE(model()->is_default_search_managed()); | 1306 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1303 EXPECT_TRUE(NULL == model()->GetDefaultSearchProvider()); | 1307 EXPECT_TRUE(NULL == model()->GetDefaultSearchProvider()); |
| 1304 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); | 1308 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); |
| 1305 | 1309 |
| 1306 // Re-enable it. | 1310 // Re-enable it. |
| 1307 test_util()->SetManagedDefaultSearchPreferences(true, kName, kKeyword, | 1311 test_util()->SetManagedDefaultSearchPreferences(true, kName, kKeyword, |
| 1308 kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL, | 1312 kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL, |
| 1309 kSearchTermsReplacementKey); | 1313 kSearchTermsReplacementKey); |
| 1310 VerifyObserverFired(); | 1314 VerifyObserverFired(); |
| 1311 EXPECT_TRUE(model()->is_default_search_managed()); | 1315 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1312 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); | 1316 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); |
| 1313 | 1317 |
| 1314 // Verify that the default manager we are getting is the managed one. | 1318 // Verify that the default manager we are getting is the managed one. |
| 1315 actual_managed_default = model()->GetDefaultSearchProvider(); | 1319 actual_managed_default = model()->GetDefaultSearchProvider(); |
| 1316 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); | 1320 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); |
| 1317 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); | 1321 EXPECT_EQ(model()->ShowInDefaultList(actual_managed_default), true); |
| 1318 | 1322 |
| 1319 // Clear the model and disable the default search provider through policy. | 1323 // Clear the model and disable the default search provider through policy. |
| 1320 // Verify that there is no default search provider after loading the model. | 1324 // Verify that there is no default search provider after loading the model. |
| 1321 // This checks against regressions of http://crbug.com/67180 | 1325 // This checks against regressions of http://crbug.com/67180 |
| 1322 | 1326 |
| 1323 // First, remove the preferences, reset the model, and set a default. | 1327 // First, remove the preferences, reset the model, and set a default. |
| 1324 test_util()->RemoveManagedDefaultSearchPreferences(); | 1328 test_util()->RemoveManagedDefaultSearchPreferences(); |
| 1325 test_util()->ResetModel(true); | 1329 test_util()->ResetModel(true); |
| 1326 TemplateURL* new_default = | 1330 TemplateURL* new_default = |
| 1327 model()->GetTemplateURLForKeyword(ASCIIToUTF16("key1")); | 1331 model()->GetTemplateURLForKeyword(ASCIIToUTF16("key1")); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1411 // Add third-party default search engine. | 1415 // Add third-party default search engine. |
| 1412 TemplateURL* user_dse = AddKeywordWithDate( | 1416 TemplateURL* user_dse = AddKeywordWithDate( |
| 1413 "user", "user", "http://www.goo.com/s?q={searchTerms}", | 1417 "user", "user", "http://www.goo.com/s?q={searchTerms}", |
| 1414 std::string(), std::string(), std::string(), | 1418 std::string(), std::string(), std::string(), |
| 1415 true, "UTF-8", Time(), Time()); | 1419 true, "UTF-8", Time(), Time()); |
| 1416 model()->SetUserSelectedDefaultSearchProvider(user_dse); | 1420 model()->SetUserSelectedDefaultSearchProvider(user_dse); |
| 1417 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1421 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1418 | 1422 |
| 1419 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1423 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1420 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", | 1424 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", |
| 1421 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(), | 1425 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1422 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1426 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1423 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1427 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
| 1424 new TemplateURL::AssociatedExtensionInfo("ext")); | 1428 new TemplateURL::AssociatedExtensionInfo("ext")); |
| 1425 extension_info->wants_to_be_default_engine = true; | 1429 extension_info->wants_to_be_default_engine = true; |
| 1426 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1430 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
| 1427 std::move(ext_dse), std::move(extension_info)); | 1431 std::move(ext_dse), std::move(extension_info)); |
| 1428 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1432 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
| 1429 | 1433 |
| 1430 model()->RemoveExtensionControlledTURL( | 1434 model()->RemoveExtensionControlledTURL( |
| 1431 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1435 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1432 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | 1436 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
| 1433 } | 1437 } |
| 1434 | 1438 |
| 1435 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { | 1439 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
| 1436 test_util()->VerifyLoad(); | 1440 test_util()->VerifyLoad(); |
| 1437 // Add third-party default search engine. | 1441 // Add third-party default search engine. |
| 1438 TemplateURL* user_dse = AddKeywordWithDate( | 1442 TemplateURL* user_dse = AddKeywordWithDate( |
| 1439 "user", "user", "http://www.goo.com/s?q={searchTerms}", | 1443 "user", "user", "http://www.goo.com/s?q={searchTerms}", |
| 1440 std::string(), std::string(), std::string(), | 1444 std::string(), std::string(), std::string(), |
| 1441 true, "UTF-8", Time(), Time()); | 1445 true, "UTF-8", Time(), Time()); |
| 1442 model()->SetUserSelectedDefaultSearchProvider(user_dse); | 1446 model()->SetUserSelectedDefaultSearchProvider(user_dse); |
| 1443 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1447 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1444 | 1448 |
| 1445 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1449 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1446 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1450 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
| 1447 std::string(), std::string(), std::string(), true, false, "UTF-8", Time(), | 1451 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), |
| 1448 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1452 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1449 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1453 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
| 1450 new TemplateURL::AssociatedExtensionInfo("ext1")); | 1454 new TemplateURL::AssociatedExtensionInfo("ext1")); |
| 1451 extension_info->wants_to_be_default_engine = false; | 1455 extension_info->wants_to_be_default_engine = false; |
| 1452 model()->AddExtensionControlledTURL(std::move(ext_dse), | 1456 model()->AddExtensionControlledTURL(std::move(ext_dse), |
| 1453 std::move(extension_info)); | 1457 std::move(extension_info)); |
| 1454 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1458 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1455 | 1459 |
| 1456 ext_dse = CreateKeywordWithDate( | 1460 ext_dse = CreateKeywordWithDate( |
| 1457 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", | 1461 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", |
| 1458 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(), | 1462 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1459 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1463 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1460 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); | 1464 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); |
| 1461 extension_info->wants_to_be_default_engine = true; | 1465 extension_info->wants_to_be_default_engine = true; |
| 1462 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1466 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
| 1463 std::move(ext_dse), std::move(extension_info)); | 1467 std::move(ext_dse), std::move(extension_info)); |
| 1464 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1468 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
| 1465 | 1469 |
| 1466 test_util()->ResetModel(true); | 1470 test_util()->ResetModel(true); |
| 1467 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); | 1471 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); |
| 1468 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | 1472 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
| 1469 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1473 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1482 test_util()->SetManagedDefaultSearchPreferences( | 1486 test_util()->SetManagedDefaultSearchPreferences( |
| 1483 true, kName, kKeyword, kSearchURL, std::string(), kIconURL, kEncodings, | 1487 true, kName, kKeyword, kSearchURL, std::string(), kIconURL, kEncodings, |
| 1484 kAlternateURL, kSearchTermsReplacementKey); | 1488 kAlternateURL, kSearchTermsReplacementKey); |
| 1485 test_util()->VerifyLoad(); | 1489 test_util()->VerifyLoad(); |
| 1486 // Verify that the default manager we are getting is the managed one. | 1490 // Verify that the default manager we are getting is the managed one. |
| 1487 TemplateURLData data; | 1491 TemplateURLData data; |
| 1488 data.SetShortName(ASCIIToUTF16(kName)); | 1492 data.SetShortName(ASCIIToUTF16(kName)); |
| 1489 data.SetKeyword(ASCIIToUTF16(kKeyword)); | 1493 data.SetKeyword(ASCIIToUTF16(kKeyword)); |
| 1490 data.SetURL(kSearchURL); | 1494 data.SetURL(kSearchURL); |
| 1491 data.favicon_url = GURL(kIconURL); | 1495 data.favicon_url = GURL(kIconURL); |
| 1492 data.show_in_default_list = true; | |
| 1493 data.input_encodings = base::SplitString( | 1496 data.input_encodings = base::SplitString( |
| 1494 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 1497 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 1495 data.alternate_urls.push_back(kAlternateURL); | 1498 data.alternate_urls.push_back(kAlternateURL); |
| 1496 data.search_terms_replacement_key = kSearchTermsReplacementKey; | 1499 data.search_terms_replacement_key = kSearchTermsReplacementKey; |
| 1497 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data)); | 1500 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data)); |
| 1498 EXPECT_TRUE(model()->is_default_search_managed()); | 1501 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1499 const TemplateURL* actual_managed_default = | 1502 const TemplateURL* actual_managed_default = |
| 1500 model()->GetDefaultSearchProvider(); | 1503 model()->GetDefaultSearchProvider(); |
| 1501 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1504 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
| 1502 | 1505 |
| 1503 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1506 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1504 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1507 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
| 1505 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(), | 1508 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1506 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1509 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1507 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1510 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
| 1508 new TemplateURL::AssociatedExtensionInfo("ext1")); | 1511 new TemplateURL::AssociatedExtensionInfo("ext1")); |
| 1509 extension_info->wants_to_be_default_engine = true; | 1512 extension_info->wants_to_be_default_engine = true; |
| 1510 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1513 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( |
| 1511 std::move(ext_dse), std::move(extension_info)); | 1514 std::move(ext_dse), std::move(extension_info)); |
| 1512 EXPECT_EQ(ext_dse_ptr, | 1515 EXPECT_EQ(ext_dse_ptr, |
| 1513 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1516 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
| 1514 EXPECT_TRUE(model()->is_default_search_managed()); | 1517 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1515 actual_managed_default = model()->GetDefaultSearchProvider(); | 1518 actual_managed_default = model()->GetDefaultSearchProvider(); |
| 1516 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1519 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
| 1517 } | 1520 } |
| OLD | NEW |