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

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

Issue 338363004: Remove Profile* from TemplateURL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 6 years, 6 months 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 | Annotate | Revision Log
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 data.SetURL(url); 103 data.SetURL(url);
104 data.suggestions_url = suggest_url; 104 data.suggestions_url = suggest_url;
105 if (!alternate_url.empty()) 105 if (!alternate_url.empty())
106 data.alternate_urls.push_back(alternate_url); 106 data.alternate_urls.push_back(alternate_url);
107 data.favicon_url = GURL(favicon_url); 107 data.favicon_url = GURL(favicon_url);
108 data.safe_for_autoreplace = safe_for_autoreplace; 108 data.safe_for_autoreplace = safe_for_autoreplace;
109 data.show_in_default_list = show_in_default_list; 109 data.show_in_default_list = show_in_default_list;
110 base::SplitString(encodings, ';', &data.input_encodings); 110 base::SplitString(encodings, ';', &data.input_encodings);
111 data.date_created = date_created; 111 data.date_created = date_created;
112 data.last_modified = last_modified; 112 data.last_modified = last_modified;
113 return new TemplateURL(model->profile(), data); 113 return new TemplateURL(data);
114 } 114 }
115 115
116 TemplateURL* AddKeywordWithDate( 116 TemplateURL* AddKeywordWithDate(
117 TemplateURLService* model, 117 TemplateURLService* model,
118 const std::string& short_name, 118 const std::string& short_name,
119 const std::string& keyword, 119 const std::string& keyword,
120 const std::string& url, 120 const std::string& url,
121 const std::string& suggest_url, 121 const std::string& suggest_url,
122 const std::string& alternate_url, 122 const std::string& alternate_url,
123 const std::string& favicon_url, 123 const std::string& favicon_url,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 void VerifyObserverCount(int expected_changed_count); 188 void VerifyObserverCount(int expected_changed_count);
189 void VerifyObserverFired(); 189 void VerifyObserverFired();
190 TemplateURLService* model() { return test_util_.model(); } 190 TemplateURLService* model() { return test_util_.model(); }
191 const SearchTermsData& search_terms_data() { 191 const SearchTermsData& search_terms_data() {
192 return model()->search_terms_data(); 192 return model()->search_terms_data();
193 } 193 }
194 194
195 protected: 195 protected:
196 TemplateURLServiceTestUtil test_util_; 196 TemplateURLServiceTestUtil test_util_;
197 197
198 void TestGenerateSearchURL(SearchTermsData* search_terms_data) {
199 struct GenerateSearchURLCase {
200 const char* test_name;
201 const char* url;
202 const char* expected;
203 } generate_url_cases[] = {
204 { "invalid URL", "foo{searchTerms}", "" },
205 { "URL with no replacements", "http://foo/", "http://foo/" },
206 { "basic functionality", "http://foo/{searchTerms}",
207 "http://foo/blah.blah.blah.blah.blah" }
208 };
209
210 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) {
211 TemplateURLData data;
212 data.SetURL(generate_url_cases[i].url);
213 TemplateURL t_url(NULL, data);
214 std::string result;
215 if (search_terms_data) {
216 result = TemplateURLService::GenerateSearchURLUsingTermsData(
217 &t_url, *search_terms_data).spec();
218 } else {
219 result = TemplateURLService::GenerateSearchURL(&t_url).spec();
220 }
221 EXPECT_EQ(result, generate_url_cases[i].expected)
222 << generate_url_cases[i].test_name << " failed. Expected "
223 << generate_url_cases[i].expected << " Actual " << result;
224 }
225 }
226
227
228 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTest); 198 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTest);
229 }; 199 };
230 200
231 class TemplateURLServiceWithoutFallbackTest : public TemplateURLServiceTest { 201 class TemplateURLServiceWithoutFallbackTest : public TemplateURLServiceTest {
232 public: 202 public:
233 TemplateURLServiceWithoutFallbackTest() : TemplateURLServiceTest() {} 203 TemplateURLServiceWithoutFallbackTest() : TemplateURLServiceTest() {}
234 204
235 virtual void SetUp() OVERRIDE { 205 virtual void SetUp() OVERRIDE {
236 TemplateURLService::set_fallback_search_engines_disabled(true); 206 TemplateURLService::set_fallback_search_engines_disabled(true);
237 TemplateURLServiceTest::SetUp(); 207 TemplateURLServiceTest::SetUp();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 data.short_name = ASCIIToUTF16("unittest"); 266 data.short_name = ASCIIToUTF16("unittest");
297 data.SetKeyword(ASCIIToUTF16("unittest")); 267 data.SetKeyword(ASCIIToUTF16("unittest"));
298 data.SetURL("http://www.unittest.com/{searchTerms}"); 268 data.SetURL("http://www.unittest.com/{searchTerms}");
299 data.favicon_url = GURL("http://favicon.url"); 269 data.favicon_url = GURL("http://favicon.url");
300 data.show_in_default_list = true; 270 data.show_in_default_list = true;
301 data.safe_for_autoreplace = safe_for_autoreplace; 271 data.safe_for_autoreplace = safe_for_autoreplace;
302 data.input_encodings.push_back("UTF-8"); 272 data.input_encodings.push_back("UTF-8");
303 data.date_created = Time::FromTimeT(100); 273 data.date_created = Time::FromTimeT(100);
304 data.last_modified = Time::FromTimeT(100); 274 data.last_modified = Time::FromTimeT(100);
305 data.prepopulate_id = prepopulate_id; 275 data.prepopulate_id = prepopulate_id;
306 return new TemplateURL(test_util_.profile(), data); 276 return new TemplateURL(data);
307 } 277 }
308 278
309 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) { 279 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
310 EXPECT_EQ(expected_changed_count, test_util_.GetObserverCount()); 280 EXPECT_EQ(expected_changed_count, test_util_.GetObserverCount());
311 test_util_.ResetObserverCount(); 281 test_util_.ResetObserverCount();
312 } 282 }
313 283
314 void TemplateURLServiceTest::VerifyObserverFired() { 284 void TemplateURLServiceTest::VerifyObserverFired() {
315 EXPECT_LE(1, test_util_.GetObserverCount()); 285 EXPECT_LE(1, test_util_.GetObserverCount());
316 test_util_.ResetObserverCount(); 286 test_util_.ResetObserverCount();
(...skipping 13 matching lines...) Expand all
330 300
331 TemplateURLData data; 301 TemplateURLData data;
332 data.short_name = ASCIIToUTF16("google"); 302 data.short_name = ASCIIToUTF16("google");
333 data.SetKeyword(ASCIIToUTF16("keyword")); 303 data.SetKeyword(ASCIIToUTF16("keyword"));
334 data.SetURL("http://www.google.com/foo/bar"); 304 data.SetURL("http://www.google.com/foo/bar");
335 data.favicon_url = GURL("http://favicon.url"); 305 data.favicon_url = GURL("http://favicon.url");
336 data.safe_for_autoreplace = true; 306 data.safe_for_autoreplace = true;
337 data.date_created = Time::FromTimeT(100); 307 data.date_created = Time::FromTimeT(100);
338 data.last_modified = Time::FromTimeT(100); 308 data.last_modified = Time::FromTimeT(100);
339 data.sync_guid = "00000000-0000-0000-0000-000000000001"; 309 data.sync_guid = "00000000-0000-0000-0000-000000000001";
340 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 310 TemplateURL* t_url = new TemplateURL(data);
341 model()->Add(t_url); 311 model()->Add(t_url);
342 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 312 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
343 NULL)); 313 NULL));
344 VerifyObserverCount(1); 314 VerifyObserverCount(1);
345 base::RunLoop().RunUntilIdle(); 315 base::RunLoop().RunUntilIdle();
346 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 316 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
347 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword())); 317 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword()));
348 // We need to make a second copy as the model takes ownership of |t_url| and 318 // We need to make a second copy as the model takes ownership of |t_url| and
349 // will delete it. We have to do this after calling Add() since that gives 319 // will delete it. We have to do this after calling Add() since that gives
350 // |t_url| its ID. 320 // |t_url| its ID.
351 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 321 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
352 t_url->data()));
353 322
354 // Reload the model to verify it was actually saved to the database. 323 // Reload the model to verify it was actually saved to the database.
355 test_util_.ResetModel(true); 324 test_util_.ResetModel(true);
356 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 325 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
357 TemplateURL* loaded_url = 326 TemplateURL* loaded_url =
358 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 327 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
359 ASSERT_TRUE(loaded_url != NULL); 328 ASSERT_TRUE(loaded_url != NULL);
360 AssertEquals(*cloned_url, *loaded_url); 329 AssertEquals(*cloned_url, *loaded_url);
361 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 330 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
362 NULL)); 331 NULL));
363 332
364 // We expect the last_modified time to be updated to the present time on an 333 // We expect the last_modified time to be updated to the present time on an
365 // explicit reset. We have to set up the expectation here because ResetModel 334 // explicit reset. We have to set up the expectation here because ResetModel
366 // resets the TimeProvider in the TemplateURLService. 335 // resets the TimeProvider in the TemplateURLService.
367 StrictMock<base::MockTimeProvider> mock_time; 336 StrictMock<base::MockTimeProvider> mock_time;
368 model()->set_time_provider(&base::MockTimeProvider::StaticNow); 337 model()->set_time_provider(&base::MockTimeProvider::StaticNow);
369 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337))); 338 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337)));
370 339
371 // Mutate an element and verify it succeeded. 340 // Mutate an element and verify it succeeded.
372 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"), 341 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"),
373 "c"); 342 "c");
374 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name()); 343 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name());
375 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword()); 344 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword());
376 ASSERT_EQ("c", loaded_url->url()); 345 ASSERT_EQ("c", loaded_url->url());
377 ASSERT_FALSE(loaded_url->safe_for_autoreplace()); 346 ASSERT_FALSE(loaded_url->safe_for_autoreplace());
378 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 347 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
379 NULL)); 348 NULL));
380 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL)); 349 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL));
381 cloned_url.reset(new TemplateURL(loaded_url->profile(), loaded_url->data())); 350 cloned_url.reset(new TemplateURL(loaded_url->data()));
382 base::RunLoop().RunUntilIdle(); 351 base::RunLoop().RunUntilIdle();
383 test_util_.ResetModel(true); 352 test_util_.ResetModel(true);
384 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 353 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
385 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b")); 354 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b"));
386 ASSERT_TRUE(loaded_url != NULL); 355 ASSERT_TRUE(loaded_url != NULL);
387 AssertEquals(*cloned_url, *loaded_url); 356 AssertEquals(*cloned_url, *loaded_url);
388 // We changed a TemplateURL in the service, so ensure that the time was 357 // We changed a TemplateURL in the service, so ensure that the time was
389 // updated. 358 // updated.
390 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified()); 359 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified());
391 360
(...skipping 13 matching lines...) Expand all
405 std::string(), true, "UTF-8", Time(), Time()); 374 std::string(), true, "UTF-8", Time(), Time());
406 VerifyObserverCount(1); 375 VerifyObserverCount(1);
407 376
408 // Test what happens when we try to add a TemplateURL with the same keyword as 377 // Test what happens when we try to add a TemplateURL with the same keyword as
409 // one in the model. 378 // one in the model.
410 TemplateURLData data; 379 TemplateURLData data;
411 data.short_name = ASCIIToUTF16("second"); 380 data.short_name = ASCIIToUTF16("second");
412 data.SetKeyword(ASCIIToUTF16("keyword")); 381 data.SetKeyword(ASCIIToUTF16("keyword"));
413 data.SetURL("http://test2"); 382 data.SetURL("http://test2");
414 data.safe_for_autoreplace = false; 383 data.safe_for_autoreplace = false;
415 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 384 TemplateURL* t_url = new TemplateURL(data);
416 model()->Add(t_url); 385 model()->Add(t_url);
417 386
418 // Because the old TemplateURL was replaceable and the new one wasn't, the new 387 // Because the old TemplateURL was replaceable and the new one wasn't, the new
419 // one should have replaced the old. 388 // one should have replaced the old.
420 VerifyObserverCount(1); 389 VerifyObserverCount(1);
421 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 390 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
422 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 391 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
423 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword()); 392 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword());
424 EXPECT_FALSE(t_url->safe_for_autoreplace()); 393 EXPECT_FALSE(t_url->safe_for_autoreplace());
425 394
426 // Now try adding a replaceable TemplateURL. This should just delete the 395 // Now try adding a replaceable TemplateURL. This should just delete the
427 // passed-in URL. 396 // passed-in URL.
428 data.short_name = ASCIIToUTF16("third"); 397 data.short_name = ASCIIToUTF16("third");
429 data.SetURL("http://test3"); 398 data.SetURL("http://test3");
430 data.safe_for_autoreplace = true; 399 data.safe_for_autoreplace = true;
431 model()->Add(new TemplateURL(test_util_.profile(), data)); 400 model()->Add(new TemplateURL(data));
432 VerifyObserverCount(0); 401 VerifyObserverCount(0);
433 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 402 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
434 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 403 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
435 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword()); 404 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword());
436 EXPECT_FALSE(t_url->safe_for_autoreplace()); 405 EXPECT_FALSE(t_url->safe_for_autoreplace());
437 406
438 // Now try adding a non-replaceable TemplateURL again. This should uniquify 407 // Now try adding a non-replaceable TemplateURL again. This should uniquify
439 // the existing entry's keyword. 408 // the existing entry's keyword.
440 data.short_name = ASCIIToUTF16("fourth"); 409 data.short_name = ASCIIToUTF16("fourth");
441 data.SetURL("http://test4"); 410 data.SetURL("http://test4");
442 data.safe_for_autoreplace = false; 411 data.safe_for_autoreplace = false;
443 TemplateURL* t_url2 = new TemplateURL(test_util_.profile(), data); 412 TemplateURL* t_url2 = new TemplateURL(data);
444 model()->Add(t_url2); 413 model()->Add(t_url2);
445 VerifyObserverCount(1); 414 VerifyObserverCount(1);
446 EXPECT_EQ(t_url2, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 415 EXPECT_EQ(t_url2, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
447 EXPECT_EQ(ASCIIToUTF16("fourth"), t_url2->short_name()); 416 EXPECT_EQ(ASCIIToUTF16("fourth"), t_url2->short_name());
448 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url2->keyword()); 417 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url2->keyword());
449 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 418 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
450 EXPECT_EQ(ASCIIToUTF16("test2"), t_url->keyword()); 419 EXPECT_EQ(ASCIIToUTF16("test2"), t_url->keyword());
451 } 420 }
452 421
453 TEST_F(TemplateURLServiceTest, AddExtensionKeyword) { 422 TEST_F(TemplateURLServiceTest, AddExtensionKeyword) {
(...skipping 12 matching lines...) Expand all
466 435
467 // Add an extension keyword that conflicts with each of the above three 436 // Add an extension keyword that conflicts with each of the above three
468 // keywords. 437 // keywords.
469 TemplateURLData data; 438 TemplateURLData data;
470 data.short_name = ASCIIToUTF16("test"); 439 data.short_name = ASCIIToUTF16("test");
471 data.SetKeyword(ASCIIToUTF16("keyword1")); 440 data.SetKeyword(ASCIIToUTF16("keyword1"));
472 data.SetURL(std::string(extensions::kExtensionScheme) + "://test4"); 441 data.SetURL(std::string(extensions::kExtensionScheme) + "://test4");
473 data.safe_for_autoreplace = false; 442 data.safe_for_autoreplace = false;
474 443
475 // Both replaceable and non-replaceable keywords should be uniquified. 444 // Both replaceable and non-replaceable keywords should be uniquified.
476 TemplateURL* extension1 = new TemplateURL(test_util_.profile(), data); 445 TemplateURL* extension1 = new TemplateURL(data);
477 model()->Add(extension1); 446 model()->Add(extension1);
478 ASSERT_EQ(extension1, 447 ASSERT_EQ(extension1,
479 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword1"))); 448 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword1")));
480 EXPECT_EQ(original1, 449 EXPECT_EQ(original1,
481 model()->GetTemplateURLForKeyword(ASCIIToUTF16("test1"))); 450 model()->GetTemplateURLForKeyword(ASCIIToUTF16("test1")));
482 data.SetKeyword(ASCIIToUTF16("keyword2")); 451 data.SetKeyword(ASCIIToUTF16("keyword2"));
483 TemplateURL* extension2 = new TemplateURL(test_util_.profile(), data); 452 TemplateURL* extension2 = new TemplateURL(data);
484 model()->Add(extension2); 453 model()->Add(extension2);
485 ASSERT_EQ(extension2, 454 ASSERT_EQ(extension2,
486 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword2"))); 455 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword2")));
487 EXPECT_EQ(original2, 456 EXPECT_EQ(original2,
488 model()->GetTemplateURLForKeyword(ASCIIToUTF16("test2"))); 457 model()->GetTemplateURLForKeyword(ASCIIToUTF16("test2")));
489 458
490 // They should override extension keywords added earlier. 459 // They should override extension keywords added earlier.
491 data.SetKeyword(ASCIIToUTF16("keyword3")); 460 data.SetKeyword(ASCIIToUTF16("keyword3"));
492 TemplateURL* extension3 = new TemplateURL(test_util_.profile(), data); 461 TemplateURL* extension3 = new TemplateURL(data);
493 model()->Add(extension3); 462 model()->Add(extension3);
494 ASSERT_EQ(extension3, 463 ASSERT_EQ(extension3,
495 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword3"))); 464 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword3")));
496 EXPECT_EQ(original3, 465 EXPECT_EQ(original3,
497 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword3_"))); 466 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword3_")));
498 } 467 }
499 468
500 TEST_F(TemplateURLServiceTest, AddSameKeywordWithExtensionPresent) { 469 TEST_F(TemplateURLServiceTest, AddSameKeywordWithExtensionPresent) {
501 test_util_.VerifyLoad(); 470 test_util_.VerifyLoad();
502 471
(...skipping 10 matching lines...) Expand all
513 "replaceable", "keyword", "http://test1", std::string(), std::string(), 482 "replaceable", "keyword", "http://test1", std::string(), std::string(),
514 std::string(), true, "UTF-8", Time(), Time()); 483 std::string(), true, "UTF-8", Time(), Time());
515 484
516 // Adding another replaceable keyword should remove the existing one, but 485 // Adding another replaceable keyword should remove the existing one, but
517 // leave the extension as is. 486 // leave the extension as is.
518 TemplateURLData data; 487 TemplateURLData data;
519 data.short_name = ASCIIToUTF16("name1"); 488 data.short_name = ASCIIToUTF16("name1");
520 data.SetKeyword(ASCIIToUTF16("keyword")); 489 data.SetKeyword(ASCIIToUTF16("keyword"));
521 data.SetURL("http://test3"); 490 data.SetURL("http://test3");
522 data.safe_for_autoreplace = true; 491 data.safe_for_autoreplace = true;
523 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 492 TemplateURL* t_url = new TemplateURL(data);
524 model()->Add(t_url); 493 model()->Add(t_url);
525 EXPECT_EQ(extension, 494 EXPECT_EQ(extension,
526 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword_"))); 495 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword_")));
527 EXPECT_TRUE(model()->GetTemplateURLForHost("test1") == NULL); 496 EXPECT_TRUE(model()->GetTemplateURLForHost("test1") == NULL);
528 EXPECT_EQ(t_url, model()->GetTemplateURLForHost("test3")); 497 EXPECT_EQ(t_url, model()->GetTemplateURLForHost("test3"));
529 498
530 // Adding a nonreplaceable keyword should remove the existing replaceable 499 // Adding a nonreplaceable keyword should remove the existing replaceable
531 // keyword. 500 // keyword.
532 data.short_name = ASCIIToUTF16("name2"); 501 data.short_name = ASCIIToUTF16("name2");
533 data.SetURL("http://test4"); 502 data.SetURL("http://test4");
534 data.safe_for_autoreplace = false; 503 data.safe_for_autoreplace = false;
535 TemplateURL* t_url2 = new TemplateURL(test_util_.profile(), data); 504 TemplateURL* t_url2 = new TemplateURL(data);
536 model()->Add(t_url2); 505 model()->Add(t_url2);
537 EXPECT_EQ(t_url2, 506 EXPECT_EQ(t_url2,
538 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 507 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
539 EXPECT_TRUE(model()->GetTemplateURLForHost("test3") == NULL); 508 EXPECT_TRUE(model()->GetTemplateURLForHost("test3") == NULL);
540 EXPECT_EQ(extension, 509 EXPECT_EQ(extension,
541 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword_"))); 510 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword_")));
542 } 511 }
543 512
544 TEST_F(TemplateURLServiceTest, GenerateKeyword) { 513 TEST_F(TemplateURLServiceTest, GenerateKeyword) {
545 ASSERT_EQ(ASCIIToUTF16("foo"), 514 ASSERT_EQ(ASCIIToUTF16("foo"),
546 TemplateURLService::GenerateKeyword(GURL("http://foo"))); 515 TemplateURLService::GenerateKeyword(GURL("http://foo")));
547 // www. should be stripped. 516 // www. should be stripped.
548 ASSERT_EQ(ASCIIToUTF16("foo"), 517 ASSERT_EQ(ASCIIToUTF16("foo"),
549 TemplateURLService::GenerateKeyword(GURL("http://www.foo"))); 518 TemplateURLService::GenerateKeyword(GURL("http://www.foo")));
550 // Make sure we don't get a trailing '/'. 519 // Make sure we don't get a trailing '/'.
551 ASSERT_EQ(ASCIIToUTF16("blah"), 520 ASSERT_EQ(ASCIIToUTF16("blah"),
552 TemplateURLService::GenerateKeyword(GURL("http://blah/"))); 521 TemplateURLService::GenerateKeyword(GURL("http://blah/")));
553 // Don't generate the empty string. 522 // Don't generate the empty string.
554 ASSERT_EQ(ASCIIToUTF16("www"), 523 ASSERT_EQ(ASCIIToUTF16("www"),
555 TemplateURLService::GenerateKeyword(GURL("http://www."))); 524 TemplateURLService::GenerateKeyword(GURL("http://www.")));
556 } 525 }
557 526
558 TEST_F(TemplateURLServiceTest, GenerateSearchURL) { 527 TEST_F(TemplateURLServiceTest, GenerateSearchURL) {
559 TestGenerateSearchURL(NULL); 528 TestSearchTermsData search_terms_data("http://google.com/");
560 }
561 529
562 TEST_F(TemplateURLServiceTest, GenerateSearchURLUsingTermsData) { 530 struct GenerateSearchURLCase {
563 // Run the test for GenerateSearchURLUsingTermsData on the "IO" thread and 531 const char* test_name;
564 // wait for it to finish. 532 const char* url;
565 TestSearchTermsData search_terms_data("http://google.com/"); 533 const char* expected;
566 TestGenerateSearchURL(&search_terms_data); 534 } generate_url_cases[] = {
535 { "invalid URL", "foo{searchTerms}", "" },
536 { "URL with no replacements", "http://foo/", "http://foo/" },
537 { "basic functionality", "http://foo/{searchTerms}",
538 "http://foo/blah.blah.blah.blah.blah" }
539 };
540
541 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) {
542 TemplateURLData data;
543 data.SetURL(generate_url_cases[i].url);
544 TemplateURL t_url(data);
545 std::string result = TemplateURLService::GenerateSearchURL(
546 &t_url, search_terms_data).spec();
547 EXPECT_EQ(result, generate_url_cases[i].expected)
548 << generate_url_cases[i].test_name << " failed.";
549 }
567 } 550 }
568 551
569 TEST_F(TemplateURLServiceTest, ClearBrowsingData_Keywords) { 552 TEST_F(TemplateURLServiceTest, ClearBrowsingData_Keywords) {
570 Time now = Time::Now(); 553 Time now = Time::Now();
571 TimeDelta one_day = TimeDelta::FromDays(1); 554 TimeDelta one_day = TimeDelta::FromDays(1);
572 Time month_ago = now - TimeDelta::FromDays(30); 555 Time month_ago = now - TimeDelta::FromDays(30);
573 556
574 // Nothing has been added. 557 // Nothing has been added.
575 EXPECT_EQ(0U, model()->GetTemplateURLs().size()); 558 EXPECT_EQ(0U, model()->GetTemplateURLs().size());
576 559
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 // Add a new TemplateURL. 667 // Add a new TemplateURL.
685 test_util_.VerifyLoad(); 668 test_util_.VerifyLoad();
686 const size_t initial_count = model()->GetTemplateURLs().size(); 669 const size_t initial_count = model()->GetTemplateURLs().size();
687 TemplateURLData data; 670 TemplateURLData data;
688 data.short_name = ASCIIToUTF16("google"); 671 data.short_name = ASCIIToUTF16("google");
689 data.SetKeyword(ASCIIToUTF16("keyword")); 672 data.SetKeyword(ASCIIToUTF16("keyword"));
690 data.SetURL("http://www.google.com/foo/bar"); 673 data.SetURL("http://www.google.com/foo/bar");
691 data.favicon_url = GURL("http://favicon.url"); 674 data.favicon_url = GURL("http://favicon.url");
692 data.date_created = Time::FromTimeT(100); 675 data.date_created = Time::FromTimeT(100);
693 data.last_modified = Time::FromTimeT(100); 676 data.last_modified = Time::FromTimeT(100);
694 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 677 TemplateURL* t_url = new TemplateURL(data);
695 model()->Add(t_url); 678 model()->Add(t_url);
696 679
697 VerifyObserverCount(1); 680 VerifyObserverCount(1);
698 base::RunLoop().RunUntilIdle(); 681 base::RunLoop().RunUntilIdle();
699 682
700 StrictMock<base::MockTimeProvider> mock_time; 683 StrictMock<base::MockTimeProvider> mock_time;
701 model()->set_time_provider(&base::MockTimeProvider::StaticNow); 684 model()->set_time_provider(&base::MockTimeProvider::StaticNow);
702 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337))); 685 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337)));
703 686
704 // Reset the short name, keyword, url and make sure it takes. 687 // Reset the short name, keyword, url and make sure it takes.
705 const base::string16 new_short_name(ASCIIToUTF16("a")); 688 const base::string16 new_short_name(ASCIIToUTF16("a"));
706 const base::string16 new_keyword(ASCIIToUTF16("b")); 689 const base::string16 new_keyword(ASCIIToUTF16("b"));
707 const std::string new_url("c"); 690 const std::string new_url("c");
708 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url); 691 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url);
709 ASSERT_EQ(new_short_name, t_url->short_name()); 692 ASSERT_EQ(new_short_name, t_url->short_name());
710 ASSERT_EQ(new_keyword, t_url->keyword()); 693 ASSERT_EQ(new_keyword, t_url->keyword());
711 ASSERT_EQ(new_url, t_url->url()); 694 ASSERT_EQ(new_url, t_url->url());
712 695
713 // Make sure the mappings in the model were updated. 696 // Make sure the mappings in the model were updated.
714 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword)); 697 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword));
715 ASSERT_TRUE( 698 ASSERT_TRUE(
716 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL); 699 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL);
717 700
718 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 701 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
719 t_url->data()));
720 702
721 // Reload the model from the database and make sure the change took. 703 // Reload the model from the database and make sure the change took.
722 test_util_.ResetModel(true); 704 test_util_.ResetModel(true);
723 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 705 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
724 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword); 706 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword);
725 ASSERT_TRUE(read_url); 707 ASSERT_TRUE(read_url);
726 AssertEquals(*cloned_url, *read_url); 708 AssertEquals(*cloned_url, *read_url);
727 ASSERT_EQ(base::Time::FromDoubleT(1337), read_url->last_modified()); 709 ASSERT_EQ(base::Time::FromDoubleT(1337), read_url->last_modified());
728 } 710 }
729 711
730 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) { 712 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) {
731 // Add a new TemplateURL. 713 // Add a new TemplateURL.
732 test_util_.VerifyLoad(); 714 test_util_.VerifyLoad();
733 const size_t initial_count = model()->GetTemplateURLs().size(); 715 const size_t initial_count = model()->GetTemplateURLs().size();
734 TemplateURL* t_url = AddKeywordWithDate( 716 TemplateURL* t_url = AddKeywordWithDate(
735 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1", 717 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1",
736 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time()); 718 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time());
737 test_util_.ResetObserverCount(); 719 test_util_.ResetObserverCount();
738 720
739 model()->SetUserSelectedDefaultSearchProvider(t_url); 721 model()->SetUserSelectedDefaultSearchProvider(t_url);
740 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 722 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
741 ASSERT_TRUE(t_url->safe_for_autoreplace()); 723 ASSERT_TRUE(t_url->safe_for_autoreplace());
742 ASSERT_TRUE(t_url->show_in_default_list()); 724 ASSERT_TRUE(t_url->show_in_default_list());
743 725
744 // Setting the default search provider should have caused notification. 726 // Setting the default search provider should have caused notification.
745 VerifyObserverCount(1); 727 VerifyObserverCount(1);
746 base::RunLoop().RunUntilIdle(); 728 base::RunLoop().RunUntilIdle();
747 729
748 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 730 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
749 t_url->data()));
750 731
751 // Make sure when we reload we get a default search provider. 732 // Make sure when we reload we get a default search provider.
752 test_util_.ResetModel(true); 733 test_util_.ResetModel(true);
753 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 734 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
754 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 735 ASSERT_TRUE(model()->GetDefaultSearchProvider());
755 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider()); 736 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider());
756 } 737 }
757 738
758 TEST_F(TemplateURLServiceTest, CantReplaceWithSameKeyword) { 739 TEST_F(TemplateURLServiceTest, CantReplaceWithSameKeyword) {
759 test_util_.ChangeModelToLoadState(); 740 test_util_.ChangeModelToLoadState();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 test_util_.VerifyLoad(); 791 test_util_.VerifyLoad();
811 792
812 TemplateURLData data; 793 TemplateURLData data;
813 data.short_name = ASCIIToUTF16("a"); 794 data.short_name = ASCIIToUTF16("a");
814 data.safe_for_autoreplace = true; 795 data.safe_for_autoreplace = true;
815 data.SetURL("http://url/{searchTerms}"); 796 data.SetURL("http://url/{searchTerms}");
816 data.suggestions_url = "http://url2"; 797 data.suggestions_url = "http://url2";
817 data.instant_url = "http://instant"; 798 data.instant_url = "http://instant";
818 data.date_created = Time::FromTimeT(100); 799 data.date_created = Time::FromTimeT(100);
819 data.last_modified = Time::FromTimeT(100); 800 data.last_modified = Time::FromTimeT(100);
820 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 801 TemplateURL* t_url = new TemplateURL(data);
821 model()->Add(t_url); 802 model()->Add(t_url);
822 const TemplateURLID id = t_url->id(); 803 const TemplateURLID id = t_url->id();
823 804
824 model()->SetUserSelectedDefaultSearchProvider(t_url); 805 model()->SetUserSelectedDefaultSearchProvider(t_url);
825 base::RunLoop().RunUntilIdle(); 806 base::RunLoop().RunUntilIdle();
826 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 807 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
827 t_url->data()));
828 808
829 // Reset the model and don't load it. The template url we set as the default 809 // Reset the model and don't load it. The template url we set as the default
830 // should be pulled from prefs now. 810 // should be pulled from prefs now.
831 test_util_.ResetModel(false); 811 test_util_.ResetModel(false);
832 812
833 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs 813 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs
834 // value are persisted to prefs. 814 // value are persisted to prefs.
835 const TemplateURL* default_turl = model()->GetDefaultSearchProvider(); 815 const TemplateURL* default_turl = model()->GetDefaultSearchProvider();
836 ASSERT_TRUE(default_turl); 816 ASSERT_TRUE(default_turl);
837 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name()); 817 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 model()->RegisterOmniboxKeyword("abcdefg", "extension_name", "bing.com"); 858 model()->RegisterOmniboxKeyword("abcdefg", "extension_name", "bing.com");
879 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("bing.com"))); 859 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("bing.com")));
880 860
881 model()->RepairPrepopulatedSearchEngines(); 861 model()->RepairPrepopulatedSearchEngines();
882 862
883 // Google is default. 863 // Google is default.
884 ASSERT_EQ(google, model()->GetDefaultSearchProvider()); 864 ASSERT_EQ(google, model()->GetDefaultSearchProvider());
885 // The keyword wasn't reverted. 865 // The keyword wasn't reverted.
886 EXPECT_EQ(ASCIIToUTF16("trash"), google->short_name()); 866 EXPECT_EQ(ASCIIToUTF16("trash"), google->short_name());
887 EXPECT_EQ("www.google.com", 867 EXPECT_EQ("www.google.com",
888 TemplateURLService::GenerateSearchURL(google).host()); 868 TemplateURLService::GenerateSearchURL(
869 google, model()->search_terms_data()).host());
889 870
890 // Bing was repaired. 871 // Bing was repaired.
891 bing = model()->GetTemplateURLForKeyword(ASCIIToUTF16("bing.com")); 872 bing = model()->GetTemplateURLForKeyword(ASCIIToUTF16("bing.com"));
892 ASSERT_TRUE(bing); 873 ASSERT_TRUE(bing);
893 EXPECT_EQ(TemplateURL::NORMAL, bing->GetType()); 874 EXPECT_EQ(TemplateURL::NORMAL, bing->GetType());
894 875
895 // User search engine is preserved. 876 // User search engine is preserved.
896 EXPECT_EQ(user_dse, model()->GetTemplateURLForHost("www.goo.com")); 877 EXPECT_EQ(user_dse, model()->GetTemplateURLForHost("www.goo.com"));
897 EXPECT_EQ(ASCIIToUTF16("google.com"), user_dse->keyword()); 878 EXPECT_EQ(ASCIIToUTF16("google.com"), user_dse->keyword());
898 } 879 }
(...skipping 16 matching lines...) Expand all
915 // Verify that the default manager we are getting is the managed one. 896 // Verify that the default manager we are getting is the managed one.
916 TemplateURLData data; 897 TemplateURLData data;
917 data.short_name = ASCIIToUTF16(kName); 898 data.short_name = ASCIIToUTF16(kName);
918 data.SetKeyword(ASCIIToUTF16(kKeyword)); 899 data.SetKeyword(ASCIIToUTF16(kKeyword));
919 data.SetURL(kSearchURL); 900 data.SetURL(kSearchURL);
920 data.favicon_url = GURL(kIconURL); 901 data.favicon_url = GURL(kIconURL);
921 data.show_in_default_list = true; 902 data.show_in_default_list = true;
922 base::SplitString(kEncodings, ';', &data.input_encodings); 903 base::SplitString(kEncodings, ';', &data.input_encodings);
923 data.alternate_urls.push_back(kAlternateURL); 904 data.alternate_urls.push_back(kAlternateURL);
924 data.search_terms_replacement_key = kSearchTermsReplacementKey; 905 data.search_terms_replacement_key = kSearchTermsReplacementKey;
925 scoped_ptr<TemplateURL> expected_managed_default(new TemplateURL( 906 scoped_ptr<TemplateURL> expected_managed_default(new TemplateURL(data));
926 test_util_.profile(), data));
927 EXPECT_TRUE(model()->is_default_search_managed()); 907 EXPECT_TRUE(model()->is_default_search_managed());
928 const TemplateURL* actual_managed_default = 908 const TemplateURL* actual_managed_default =
929 model()->GetDefaultSearchProvider(); 909 model()->GetDefaultSearchProvider();
930 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 910 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
931 911
932 // The following call has no effect on the managed search engine. 912 // The following call has no effect on the managed search engine.
933 model()->RepairPrepopulatedSearchEngines(); 913 model()->RepairPrepopulatedSearchEngines();
934 914
935 EXPECT_TRUE(model()->is_default_search_managed()); 915 EXPECT_TRUE(model()->is_default_search_managed());
936 actual_managed_default = model()->GetDefaultSearchProvider(); 916 actual_managed_default = model()->GetDefaultSearchProvider();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 1103
1124 // Make sure that load routine doesn't delete prepopulated engines that no 1104 // Make sure that load routine doesn't delete prepopulated engines that no
1125 // longer exist in the prepopulate data if it has been modified by the user. 1105 // longer exist in the prepopulate data if it has been modified by the user.
1126 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { 1106 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) {
1127 // Create a preloaded template url and add it to a loaded model. 1107 // Create a preloaded template url and add it to a loaded model.
1128 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999); 1108 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999);
1129 test_util_.ChangeModelToLoadState(); 1109 test_util_.ChangeModelToLoadState();
1130 model()->Add(t_url); 1110 model()->Add(t_url);
1131 1111
1132 // Do the copy after t_url is added so that the id is set. 1112 // Do the copy after t_url is added so that the id is set.
1133 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 1113 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
1134 t_url->data()));
1135 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1114 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1136 1115
1137 // Wait for any saves to finish. 1116 // Wait for any saves to finish.
1138 base::RunLoop().RunUntilIdle(); 1117 base::RunLoop().RunUntilIdle();
1139 1118
1140 // Ensure that merging won't clear it if the user has edited it. 1119 // Ensure that merging won't clear it if the user has edited it.
1141 test_util_.ResetModel(true); 1120 test_util_.ResetModel(true);
1142 const TemplateURL* url_for_unittest = 1121 const TemplateURL* url_for_unittest =
1143 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 1122 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
1144 ASSERT_TRUE(url_for_unittest != NULL); 1123 ASSERT_TRUE(url_for_unittest != NULL);
1145 AssertEquals(*cloned_url, *url_for_unittest); 1124 AssertEquals(*cloned_url, *url_for_unittest);
1146 1125
1147 // Wait for any saves to finish. 1126 // Wait for any saves to finish.
1148 base::RunLoop().RunUntilIdle(); 1127 base::RunLoop().RunUntilIdle();
1149 1128
1150 // Reload the model to verify that save/reload retains the item. 1129 // Reload the model to verify that save/reload retains the item.
1151 test_util_.ResetModel(true); 1130 test_util_.ResetModel(true);
1152 ASSERT_TRUE( 1131 ASSERT_TRUE(
1153 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); 1132 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
1154 } 1133 }
1155 1134
1156 // Make sure that load routine doesn't delete 1135 // Make sure that load routine doesn't delete
1157 // prepopulated engines that no longer exist in the prepopulate data if 1136 // prepopulated engines that no longer exist in the prepopulate data if
1158 // it has been modified by the user. 1137 // it has been modified by the user.
1159 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) { 1138 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) {
1160 test_util_.VerifyLoad(); 1139 test_util_.VerifyLoad();
1161 // Verify that the default search provider is set to something. 1140 // Verify that the default search provider is set to something.
1162 TemplateURL* default_search = model()->GetDefaultSearchProvider(); 1141 TemplateURL* default_search = model()->GetDefaultSearchProvider();
1163 ASSERT_TRUE(default_search != NULL); 1142 ASSERT_TRUE(default_search != NULL);
1164 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(default_search->profile(), 1143 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(default_search->data()));
1165 default_search->data()));
1166 1144
1167 // Wait for any saves to finish. 1145 // Wait for any saves to finish.
1168 base::RunLoop().RunUntilIdle(); 1146 base::RunLoop().RunUntilIdle();
1169 1147
1170 // Reload the model and check that the default search provider 1148 // Reload the model and check that the default search provider
1171 // was properly saved. 1149 // was properly saved.
1172 test_util_.ResetModel(true); 1150 test_util_.ResetModel(true);
1173 default_search = model()->GetDefaultSearchProvider(); 1151 default_search = model()->GetDefaultSearchProvider();
1174 ASSERT_TRUE(default_search != NULL); 1152 ASSERT_TRUE(default_search != NULL);
1175 AssertEquals(*cloned_url, *default_search); 1153 AssertEquals(*cloned_url, *default_search);
1176 } 1154 }
1177 1155
1178 // Make sure that the load routine doesn't delete 1156 // Make sure that the load routine doesn't delete
1179 // prepopulated engines that no longer exist in the prepopulate data if 1157 // prepopulated engines that no longer exist in the prepopulate data if
1180 // it is the default search provider. 1158 // it is the default search provider.
1181 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) { 1159 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) {
1182 // Set the default search provider to a preloaded template url which 1160 // Set the default search provider to a preloaded template url which
1183 // is not in the current set of preloaded template urls and save 1161 // is not in the current set of preloaded template urls and save
1184 // the result. 1162 // the result.
1185 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999); 1163 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
1186 test_util_.ChangeModelToLoadState(); 1164 test_util_.ChangeModelToLoadState();
1187 model()->Add(t_url); 1165 model()->Add(t_url);
1188 model()->SetUserSelectedDefaultSearchProvider(t_url); 1166 model()->SetUserSelectedDefaultSearchProvider(t_url);
1189 // Do the copy after t_url is added and set as default so that its 1167 // Do the copy after t_url is added and set as default so that its
1190 // internal state is correct. 1168 // internal state is correct.
1191 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(), 1169 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
1192 t_url->data()));
1193 1170
1194 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1171 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1195 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 1172 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
1196 base::RunLoop().RunUntilIdle(); 1173 base::RunLoop().RunUntilIdle();
1197 1174
1198 // Ensure that merging won't clear the prepopulated template url 1175 // Ensure that merging won't clear the prepopulated template url
1199 // which is no longer present if it's the default engine. 1176 // which is no longer present if it's the default engine.
1200 test_util_.ResetModel(true); 1177 test_util_.ResetModel(true);
1201 { 1178 {
1202 const TemplateURL* keyword_url = 1179 const TemplateURL* keyword_url =
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1300 // Verify that the default manager we are getting is the managed one. 1277 // Verify that the default manager we are getting is the managed one.
1301 TemplateURLData data; 1278 TemplateURLData data;
1302 data.short_name = ASCIIToUTF16(kName); 1279 data.short_name = ASCIIToUTF16(kName);
1303 data.SetKeyword(ASCIIToUTF16(kKeyword)); 1280 data.SetKeyword(ASCIIToUTF16(kKeyword));
1304 data.SetURL(kSearchURL); 1281 data.SetURL(kSearchURL);
1305 data.favicon_url = GURL(kIconURL); 1282 data.favicon_url = GURL(kIconURL);
1306 data.show_in_default_list = true; 1283 data.show_in_default_list = true;
1307 base::SplitString(kEncodings, ';', &data.input_encodings); 1284 base::SplitString(kEncodings, ';', &data.input_encodings);
1308 data.alternate_urls.push_back(kAlternateURL); 1285 data.alternate_urls.push_back(kAlternateURL);
1309 data.search_terms_replacement_key = kSearchTermsReplacementKey; 1286 data.search_terms_replacement_key = kSearchTermsReplacementKey;
1310 Profile* profile = test_util_.profile(); 1287 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL(data));
1311 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL(profile,
1312 data));
1313 const TemplateURL* actual_managed_default = 1288 const TemplateURL* actual_managed_default =
1314 model()->GetDefaultSearchProvider(); 1289 model()->GetDefaultSearchProvider();
1315 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); 1290 ExpectSimilar(expected_managed_default1.get(), actual_managed_default);
1316 EXPECT_TRUE(actual_managed_default->show_in_default_list()); 1291 EXPECT_TRUE(actual_managed_default->show_in_default_list());
1317 1292
1318 // Update the managed preference and check that the model has changed. 1293 // Update the managed preference and check that the model has changed.
1319 const char kNewName[] = "test2"; 1294 const char kNewName[] = "test2";
1320 const char kNewKeyword[] = "other.com"; 1295 const char kNewKeyword[] = "other.com";
1321 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; 1296 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}";
1322 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; 1297 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}";
1323 test_util_.SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword, 1298 test_util_.SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword,
1324 kNewSearchURL, kNewSuggestURL, std::string(), std::string(), 1299 kNewSearchURL, kNewSuggestURL, std::string(), std::string(),
1325 std::string(), std::string()); 1300 std::string(), std::string());
1326 VerifyObserverFired(); 1301 VerifyObserverFired();
1327 EXPECT_TRUE(model()->is_default_search_managed()); 1302 EXPECT_TRUE(model()->is_default_search_managed());
1328 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); 1303 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size());
1329 1304
1330 // Verify that the default manager we are now getting is the correct one. 1305 // Verify that the default manager we are now getting is the correct one.
1331 TemplateURLData data2; 1306 TemplateURLData data2;
1332 data2.short_name = ASCIIToUTF16(kNewName); 1307 data2.short_name = ASCIIToUTF16(kNewName);
1333 data2.SetKeyword(ASCIIToUTF16(kNewKeyword)); 1308 data2.SetKeyword(ASCIIToUTF16(kNewKeyword));
1334 data2.SetURL(kNewSearchURL); 1309 data2.SetURL(kNewSearchURL);
1335 data2.suggestions_url = kNewSuggestURL; 1310 data2.suggestions_url = kNewSuggestURL;
1336 data2.show_in_default_list = true; 1311 data2.show_in_default_list = true;
1337 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL(profile, 1312 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL(data2));
1338 data2));
1339 actual_managed_default = model()->GetDefaultSearchProvider(); 1313 actual_managed_default = model()->GetDefaultSearchProvider();
1340 ExpectSimilar(expected_managed_default2.get(), actual_managed_default); 1314 ExpectSimilar(expected_managed_default2.get(), actual_managed_default);
1341 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); 1315 EXPECT_EQ(actual_managed_default->show_in_default_list(), true);
1342 1316
1343 // Remove all the managed prefs and check that we are no longer managed. 1317 // Remove all the managed prefs and check that we are no longer managed.
1344 test_util_.RemoveManagedDefaultSearchPreferences(); 1318 test_util_.RemoveManagedDefaultSearchPreferences();
1345 VerifyObserverFired(); 1319 VerifyObserverFired();
1346 EXPECT_FALSE(model()->is_default_search_managed()); 1320 EXPECT_FALSE(model()->is_default_search_managed());
1347 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1321 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1348 1322
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1402 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) { 1376 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) {
1403 // Add a new TemplateURL. 1377 // Add a new TemplateURL.
1404 test_util_.VerifyLoad(); 1378 test_util_.VerifyLoad();
1405 const size_t initial_count = model()->GetTemplateURLs().size(); 1379 const size_t initial_count = model()->GetTemplateURLs().size();
1406 1380
1407 TemplateURLData data; 1381 TemplateURLData data;
1408 data.short_name = ASCIIToUTF16("google"); 1382 data.short_name = ASCIIToUTF16("google");
1409 data.SetKeyword(ASCIIToUTF16("keyword")); 1383 data.SetKeyword(ASCIIToUTF16("keyword"));
1410 data.SetURL("http://www.google.com/foo/bar"); 1384 data.SetURL("http://www.google.com/foo/bar");
1411 data.sync_guid.clear(); 1385 data.sync_guid.clear();
1412 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 1386 TemplateURL* t_url = new TemplateURL(data);
1413 model()->Add(t_url); 1387 model()->Add(t_url);
1414 1388
1415 VerifyObserverCount(1); 1389 VerifyObserverCount(1);
1416 base::RunLoop().RunUntilIdle(); 1390 base::RunLoop().RunUntilIdle();
1417 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1391 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1418 1392
1419 // Reload the model to verify it was actually saved to the database and 1393 // Reload the model to verify it was actually saved to the database and
1420 // assigned a new GUID when brought back. 1394 // assigned a new GUID when brought back.
1421 test_util_.ResetModel(true); 1395 test_util_.ResetModel(true);
1422 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1396 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
(...skipping 16 matching lines...) Expand all
1439 data.SetURL("http://www.google.com/foo/bar"); 1413 data.SetURL("http://www.google.com/foo/bar");
1440 std::vector<std::string> encodings; 1414 std::vector<std::string> encodings;
1441 data.input_encodings.push_back("UTF-8"); 1415 data.input_encodings.push_back("UTF-8");
1442 data.input_encodings.push_back("UTF-8"); 1416 data.input_encodings.push_back("UTF-8");
1443 data.input_encodings.push_back("UTF-16"); 1417 data.input_encodings.push_back("UTF-16");
1444 data.input_encodings.push_back("UTF-8"); 1418 data.input_encodings.push_back("UTF-8");
1445 data.input_encodings.push_back("Big5"); 1419 data.input_encodings.push_back("Big5");
1446 data.input_encodings.push_back("UTF-16"); 1420 data.input_encodings.push_back("UTF-16");
1447 data.input_encodings.push_back("Big5"); 1421 data.input_encodings.push_back("Big5");
1448 data.input_encodings.push_back("Windows-1252"); 1422 data.input_encodings.push_back("Windows-1252");
1449 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data); 1423 TemplateURL* t_url = new TemplateURL(data);
1450 model()->Add(t_url); 1424 model()->Add(t_url);
1451 1425
1452 VerifyObserverCount(1); 1426 VerifyObserverCount(1);
1453 base::RunLoop().RunUntilIdle(); 1427 base::RunLoop().RunUntilIdle();
1454 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1428 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1455 const TemplateURL* loaded_url = 1429 const TemplateURL* loaded_url =
1456 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1430 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1457 ASSERT_TRUE(loaded_url != NULL); 1431 ASSERT_TRUE(loaded_url != NULL);
1458 EXPECT_EQ(8U, loaded_url->input_encodings().size()); 1432 EXPECT_EQ(8U, loaded_url->input_encodings().size());
1459 1433
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 // Verify that the default manager we are getting is the managed one. 1519 // Verify that the default manager we are getting is the managed one.
1546 TemplateURLData data; 1520 TemplateURLData data;
1547 data.short_name = ASCIIToUTF16(kName); 1521 data.short_name = ASCIIToUTF16(kName);
1548 data.SetKeyword(ASCIIToUTF16(kKeyword)); 1522 data.SetKeyword(ASCIIToUTF16(kKeyword));
1549 data.SetURL(kSearchURL); 1523 data.SetURL(kSearchURL);
1550 data.favicon_url = GURL(kIconURL); 1524 data.favicon_url = GURL(kIconURL);
1551 data.show_in_default_list = true; 1525 data.show_in_default_list = true;
1552 base::SplitString(kEncodings, ';', &data.input_encodings); 1526 base::SplitString(kEncodings, ';', &data.input_encodings);
1553 data.alternate_urls.push_back(kAlternateURL); 1527 data.alternate_urls.push_back(kAlternateURL);
1554 data.search_terms_replacement_key = kSearchTermsReplacementKey; 1528 data.search_terms_replacement_key = kSearchTermsReplacementKey;
1555 scoped_ptr<TemplateURL> expected_managed_default(new TemplateURL( 1529 scoped_ptr<TemplateURL> expected_managed_default(new TemplateURL(data));
1556 test_util_.profile(), data));
1557 EXPECT_TRUE(model()->is_default_search_managed()); 1530 EXPECT_TRUE(model()->is_default_search_managed());
1558 const TemplateURL* actual_managed_default = 1531 const TemplateURL* actual_managed_default =
1559 model()->GetDefaultSearchProvider(); 1532 model()->GetDefaultSearchProvider();
1560 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1533 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1561 1534
1562 TemplateURL* ext_dse = CreateKeywordWithDate( 1535 TemplateURL* ext_dse = CreateKeywordWithDate(
1563 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1536 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1564 std::string(), std::string(), std::string(), 1537 std::string(), std::string(), std::string(),
1565 true, true, "UTF-8", Time(), Time()); 1538 true, true, "UTF-8", Time(), Time());
1566 scoped_ptr<AssociatedExtensionInfo> extension_info( 1539 scoped_ptr<AssociatedExtensionInfo> extension_info(
1567 new AssociatedExtensionInfo); 1540 new AssociatedExtensionInfo);
1568 extension_info->wants_to_be_default_engine = true; 1541 extension_info->wants_to_be_default_engine = true;
1569 extension_info->extension_id = "ext1"; 1542 extension_info->extension_id = "ext1";
1570 model()->AddExtensionControlledTURL(ext_dse, extension_info.Pass()); 1543 model()->AddExtensionControlledTURL(ext_dse, extension_info.Pass());
1571 EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1544 EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1572 EXPECT_TRUE(model()->is_default_search_managed()); 1545 EXPECT_TRUE(model()->is_default_search_managed());
1573 actual_managed_default = model()->GetDefaultSearchProvider(); 1546 actual_managed_default = model()->GetDefaultSearchProvider();
1574 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1547 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1575 } 1548 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698