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

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

Issue 10173001: Add a Profile* member to TemplateURL. This makes some invocations of ReplaceSearchTerms() a bit le… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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/string_split.h" 10 #include "base/string_split.h"
(...skipping 15 matching lines...) Expand all
26 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
27 27
28 using base::Time; 28 using base::Time;
29 using base::TimeDelta; 29 using base::TimeDelta;
30 using content::BrowserThread; 30 using content::BrowserThread;
31 using ::testing::Return; 31 using ::testing::Return;
32 using ::testing::StrictMock; 32 using ::testing::StrictMock;
33 33
34 namespace { 34 namespace {
35 35
36 // Create an URL that appears to have been prepopulated, but won't be in the
37 // current data. The caller owns the returned TemplateURL*.
38 TemplateURL* CreatePreloadedTemplateURL(bool safe_for_autoreplace,
39 int prepopulate_id) {
40 TemplateURLData data;
41 data.short_name = ASCIIToUTF16("unittest");
42 data.SetKeyword(ASCIIToUTF16("unittest"));
43 data.SetURL("http://www.unittest.com/{searchTerms}");
44 data.favicon_url = GURL("http://favicon.url");
45 data.show_in_default_list = true;
46 data.safe_for_autoreplace = safe_for_autoreplace;
47 data.input_encodings.push_back("UTF-8");
48 data.date_created = Time::FromTimeT(100);
49 data.last_modified = Time::FromTimeT(100);
50 data.prepopulate_id = prepopulate_id;
51 return new TemplateURL(data);
52 }
53
54
55 // TestGenerateSearchURL ------------------------------------------------------ 36 // TestGenerateSearchURL ------------------------------------------------------
56 37
57 // Test the GenerateSearchURL on a thread or the main thread. 38 // Test the GenerateSearchURL on a thread or the main thread.
58 class TestGenerateSearchURL 39 class TestGenerateSearchURL
59 : public base::RefCountedThreadSafe<TestGenerateSearchURL> { 40 : public base::RefCountedThreadSafe<TestGenerateSearchURL> {
60 public: 41 public:
61 explicit TestGenerateSearchURL(SearchTermsData* search_terms_data); 42 explicit TestGenerateSearchURL(SearchTermsData* search_terms_data);
62 43
63 // Run the test cases for GenerateSearchURL. 44 // Run the test cases for GenerateSearchURL.
64 void RunTest(); 45 void RunTest();
(...skipping 28 matching lines...) Expand all
93 "http://foo/blah.blah.blah.blah.blah" } 74 "http://foo/blah.blah.blah.blah.blah" }
94 }; 75 };
95 76
96 // Don't use ASSERT/EXPECT since this is run on a thread in one test 77 // Don't use ASSERT/EXPECT since this is run on a thread in one test
97 // and those macros aren't meant for threads at this time according to 78 // and those macros aren't meant for threads at this time according to
98 // gtest documentation. 79 // gtest documentation.
99 bool everything_passed = true; 80 bool everything_passed = true;
100 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) { 81 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generate_url_cases); ++i) {
101 TemplateURLData data; 82 TemplateURLData data;
102 data.SetURL(generate_url_cases[i].url); 83 data.SetURL(generate_url_cases[i].url);
103 TemplateURL t_url(data); 84 TemplateURL t_url(NULL, data);
104 std::string result = (search_terms_data_ ? 85 std::string result = (search_terms_data_ ?
105 TemplateURLService::GenerateSearchURLUsingTermsData(&t_url, 86 TemplateURLService::GenerateSearchURLUsingTermsData(&t_url,
106 *search_terms_data_) : 87 *search_terms_data_) :
107 TemplateURLService::GenerateSearchURL(&t_url)).spec(); 88 TemplateURLService::GenerateSearchURL(&t_url)).spec();
108 if (result != generate_url_cases[i].expected) { 89 if (result != generate_url_cases[i].expected) {
109 LOG(ERROR) << generate_url_cases[i].test_name << " failed. Expected " << 90 LOG(ERROR) << generate_url_cases[i].test_name << " failed. Expected " <<
110 generate_url_cases[i].expected << " Actual " << result; 91 generate_url_cases[i].expected << " Actual " << result;
111 everything_passed = false; 92 everything_passed = false;
112 } 93 }
113 } 94 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 Time date_created, 146 Time date_created,
166 Time last_modified); 147 Time last_modified);
167 148
168 // Verifies the two TemplateURLs are equal. 149 // Verifies the two TemplateURLs are equal.
169 void AssertEquals(const TemplateURL& expected, const TemplateURL& actual); 150 void AssertEquals(const TemplateURL& expected, const TemplateURL& actual);
170 151
171 // Checks that the two TemplateURLs are similar. It does not check the id, the 152 // Checks that the two TemplateURLs are similar. It does not check the id, the
172 // date_created or the last_modified time. Neither pointer should be NULL. 153 // date_created or the last_modified time. Neither pointer should be NULL.
173 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual); 154 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual);
174 155
156 // Create an URL that appears to have been prepopulated, but won't be in the
157 // current data. The caller owns the returned TemplateURL*.
158 TemplateURL* CreatePreloadedTemplateURL(bool safe_for_autoreplace,
159 int prepopulate_id);
160
175 // Creates a TemplateURL with the same prepopulated id as a real prepopulated 161 // Creates a TemplateURL with the same prepopulated id as a real prepopulated
176 // item. The input number determines which prepopulated item. The caller is 162 // item. The input number determines which prepopulated item. The caller is
177 // responsible for owning the returned TemplateURL*. 163 // responsible for owning the returned TemplateURL*.
178 TemplateURL* CreateReplaceablePreloadedTemplateURL( 164 TemplateURL* CreateReplaceablePreloadedTemplateURL(
179 bool safe_for_autoreplace, 165 bool safe_for_autoreplace,
180 size_t index_offset_from_default, 166 size_t index_offset_from_default,
181 string16* prepopulated_display_url); 167 string16* prepopulated_display_url);
182 168
183 // Verifies the behavior of when a preloaded url later gets changed. 169 // Verifies the behavior of when a preloaded url later gets changed.
184 // Since the input is the offset from the default, when one passes in 170 // Since the input is the offset from the default, when one passes in
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 data.short_name = UTF8ToUTF16(short_name); 210 data.short_name = UTF8ToUTF16(short_name);
225 data.SetKeyword(UTF8ToUTF16(keyword)); 211 data.SetKeyword(UTF8ToUTF16(keyword));
226 data.SetAutogenerateKeyword(autogenerate_keyword); 212 data.SetAutogenerateKeyword(autogenerate_keyword);
227 data.SetURL(url); 213 data.SetURL(url);
228 data.suggestions_url = suggest_url; 214 data.suggestions_url = suggest_url;
229 data.favicon_url = GURL(favicon_url); 215 data.favicon_url = GURL(favicon_url);
230 data.safe_for_autoreplace = safe_for_autoreplace; 216 data.safe_for_autoreplace = safe_for_autoreplace;
231 base::SplitString(encodings, ';', &data.input_encodings); 217 base::SplitString(encodings, ';', &data.input_encodings);
232 data.date_created = date_created; 218 data.date_created = date_created;
233 data.last_modified = last_modified; 219 data.last_modified = last_modified;
234 TemplateURL* t_url = new TemplateURL(data); 220 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
235 model()->Add(t_url); 221 model()->Add(t_url);
236 EXPECT_NE(0, t_url->id()); 222 EXPECT_NE(0, t_url->id());
237 return t_url; 223 return t_url;
238 } 224 }
239 225
240 void TemplateURLServiceTest::AssertEquals(const TemplateURL& expected, 226 void TemplateURLServiceTest::AssertEquals(const TemplateURL& expected,
241 const TemplateURL& actual) { 227 const TemplateURL& actual) {
242 ASSERT_EQ(expected.short_name(), actual.short_name()); 228 ASSERT_EQ(expected.short_name(), actual.short_name());
243 ASSERT_EQ(expected.keyword(), actual.keyword()); 229 ASSERT_EQ(expected.keyword(), actual.keyword());
244 ASSERT_EQ(expected.url(), actual.url()); 230 ASSERT_EQ(expected.url(), actual.url());
(...skipping 15 matching lines...) Expand all
260 EXPECT_EQ(expected->short_name(), actual->short_name()); 246 EXPECT_EQ(expected->short_name(), actual->short_name());
261 EXPECT_EQ(expected->keyword(), actual->keyword()); 247 EXPECT_EQ(expected->keyword(), actual->keyword());
262 EXPECT_EQ(expected->url(), actual->url()); 248 EXPECT_EQ(expected->url(), actual->url());
263 EXPECT_EQ(expected->suggestions_url(), actual->suggestions_url()); 249 EXPECT_EQ(expected->suggestions_url(), actual->suggestions_url());
264 EXPECT_EQ(expected->favicon_url(), actual->favicon_url()); 250 EXPECT_EQ(expected->favicon_url(), actual->favicon_url());
265 EXPECT_EQ(expected->show_in_default_list(), actual->show_in_default_list()); 251 EXPECT_EQ(expected->show_in_default_list(), actual->show_in_default_list());
266 EXPECT_EQ(expected->safe_for_autoreplace(), actual->safe_for_autoreplace()); 252 EXPECT_EQ(expected->safe_for_autoreplace(), actual->safe_for_autoreplace());
267 EXPECT_EQ(expected->input_encodings(), actual->input_encodings()); 253 EXPECT_EQ(expected->input_encodings(), actual->input_encodings());
268 } 254 }
269 255
256 TemplateURL* TemplateURLServiceTest::CreatePreloadedTemplateURL(
257 bool safe_for_autoreplace,
258 int prepopulate_id) {
259 TemplateURLData data;
260 data.short_name = ASCIIToUTF16("unittest");
261 data.SetKeyword(ASCIIToUTF16("unittest"));
262 data.SetURL("http://www.unittest.com/{searchTerms}");
263 data.favicon_url = GURL("http://favicon.url");
264 data.show_in_default_list = true;
265 data.safe_for_autoreplace = safe_for_autoreplace;
266 data.input_encodings.push_back("UTF-8");
267 data.date_created = Time::FromTimeT(100);
268 data.last_modified = Time::FromTimeT(100);
269 data.prepopulate_id = prepopulate_id;
270 return new TemplateURL(test_util_.profile(), data);
271 }
272
270 TemplateURL* TemplateURLServiceTest::CreateReplaceablePreloadedTemplateURL( 273 TemplateURL* TemplateURLServiceTest::CreateReplaceablePreloadedTemplateURL(
271 bool safe_for_autoreplace, 274 bool safe_for_autoreplace,
272 size_t index_offset_from_default, 275 size_t index_offset_from_default,
273 string16* prepopulated_display_url) { 276 string16* prepopulated_display_url) {
274 ScopedVector<TemplateURL> prepopulated_urls; 277 ScopedVector<TemplateURL> prepopulated_urls;
275 size_t default_search_provider_index = 0; 278 size_t default_search_provider_index = 0;
276 TemplateURLPrepopulateData::GetPrepopulatedEngines( 279 TemplateURLPrepopulateData::GetPrepopulatedEngines(test_util_.profile(),
277 test_util_.profile()->GetPrefs(), &prepopulated_urls.get(), 280 &prepopulated_urls.get(), &default_search_provider_index);
278 &default_search_provider_index);
279 EXPECT_LT(index_offset_from_default, prepopulated_urls.size()); 281 EXPECT_LT(index_offset_from_default, prepopulated_urls.size());
280 size_t prepopulated_index = (default_search_provider_index + 282 size_t prepopulated_index = (default_search_provider_index +
281 index_offset_from_default) % prepopulated_urls.size(); 283 index_offset_from_default) % prepopulated_urls.size();
282 TemplateURL* t_url = CreatePreloadedTemplateURL(safe_for_autoreplace, 284 TemplateURL* t_url = CreatePreloadedTemplateURL(safe_for_autoreplace,
283 prepopulated_urls[prepopulated_index]->prepopulate_id()); 285 prepopulated_urls[prepopulated_index]->prepopulate_id());
284 *prepopulated_display_url = 286 *prepopulated_display_url =
285 prepopulated_urls[prepopulated_index]->url_ref().DisplayURL(); 287 prepopulated_urls[prepopulated_index]->url_ref().DisplayURL();
286 return t_url; 288 return t_url;
287 } 289 }
288 290
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 346
345 TemplateURLData data; 347 TemplateURLData data;
346 data.short_name = ASCIIToUTF16("google"); 348 data.short_name = ASCIIToUTF16("google");
347 data.SetKeyword(ASCIIToUTF16("keyword")); 349 data.SetKeyword(ASCIIToUTF16("keyword"));
348 data.SetURL("http://www.google.com/foo/bar"); 350 data.SetURL("http://www.google.com/foo/bar");
349 data.favicon_url = GURL("http://favicon.url"); 351 data.favicon_url = GURL("http://favicon.url");
350 data.safe_for_autoreplace = true; 352 data.safe_for_autoreplace = true;
351 data.date_created = Time::FromTimeT(100); 353 data.date_created = Time::FromTimeT(100);
352 data.last_modified = Time::FromTimeT(100); 354 data.last_modified = Time::FromTimeT(100);
353 data.sync_guid = "00000000-0000-0000-0000-000000000001"; 355 data.sync_guid = "00000000-0000-0000-0000-000000000001";
354 TemplateURL* t_url = new TemplateURL(data); 356 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
355 model()->Add(t_url); 357 model()->Add(t_url);
356 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 358 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
357 NULL)); 359 NULL));
358 VerifyObserverCount(1); 360 VerifyObserverCount(1);
359 test_util_.BlockTillServiceProcessesRequests(); 361 test_util_.BlockTillServiceProcessesRequests();
360 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 362 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
361 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword())); 363 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword()));
362 // We need to make a second copy as the model takes ownership of |t_url| and 364 // We need to make a second copy as the model takes ownership of |t_url| and
363 // will delete it. We have to do this after calling Add() since that gives 365 // will delete it. We have to do this after calling Add() since that gives
364 // |t_url| its ID. 366 // |t_url| its ID.
365 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 367 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
368 t_url->data()));
366 369
367 // Reload the model to verify it was actually saved to the database. 370 // Reload the model to verify it was actually saved to the database.
368 test_util_.ResetModel(true); 371 test_util_.ResetModel(true);
369 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 372 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
370 const TemplateURL* loaded_url = 373 const TemplateURL* loaded_url =
371 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 374 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
372 ASSERT_TRUE(loaded_url != NULL); 375 ASSERT_TRUE(loaded_url != NULL);
373 AssertEquals(*cloned_url, *loaded_url); 376 AssertEquals(*cloned_url, *loaded_url);
374 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 377 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
375 NULL)); 378 NULL));
376 379
377 // We expect the last_modified time to be updated to the present time on an 380 // We expect the last_modified time to be updated to the present time on an
378 // explicit reset. We have to set up the expectation here because ResetModel 381 // explicit reset. We have to set up the expectation here because ResetModel
379 // resets the TimeProvider in the TemplateURLService. 382 // resets the TimeProvider in the TemplateURLService.
380 StrictMock<base::MockTimeProvider> mock_time; 383 StrictMock<base::MockTimeProvider> mock_time;
381 model()->set_time_provider(&base::MockTimeProvider::StaticNow); 384 model()->set_time_provider(&base::MockTimeProvider::StaticNow);
382 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337))); 385 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337)));
383 386
384 // Mutate an element and verify it succeeded. 387 // Mutate an element and verify it succeeded.
385 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"), 388 model()->ResetTemplateURL(loaded_url, ASCIIToUTF16("a"), ASCIIToUTF16("b"),
386 "c"); 389 "c");
387 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name()); 390 ASSERT_EQ(ASCIIToUTF16("a"), loaded_url->short_name());
388 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword()); 391 ASSERT_EQ(ASCIIToUTF16("b"), loaded_url->keyword());
389 ASSERT_EQ("c", loaded_url->url()); 392 ASSERT_EQ("c", loaded_url->url());
390 ASSERT_FALSE(loaded_url->safe_for_autoreplace()); 393 ASSERT_FALSE(loaded_url->safe_for_autoreplace());
391 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(), 394 ASSERT_TRUE(model()->CanReplaceKeyword(ASCIIToUTF16("keyword"), GURL(),
392 NULL)); 395 NULL));
393 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL)); 396 ASSERT_FALSE(model()->CanReplaceKeyword(ASCIIToUTF16("b"), GURL(), NULL));
394 cloned_url.reset(new TemplateURL(loaded_url->data())); 397 cloned_url.reset(new TemplateURL(
398 const_cast<TemplateURL*>(loaded_url)->profile(), loaded_url->data()));
395 test_util_.BlockTillServiceProcessesRequests(); 399 test_util_.BlockTillServiceProcessesRequests();
396 test_util_.ResetModel(true); 400 test_util_.ResetModel(true);
397 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 401 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
398 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b")); 402 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("b"));
399 ASSERT_TRUE(loaded_url != NULL); 403 ASSERT_TRUE(loaded_url != NULL);
400 AssertEquals(*cloned_url, *loaded_url); 404 AssertEquals(*cloned_url, *loaded_url);
401 // We changed a TemplateURL in the service, so ensure that the time was 405 // We changed a TemplateURL in the service, so ensure that the time was
402 // updated. 406 // updated.
403 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified()); 407 ASSERT_EQ(base::Time::FromDoubleT(1337), loaded_url->last_modified());
404 408
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 // Add a new TemplateURL. 572 // Add a new TemplateURL.
569 test_util_.VerifyLoad(); 573 test_util_.VerifyLoad();
570 const size_t initial_count = model()->GetTemplateURLs().size(); 574 const size_t initial_count = model()->GetTemplateURLs().size();
571 TemplateURLData data; 575 TemplateURLData data;
572 data.short_name = ASCIIToUTF16("google"); 576 data.short_name = ASCIIToUTF16("google");
573 data.SetKeyword(ASCIIToUTF16("keyword")); 577 data.SetKeyword(ASCIIToUTF16("keyword"));
574 data.SetURL("http://www.google.com/foo/bar"); 578 data.SetURL("http://www.google.com/foo/bar");
575 data.favicon_url = GURL("http://favicon.url"); 579 data.favicon_url = GURL("http://favicon.url");
576 data.date_created = Time::FromTimeT(100); 580 data.date_created = Time::FromTimeT(100);
577 data.last_modified = Time::FromTimeT(100); 581 data.last_modified = Time::FromTimeT(100);
578 TemplateURL* t_url = new TemplateURL(data); 582 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
579 model()->Add(t_url); 583 model()->Add(t_url);
580 584
581 VerifyObserverCount(1); 585 VerifyObserverCount(1);
582 test_util_.BlockTillServiceProcessesRequests(); 586 test_util_.BlockTillServiceProcessesRequests();
583 587
584 StrictMock<base::MockTimeProvider> mock_time; 588 StrictMock<base::MockTimeProvider> mock_time;
585 model()->set_time_provider(&base::MockTimeProvider::StaticNow); 589 model()->set_time_provider(&base::MockTimeProvider::StaticNow);
586 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337))); 590 EXPECT_CALL(mock_time, Now()).WillOnce(Return(base::Time::FromDoubleT(1337)));
587 591
588 // Reset the short name, keyword, url and make sure it takes. 592 // Reset the short name, keyword, url and make sure it takes.
589 const string16 new_short_name(ASCIIToUTF16("a")); 593 const string16 new_short_name(ASCIIToUTF16("a"));
590 const string16 new_keyword(ASCIIToUTF16("b")); 594 const string16 new_keyword(ASCIIToUTF16("b"));
591 const std::string new_url("c"); 595 const std::string new_url("c");
592 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url); 596 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url);
593 ASSERT_EQ(new_short_name, t_url->short_name()); 597 ASSERT_EQ(new_short_name, t_url->short_name());
594 ASSERT_EQ(new_keyword, t_url->keyword()); 598 ASSERT_EQ(new_keyword, t_url->keyword());
595 ASSERT_EQ(new_url, t_url->url()); 599 ASSERT_EQ(new_url, t_url->url());
596 600
597 // Make sure the mappings in the model were updated. 601 // Make sure the mappings in the model were updated.
598 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword)); 602 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword));
599 ASSERT_TRUE( 603 ASSERT_TRUE(
600 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL); 604 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL);
601 605
602 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 606 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
607 t_url->data()));
603 608
604 // Reload the model from the database and make sure the change took. 609 // Reload the model from the database and make sure the change took.
605 test_util_.ResetModel(true); 610 test_util_.ResetModel(true);
606 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 611 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
607 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword); 612 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword);
608 ASSERT_TRUE(read_url); 613 ASSERT_TRUE(read_url);
609 AssertEquals(*cloned_url, *read_url); 614 AssertEquals(*cloned_url, *read_url);
610 ASSERT_EQ(base::Time::FromDoubleT(1337), read_url->last_modified()); 615 ASSERT_EQ(base::Time::FromDoubleT(1337), read_url->last_modified());
611 } 616 }
612 617
613 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) { 618 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) {
614 // Add a new TemplateURL. 619 // Add a new TemplateURL.
615 test_util_.VerifyLoad(); 620 test_util_.VerifyLoad();
616 const size_t initial_count = model()->GetTemplateURLs().size(); 621 const size_t initial_count = model()->GetTemplateURLs().size();
617 TemplateURL* t_url = AddKeywordWithDate("name1", "key1", false, 622 TemplateURL* t_url = AddKeywordWithDate("name1", "key1", false,
618 "http://foo1/{searchTerms}", "http://sugg1", "http://icon1", true, 623 "http://foo1/{searchTerms}", "http://sugg1", "http://icon1", true,
619 "UTF-8;UTF-16", Time(), Time()); 624 "UTF-8;UTF-16", Time(), Time());
620 test_util_.ResetObserverCount(); 625 test_util_.ResetObserverCount();
621 626
622 model()->SetDefaultSearchProvider(t_url); 627 model()->SetDefaultSearchProvider(t_url);
623 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 628 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
624 ASSERT_TRUE(t_url->safe_for_autoreplace()); 629 ASSERT_TRUE(t_url->safe_for_autoreplace());
625 ASSERT_TRUE(t_url->show_in_default_list()); 630 ASSERT_TRUE(t_url->show_in_default_list());
626 631
627 // Setting the default search provider should have caused notification. 632 // Setting the default search provider should have caused notification.
628 VerifyObserverCount(1); 633 VerifyObserverCount(1);
629 test_util_.BlockTillServiceProcessesRequests(); 634 test_util_.BlockTillServiceProcessesRequests();
630 635
631 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 636 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
637 t_url->data()));
632 638
633 // Make sure when we reload we get a default search provider. 639 // Make sure when we reload we get a default search provider.
634 test_util_.ResetModel(true); 640 test_util_.ResetModel(true);
635 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 641 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
636 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 642 ASSERT_TRUE(model()->GetDefaultSearchProvider());
637 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider()); 643 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider());
638 } 644 }
639 645
640 TEST_F(TemplateURLServiceTest, TemplateURLWithNoKeyword) { 646 TEST_F(TemplateURLServiceTest, TemplateURLWithNoKeyword) {
641 test_util_.VerifyLoad(); 647 test_util_.VerifyLoad();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 test_util_.VerifyLoad(); 723 test_util_.VerifyLoad();
718 724
719 TemplateURLData data; 725 TemplateURLData data;
720 data.short_name = ASCIIToUTF16("a"); 726 data.short_name = ASCIIToUTF16("a");
721 data.safe_for_autoreplace = true; 727 data.safe_for_autoreplace = true;
722 data.SetURL("http://url/{searchTerms}"); 728 data.SetURL("http://url/{searchTerms}");
723 data.suggestions_url = "http://url2"; 729 data.suggestions_url = "http://url2";
724 data.instant_url = "http://instant"; 730 data.instant_url = "http://instant";
725 data.date_created = Time::FromTimeT(100); 731 data.date_created = Time::FromTimeT(100);
726 data.last_modified = Time::FromTimeT(100); 732 data.last_modified = Time::FromTimeT(100);
727 TemplateURL* t_url = new TemplateURL(data); 733 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
728 model()->Add(t_url); 734 model()->Add(t_url);
729 const TemplateURLID id = t_url->id(); 735 const TemplateURLID id = t_url->id();
730 736
731 model()->SetDefaultSearchProvider(t_url); 737 model()->SetDefaultSearchProvider(t_url);
732 test_util_.BlockTillServiceProcessesRequests(); 738 test_util_.BlockTillServiceProcessesRequests();
733 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 739 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
740 t_url->data()));
734 741
735 // Reset the model and don't load it. The template url we set as the default 742 // Reset the model and don't load it. The template url we set as the default
736 // should be pulled from prefs now. 743 // should be pulled from prefs now.
737 test_util_.ResetModel(false); 744 test_util_.ResetModel(false);
738 745
739 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs 746 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs
740 // value are persisted to prefs. 747 // value are persisted to prefs.
741 const TemplateURL* default_turl = model()->GetDefaultSearchProvider(); 748 const TemplateURL* default_turl = model()->GetDefaultSearchProvider();
742 ASSERT_TRUE(default_turl); 749 ASSERT_TRUE(default_turl);
743 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name()); 750 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name());
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 971
965 // Make sure that load routine doesn't delete prepopulated engines that no 972 // Make sure that load routine doesn't delete prepopulated engines that no
966 // longer exist in the prepopulate data if it has been modified by the user. 973 // longer exist in the prepopulate data if it has been modified by the user.
967 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { 974 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) {
968 // Create a preloaded template url and add it to a loaded model. 975 // Create a preloaded template url and add it to a loaded model.
969 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999); 976 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999);
970 test_util_.ChangeModelToLoadState(); 977 test_util_.ChangeModelToLoadState();
971 model()->Add(t_url); 978 model()->Add(t_url);
972 979
973 // Do the copy after t_url is added so that the id is set. 980 // Do the copy after t_url is added so that the id is set.
974 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 981 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
982 t_url->data()));
975 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 983 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
976 984
977 // Wait for any saves to finish. 985 // Wait for any saves to finish.
978 test_util_.BlockTillServiceProcessesRequests(); 986 test_util_.BlockTillServiceProcessesRequests();
979 987
980 // Ensure that merging won't clear it if the user has edited it. 988 // Ensure that merging won't clear it if the user has edited it.
981 test_util_.ResetModel(true); 989 test_util_.ResetModel(true);
982 const TemplateURL* url_for_unittest = 990 const TemplateURL* url_for_unittest =
983 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 991 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
984 ASSERT_TRUE(url_for_unittest != NULL); 992 ASSERT_TRUE(url_for_unittest != NULL);
985 AssertEquals(*cloned_url, *url_for_unittest); 993 AssertEquals(*cloned_url, *url_for_unittest);
986 994
987 // Wait for any saves to finish. 995 // Wait for any saves to finish.
988 test_util_.BlockTillServiceProcessesRequests(); 996 test_util_.BlockTillServiceProcessesRequests();
989 997
990 // Reload the model to verify that save/reload retains the item. 998 // Reload the model to verify that save/reload retains the item.
991 test_util_.ResetModel(true); 999 test_util_.ResetModel(true);
992 ASSERT_TRUE( 1000 ASSERT_TRUE(
993 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); 1001 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
994 } 1002 }
995 1003
996 // Make sure that load routine doesn't delete 1004 // Make sure that load routine doesn't delete
997 // prepopulated engines that no longer exist in the prepopulate data if 1005 // prepopulated engines that no longer exist in the prepopulate data if
998 // it has been modified by the user. 1006 // it has been modified by the user.
999 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) { 1007 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) {
1000 test_util_.VerifyLoad(); 1008 test_util_.VerifyLoad();
1001 // Verify that the default search provider is set to something. 1009 // Verify that the default search provider is set to something.
1002 const TemplateURL* default_search = model()->GetDefaultSearchProvider(); 1010 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1003 ASSERT_TRUE(default_search != NULL); 1011 ASSERT_TRUE(default_search != NULL);
1004 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(default_search->data())); 1012 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(
1013 const_cast<TemplateURL*>(default_search)->profile(),
1014 default_search->data()));
1005 1015
1006 // Wait for any saves to finish. 1016 // Wait for any saves to finish.
1007 test_util_.BlockTillServiceProcessesRequests(); 1017 test_util_.BlockTillServiceProcessesRequests();
1008 1018
1009 // Reload the model and check that the default search provider 1019 // Reload the model and check that the default search provider
1010 // was properly saved. 1020 // was properly saved.
1011 test_util_.ResetModel(true); 1021 test_util_.ResetModel(true);
1012 default_search = model()->GetDefaultSearchProvider(); 1022 default_search = model()->GetDefaultSearchProvider();
1013 ASSERT_TRUE(default_search != NULL); 1023 ASSERT_TRUE(default_search != NULL);
1014 AssertEquals(*cloned_url, *default_search); 1024 AssertEquals(*cloned_url, *default_search);
1015 } 1025 }
1016 1026
1017 // Make sure that the load routine doesn't delete 1027 // Make sure that the load routine doesn't delete
1018 // prepopulated engines that no longer exist in the prepopulate data if 1028 // prepopulated engines that no longer exist in the prepopulate data if
1019 // it is the default search provider. 1029 // it is the default search provider.
1020 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) { 1030 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) {
1021 // Set the default search provider to a preloaded template url which 1031 // Set the default search provider to a preloaded template url which
1022 // is not in the current set of preloaded template urls and save 1032 // is not in the current set of preloaded template urls and save
1023 // the result. 1033 // the result.
1024 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999); 1034 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
1025 test_util_.ChangeModelToLoadState(); 1035 test_util_.ChangeModelToLoadState();
1026 model()->Add(t_url); 1036 model()->Add(t_url);
1027 model()->SetDefaultSearchProvider(t_url); 1037 model()->SetDefaultSearchProvider(t_url);
1028 // Do the copy after t_url is added and set as default so that its 1038 // Do the copy after t_url is added and set as default so that its
1029 // internal state is correct. 1039 // internal state is correct.
1030 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 1040 scoped_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->profile(),
1041 t_url->data()));
1031 1042
1032 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1043 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1033 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 1044 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
1034 test_util_.BlockTillServiceProcessesRequests(); 1045 test_util_.BlockTillServiceProcessesRequests();
1035 1046
1036 // Ensure that merging won't clear the prepopulated template url 1047 // Ensure that merging won't clear the prepopulated template url
1037 // which is no longer present if it's the default engine. 1048 // which is no longer present if it's the default engine.
1038 test_util_.ResetModel(true); 1049 test_util_.ResetModel(true);
1039 { 1050 {
1040 const TemplateURL* keyword_url = 1051 const TemplateURL* keyword_url =
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 TEST_F(TemplateURLServiceTest, LoadDoesAutoKeywordUpdate) { 1122 TEST_F(TemplateURLServiceTest, LoadDoesAutoKeywordUpdate) {
1112 string16 prepopulated_url; 1123 string16 prepopulated_url;
1113 scoped_ptr<TemplateURL> t_url( 1124 scoped_ptr<TemplateURL> t_url(
1114 CreateReplaceablePreloadedTemplateURL(false, 0, &prepopulated_url)); 1125 CreateReplaceablePreloadedTemplateURL(false, 0, &prepopulated_url));
1115 TemplateURLData data(t_url->data()); 1126 TemplateURLData data(t_url->data());
1116 data.SetAutogenerateKeyword(true); 1127 data.SetAutogenerateKeyword(true);
1117 data.SetURL("{google:baseURL}?q={searchTerms}"); 1128 data.SetURL("{google:baseURL}?q={searchTerms}");
1118 1129
1119 // Then add it to the model and save it all. 1130 // Then add it to the model and save it all.
1120 test_util_.ChangeModelToLoadState(); 1131 test_util_.ChangeModelToLoadState();
1121 model()->Add(new TemplateURL(data)); 1132 model()->Add(new TemplateURL(test_util_.profile(), data));
1122 test_util_.BlockTillServiceProcessesRequests(); 1133 test_util_.BlockTillServiceProcessesRequests();
1123 1134
1124 // Now reload the model and verify that the merge updates the url. 1135 // Now reload the model and verify that the merge updates the url.
1125 test_util_.ResetModel(true); 1136 test_util_.ResetModel(true);
1126 1137
1127 // Wait for any saves to finish. 1138 // Wait for any saves to finish.
1128 test_util_.BlockTillServiceProcessesRequests(); 1139 test_util_.BlockTillServiceProcessesRequests();
1129 } 1140 }
1130 1141
1131 // Simulates failing to load the webdb and makes sure the default search 1142 // Simulates failing to load the webdb and makes sure the default search
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); 1190 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size());
1180 1191
1181 // Verify that the default manager we are getting is the managed one. 1192 // Verify that the default manager we are getting is the managed one.
1182 TemplateURLData data; 1193 TemplateURLData data;
1183 data.short_name = ASCIIToUTF16(kName); 1194 data.short_name = ASCIIToUTF16(kName);
1184 data.SetKeyword(ASCIIToUTF16(kKeyword)); 1195 data.SetKeyword(ASCIIToUTF16(kKeyword));
1185 data.SetURL(kSearchURL); 1196 data.SetURL(kSearchURL);
1186 data.favicon_url = GURL(kIconURL); 1197 data.favicon_url = GURL(kIconURL);
1187 data.show_in_default_list = true; 1198 data.show_in_default_list = true;
1188 base::SplitString(kEncodings, ';', &data.input_encodings); 1199 base::SplitString(kEncodings, ';', &data.input_encodings);
1189 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL(data)); 1200 Profile* profile = test_util_.profile();
1201 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL(profile,
1202 data));
1190 const TemplateURL* actual_managed_default = 1203 const TemplateURL* actual_managed_default =
1191 model()->GetDefaultSearchProvider(); 1204 model()->GetDefaultSearchProvider();
1192 ExpectSimilar(expected_managed_default1.get(), actual_managed_default); 1205 ExpectSimilar(expected_managed_default1.get(), actual_managed_default);
1193 EXPECT_TRUE(actual_managed_default->show_in_default_list()); 1206 EXPECT_TRUE(actual_managed_default->show_in_default_list());
1194 1207
1195 // Update the managed preference and check that the model has changed. 1208 // Update the managed preference and check that the model has changed.
1196 const char kNewName[] = "test2"; 1209 const char kNewName[] = "test2";
1197 const char kNewKeyword[] = "other.com"; 1210 const char kNewKeyword[] = "other.com";
1198 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; 1211 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}";
1199 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; 1212 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}";
1200 test_util_.SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword, 1213 test_util_.SetManagedDefaultSearchPreferences(true, kNewName, kNewKeyword,
1201 kNewSearchURL, kNewSuggestURL, std::string(), std::string()); 1214 kNewSearchURL, kNewSuggestURL, std::string(), std::string());
1202 VerifyObserverFired(); 1215 VerifyObserverFired();
1203 EXPECT_TRUE(model()->is_default_search_managed()); 1216 EXPECT_TRUE(model()->is_default_search_managed());
1204 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size()); 1217 EXPECT_EQ(initial_count + 2, model()->GetTemplateURLs().size());
1205 1218
1206 // Verify that the default manager we are now getting is the correct one. 1219 // Verify that the default manager we are now getting is the correct one.
1207 TemplateURLData data2; 1220 TemplateURLData data2;
1208 data2.short_name = ASCIIToUTF16(kNewName); 1221 data2.short_name = ASCIIToUTF16(kNewName);
1209 data2.SetKeyword(ASCIIToUTF16(kNewKeyword)); 1222 data2.SetKeyword(ASCIIToUTF16(kNewKeyword));
1210 data2.SetURL(kNewSearchURL); 1223 data2.SetURL(kNewSearchURL);
1211 data2.suggestions_url = kNewSuggestURL; 1224 data2.suggestions_url = kNewSuggestURL;
1212 data2.show_in_default_list = true; 1225 data2.show_in_default_list = true;
1213 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL(data2)); 1226 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL(profile,
1227 data2));
1214 actual_managed_default = model()->GetDefaultSearchProvider(); 1228 actual_managed_default = model()->GetDefaultSearchProvider();
1215 ExpectSimilar(expected_managed_default2.get(), actual_managed_default); 1229 ExpectSimilar(expected_managed_default2.get(), actual_managed_default);
1216 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); 1230 EXPECT_EQ(actual_managed_default->show_in_default_list(), true);
1217 1231
1218 // Remove all the managed prefs and check that we are no longer managed. 1232 // Remove all the managed prefs and check that we are no longer managed.
1219 test_util_.RemoveManagedDefaultSearchPreferences(); 1233 test_util_.RemoveManagedDefaultSearchPreferences();
1220 VerifyObserverFired(); 1234 VerifyObserverFired();
1221 EXPECT_FALSE(model()->is_default_search_managed()); 1235 EXPECT_FALSE(model()->is_default_search_managed());
1222 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1236 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1223 1237
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) { 1290 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) {
1277 // Add a new TemplateURL. 1291 // Add a new TemplateURL.
1278 test_util_.VerifyLoad(); 1292 test_util_.VerifyLoad();
1279 const size_t initial_count = model()->GetTemplateURLs().size(); 1293 const size_t initial_count = model()->GetTemplateURLs().size();
1280 1294
1281 TemplateURLData data; 1295 TemplateURLData data;
1282 data.short_name = ASCIIToUTF16("google"); 1296 data.short_name = ASCIIToUTF16("google");
1283 data.SetKeyword(ASCIIToUTF16("keyword")); 1297 data.SetKeyword(ASCIIToUTF16("keyword"));
1284 data.SetURL("http://www.google.com/foo/bar"); 1298 data.SetURL("http://www.google.com/foo/bar");
1285 data.sync_guid.clear(); 1299 data.sync_guid.clear();
1286 TemplateURL* t_url = new TemplateURL(data); 1300 TemplateURL* t_url = new TemplateURL(test_util_.profile(), data);
1287 model()->Add(t_url); 1301 model()->Add(t_url);
1288 1302
1289 VerifyObserverCount(1); 1303 VerifyObserverCount(1);
1290 test_util_.BlockTillServiceProcessesRequests(); 1304 test_util_.BlockTillServiceProcessesRequests();
1291 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1305 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1292 1306
1293 // Reload the model to verify it was actually saved to the database and 1307 // Reload the model to verify it was actually saved to the database and
1294 // assigned a new GUID when brought back. 1308 // assigned a new GUID when brought back.
1295 test_util_.ResetModel(true); 1309 test_util_.ResetModel(true);
1296 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1310 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1297 const TemplateURL* loaded_url = 1311 const TemplateURL* loaded_url =
1298 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1312 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1299 ASSERT_TRUE(loaded_url != NULL); 1313 ASSERT_TRUE(loaded_url != NULL);
1300 ASSERT_FALSE(loaded_url->sync_guid().empty()); 1314 ASSERT_FALSE(loaded_url->sync_guid().empty());
1301 } 1315 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698