OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |