OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/files/scoped_temp_dir.h" | 5 #include "base/files/scoped_temp_dir.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/strings/string_split.h" | 7 #include "base/strings/string_split.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
146 } | 146 } |
147 | 147 |
148 TestingPrefServiceSyncable* pref_service() { return pref_service_.get(); } | 148 TestingPrefServiceSyncable* pref_service() { return pref_service_.get(); } |
149 | 149 |
150 private: | 150 private: |
151 scoped_ptr<TestingPrefServiceSyncable> pref_service_; | 151 scoped_ptr<TestingPrefServiceSyncable> pref_service_; |
152 | 152 |
153 DISALLOW_COPY_AND_ASSIGN(DefaultSearchManagerTest); | 153 DISALLOW_COPY_AND_ASSIGN(DefaultSearchManagerTest); |
154 }; | 154 }; |
155 | 155 |
156 // Test that a TemplateURLData object is properly written and read from Prefs. | |
157 TEST_F(DefaultSearchManagerTest, ReadAndWritePref) { | |
158 DefaultSearchManager manager(pref_service(), | |
159 DefaultSearchManager::ObserverCallback()); | |
160 TemplateURLData data; | |
161 data.short_name = base::UTF8ToUTF16("name1"); | |
162 data.SetKeyword(base::UTF8ToUTF16("key1")); | |
163 data.SetURL("http://foo1/{searchTerms}"); | |
164 data.suggestions_url = "http://sugg1"; | |
165 data.alternate_urls.push_back("http://foo1/alt"); | |
166 data.favicon_url = GURL("http://icon1"); | |
167 data.safe_for_autoreplace = true; | |
168 data.show_in_default_list = true; | |
169 base::SplitString("UTF-8;UTF-16", ';', &data.input_encodings); | |
170 data.date_created = base::Time(); | |
171 data.last_modified = base::Time(); | |
172 | |
173 manager.SetUserSelectedDefaultSearchEngine(data); | |
174 TemplateURLData* read_data = manager.GetDefaultSearchEngine(NULL); | |
175 ExpectSimilar(&data, read_data); | |
176 } | |
177 | |
156 // Test DefaultSearchmanager handles user-selected DSEs correctly. | 178 // Test DefaultSearchmanager handles user-selected DSEs correctly. |
157 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { | 179 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { |
158 size_t default_search_index = 0; | 180 size_t default_search_index = 0; |
159 DefaultSearchManager manager(pref_service()); | 181 DefaultSearchManager manager(pref_service(), |
182 DefaultSearchManager::ObserverCallback()); | |
160 ScopedVector<TemplateURLData> prepopulated_urls = | 183 ScopedVector<TemplateURLData> prepopulated_urls = |
161 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), | 184 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), |
162 &default_search_index); | 185 &default_search_index); |
186 DefaultSearchManager::Source source = DefaultSearchManager::FROM_POLICY; | |
163 // If no user pref is set, we should use the pre-populated values. | 187 // If no user pref is set, we should use the pre-populated values. |
164 ExpectSimilar(prepopulated_urls[default_search_index], | 188 ExpectSimilar(prepopulated_urls[default_search_index], |
165 manager.GetDefaultSearchEngine()); | 189 manager.GetDefaultSearchEngine(&source)); |
166 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 190 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
Peter Kasting
2014/05/03 00:28:18
As the compile failures note, you need to change a
erikwright (departed)
2014/05/05 01:49:38
Done.
| |
167 manager.GetDefaultSearchEngineSource()); | |
168 | 191 |
169 // Setting a user pref overrides the pre-populated values. | 192 // Setting a user pref overrides the pre-populated values. |
170 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 193 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
171 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 194 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
172 | 195 |
173 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 196 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
174 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 197 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
175 manager.GetDefaultSearchEngineSource()); | |
176 | 198 |
177 // Updating the user pref (externally to this instance of | 199 // Updating the user pref (externally to this instance of |
178 // DefaultSearchManager) triggers an update. | 200 // DefaultSearchManager) triggers an update. |
179 scoped_ptr<TemplateURLData> new_data = GenerateDummyTemplateURLData("user2"); | 201 scoped_ptr<TemplateURLData> new_data = GenerateDummyTemplateURLData("user2"); |
180 DefaultSearchManager other_manager(pref_service()); | 202 DefaultSearchManager other_manager(pref_service(), |
203 DefaultSearchManager::ObserverCallback()); | |
181 other_manager.SetUserSelectedDefaultSearchEngine(*new_data.get()); | 204 other_manager.SetUserSelectedDefaultSearchEngine(*new_data.get()); |
182 | 205 |
183 ExpectSimilar(new_data.get(), manager.GetDefaultSearchEngine()); | 206 ExpectSimilar(new_data.get(), manager.GetDefaultSearchEngine(&source)); |
184 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 207 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
185 manager.GetDefaultSearchEngineSource()); | |
186 | 208 |
187 // Clearing the user pref should cause the default search to revert to the | 209 // Clearing the user pref should cause the default search to revert to the |
188 // prepopulated vlaues. | 210 // prepopulated vlaues. |
189 manager.ClearUserSelectedDefaultSearchEngine(); | 211 manager.ClearUserSelectedDefaultSearchEngine(); |
190 ExpectSimilar(prepopulated_urls[default_search_index], | 212 ExpectSimilar(prepopulated_urls[default_search_index], |
191 manager.GetDefaultSearchEngine()); | 213 manager.GetDefaultSearchEngine(&source)); |
192 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 214 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
193 manager.GetDefaultSearchEngineSource()); | |
194 } | 215 } |
195 | 216 |
196 // Test that DefaultSearch manager detects changes to kSearchProviderOverrides. | 217 // Test that DefaultSearch manager detects changes to kSearchProviderOverrides. |
197 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByOverrides) { | 218 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByOverrides) { |
198 SetOverrides(pref_service(), false); | 219 SetOverrides(pref_service(), false); |
199 size_t default_search_index = 0; | 220 size_t default_search_index = 0; |
200 DefaultSearchManager manager(pref_service()); | 221 DefaultSearchManager manager(pref_service(), |
222 DefaultSearchManager::ObserverCallback()); | |
201 ScopedVector<TemplateURLData> prepopulated_urls = | 223 ScopedVector<TemplateURLData> prepopulated_urls = |
202 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), | 224 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), |
203 &default_search_index); | 225 &default_search_index); |
204 | 226 |
205 TemplateURLData first_default(*manager.GetDefaultSearchEngine()); | 227 DefaultSearchManager::Source source = DefaultSearchManager::FROM_POLICY; |
228 TemplateURLData first_default(*manager.GetDefaultSearchEngine(&source)); | |
206 ExpectSimilar(prepopulated_urls[default_search_index], &first_default); | 229 ExpectSimilar(prepopulated_urls[default_search_index], &first_default); |
207 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 230 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
208 manager.GetDefaultSearchEngineSource()); | |
209 | 231 |
210 // Update the overrides: | 232 // Update the overrides: |
211 SetOverrides(pref_service(), true); | 233 SetOverrides(pref_service(), true); |
212 prepopulated_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( | 234 prepopulated_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( |
213 pref_service(), &default_search_index); | 235 pref_service(), &default_search_index); |
214 | 236 |
215 // Make sure DefaultSearchManager updated: | 237 // Make sure DefaultSearchManager updated: |
216 ExpectSimilar(prepopulated_urls[default_search_index], | 238 ExpectSimilar(prepopulated_urls[default_search_index], |
217 manager.GetDefaultSearchEngine()); | 239 manager.GetDefaultSearchEngine(&source)); |
218 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 240 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
219 manager.GetDefaultSearchEngineSource()); | 241 EXPECT_NE(manager.GetDefaultSearchEngine(NULL)->short_name, |
220 EXPECT_NE(manager.GetDefaultSearchEngine()->short_name, | |
221 first_default.short_name); | 242 first_default.short_name); |
222 EXPECT_NE(manager.GetDefaultSearchEngine()->keyword(), | 243 EXPECT_NE(manager.GetDefaultSearchEngine(NULL)->keyword(), |
223 first_default.keyword()); | 244 first_default.keyword()); |
224 } | 245 } |
225 | 246 |
226 // Test DefaultSearchManager handles policy-enforced DSEs correctly. | 247 // Test DefaultSearchManager handles policy-enforced DSEs correctly. |
227 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { | 248 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { |
228 DefaultSearchManager manager(pref_service()); | 249 DefaultSearchManager manager(pref_service(), |
250 DefaultSearchManager::ObserverCallback()); | |
229 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 251 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
230 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 252 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
231 | 253 |
232 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 254 DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; |
233 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 255 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
234 manager.GetDefaultSearchEngineSource()); | 256 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
235 | 257 |
236 scoped_ptr<TemplateURLData> policy_data = | 258 scoped_ptr<TemplateURLData> policy_data = |
237 GenerateDummyTemplateURLData("policy"); | 259 GenerateDummyTemplateURLData("policy"); |
238 SetPolicy(pref_service(), true, policy_data.get()); | 260 SetPolicy(pref_service(), true, policy_data.get()); |
239 | 261 |
240 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine()); | 262 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine(&source)); |
241 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 263 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
242 manager.GetDefaultSearchEngineSource()); | |
243 | 264 |
244 TemplateURLData null_policy_data; | 265 TemplateURLData null_policy_data; |
245 SetPolicy(pref_service(), false, &null_policy_data); | 266 SetPolicy(pref_service(), false, &null_policy_data); |
246 EXPECT_EQ(NULL, manager.GetDefaultSearchEngine()); | 267 EXPECT_EQ(NULL, manager.GetDefaultSearchEngine(&source)); |
247 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 268 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
248 manager.GetDefaultSearchEngineSource()); | |
249 | 269 |
250 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); | 270 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); |
251 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 271 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
252 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 272 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
253 manager.GetDefaultSearchEngineSource()); | |
254 } | 273 } |
255 | 274 |
256 // Test DefaultSearchManager handles extension-controlled DSEs correctly. | 275 // Test DefaultSearchManager handles extension-controlled DSEs correctly. |
257 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { | 276 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { |
258 DefaultSearchManager manager(pref_service()); | 277 DefaultSearchManager manager(pref_service(), |
278 DefaultSearchManager::ObserverCallback()); | |
259 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 279 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
260 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 280 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
261 | 281 |
262 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 282 DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; |
263 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 283 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
264 manager.GetDefaultSearchEngineSource()); | 284 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
265 | 285 |
266 // Extension trumps prefs: | 286 // Extension trumps prefs: |
267 scoped_ptr<TemplateURLData> extension_data_1 = | 287 scoped_ptr<TemplateURLData> extension_data_1 = |
268 GenerateDummyTemplateURLData("ext1"); | 288 GenerateDummyTemplateURLData("ext1"); |
269 TemplateURLData tmp = *extension_data_1.get(); | 289 TemplateURLData tmp = *extension_data_1.get(); |
270 manager.SetExtensionControlledDefaultSearchEngine(extension_data_1.release()); | 290 manager.SetExtensionControlledDefaultSearchEngine(extension_data_1.release()); |
271 | 291 |
272 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine()); | 292 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine(&source)); |
273 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, | 293 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, source); |
274 manager.GetDefaultSearchEngineSource()); | |
275 | 294 |
276 // Policy trumps extension: | 295 // Policy trumps extension: |
277 scoped_ptr<TemplateURLData> policy_data = | 296 scoped_ptr<TemplateURLData> policy_data = |
278 GenerateDummyTemplateURLData("policy"); | 297 GenerateDummyTemplateURLData("policy"); |
279 SetPolicy(pref_service(), true, policy_data.get()); | 298 SetPolicy(pref_service(), true, policy_data.get()); |
280 | 299 |
281 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine()); | 300 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine(&source)); |
282 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 301 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
283 manager.GetDefaultSearchEngineSource()); | |
284 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); | 302 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); |
285 | 303 |
286 // Extensions trump each other: | 304 // Extensions trump each other: |
287 scoped_ptr<TemplateURLData> extension_data_2 = | 305 scoped_ptr<TemplateURLData> extension_data_2 = |
288 GenerateDummyTemplateURLData("ext2"); | 306 GenerateDummyTemplateURLData("ext2"); |
289 scoped_ptr<TemplateURLData> extension_data_3 = | 307 scoped_ptr<TemplateURLData> extension_data_3 = |
290 GenerateDummyTemplateURLData("ext3"); | 308 GenerateDummyTemplateURLData("ext3"); |
291 tmp = *extension_data_3.get(); | 309 tmp = *extension_data_3.get(); |
292 manager.SetExtensionControlledDefaultSearchEngine(extension_data_2.release()); | 310 manager.SetExtensionControlledDefaultSearchEngine(extension_data_2.release()); |
293 manager.SetExtensionControlledDefaultSearchEngine(extension_data_3.release()); | 311 manager.SetExtensionControlledDefaultSearchEngine(extension_data_3.release()); |
294 | 312 |
295 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine()); | 313 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine(&source)); |
296 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, | 314 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, source); |
297 manager.GetDefaultSearchEngineSource()); | |
298 | 315 |
299 manager.ClearExtensionControlledDefaultSearchEngine(); | 316 manager.ClearExtensionControlledDefaultSearchEngine(); |
300 | 317 |
301 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 318 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
302 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 319 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
303 manager.GetDefaultSearchEngineSource()); | |
304 } | 320 } |
OLD | NEW |