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

Side by Side Diff: chrome/browser/search_engines/template_url_service_unittest.cc

Issue 2487633003: Change behaivor to decide whether a search engine should be shown in the default list (Closed)
Patch Set: Update based on Peter and Nicolas's comments. Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
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
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 static constexpr int kPrepopulatedId = 999999;
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
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
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
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698