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

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

Issue 2290503003: Remove use of stl_util in search_engines. (Closed)
Patch Set: ios for reals Created 4 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/search_engines/template_url_service.h" 5 #include "components/search_engines/template_url_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/callback.h" 14 #include "base/callback.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h"
16 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
17 #include "base/run_loop.h" 18 #include "base/run_loop.h"
18 #include "base/strings/string_split.h" 19 #include "base/strings/string_split.h"
19 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
20 #include "base/strings/utf_string_conversions.h" 21 #include "base/strings/utf_string_conversions.h"
21 #include "base/task/cancelable_task_tracker.h" 22 #include "base/task/cancelable_task_tracker.h"
22 #include "base/test/simple_test_clock.h" 23 #include "base/test/simple_test_clock.h"
23 #include "base/threading/thread.h" 24 #include "base/threading/thread.h"
24 #include "base/time/time.h" 25 #include "base/time/time.h"
25 #include "chrome/browser/history/history_service_factory.h" 26 #include "chrome/browser/history/history_service_factory.h"
(...skipping 27 matching lines...) Expand all
53 this->row = row; 54 this->row = row;
54 this->visits = visits; 55 this->visits = visits;
55 } 56 }
56 } 57 }
57 58
58 bool success; 59 bool success;
59 history::URLRow row; 60 history::URLRow row;
60 history::VisitVector visits; 61 history::VisitVector visits;
61 }; 62 };
62 63
63 TemplateURL* CreateKeywordWithDate( 64 std::unique_ptr<TemplateURL> CreateKeywordWithDate(
64 TemplateURLService* model, 65 TemplateURLService* model,
65 const std::string& short_name, 66 const std::string& short_name,
66 const std::string& keyword, 67 const std::string& keyword,
67 const std::string& url, 68 const std::string& url,
68 const std::string& suggest_url, 69 const std::string& suggest_url,
69 const std::string& alternate_url, 70 const std::string& alternate_url,
70 const std::string& favicon_url, 71 const std::string& favicon_url,
71 bool safe_for_autoreplace, 72 bool safe_for_autoreplace,
72 bool show_in_default_list, 73 bool show_in_default_list,
73 const std::string& encodings, 74 const std::string& encodings,
74 Time date_created, 75 Time date_created,
75 Time last_modified) { 76 Time last_modified) {
76 TemplateURLData data; 77 TemplateURLData data;
77 data.SetShortName(base::UTF8ToUTF16(short_name)); 78 data.SetShortName(base::UTF8ToUTF16(short_name));
78 data.SetKeyword(base::UTF8ToUTF16(keyword)); 79 data.SetKeyword(base::UTF8ToUTF16(keyword));
79 data.SetURL(url); 80 data.SetURL(url);
80 data.suggestions_url = suggest_url; 81 data.suggestions_url = suggest_url;
81 if (!alternate_url.empty()) 82 if (!alternate_url.empty())
82 data.alternate_urls.push_back(alternate_url); 83 data.alternate_urls.push_back(alternate_url);
83 data.favicon_url = GURL(favicon_url); 84 data.favicon_url = GURL(favicon_url);
84 data.safe_for_autoreplace = safe_for_autoreplace; 85 data.safe_for_autoreplace = safe_for_autoreplace;
85 data.show_in_default_list = show_in_default_list; 86 data.show_in_default_list = show_in_default_list;
86 data.input_encodings = base::SplitString( 87 data.input_encodings = base::SplitString(
87 encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 88 encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
88 data.date_created = date_created; 89 data.date_created = date_created;
89 data.last_modified = last_modified; 90 data.last_modified = last_modified;
90 return new TemplateURL(data); 91 return base::MakeUnique<TemplateURL>(data);
91 } 92 }
92 93
93 TemplateURL* AddKeywordWithDate( 94 TemplateURL* AddKeywordWithDate(
94 TemplateURLService* model, 95 TemplateURLService* model,
95 const std::string& short_name, 96 const std::string& short_name,
96 const std::string& keyword, 97 const std::string& keyword,
97 const std::string& url, 98 const std::string& url,
98 const std::string& suggest_url, 99 const std::string& suggest_url,
99 const std::string& alternate_url, 100 const std::string& alternate_url,
100 const std::string& favicon_url, 101 const std::string& favicon_url,
101 bool safe_for_autoreplace, 102 bool safe_for_autoreplace,
102 const std::string& encodings, 103 const std::string& encodings,
103 Time date_created, 104 Time date_created,
104 Time last_modified) { 105 Time last_modified) {
105 TemplateURL* t_url = CreateKeywordWithDate( 106 std::unique_ptr<TemplateURL> t_url_ptr = CreateKeywordWithDate(
106 model, short_name, keyword, url, suggest_url, alternate_url,favicon_url, 107 model, short_name, keyword, url, suggest_url, alternate_url, favicon_url,
107 safe_for_autoreplace, false, encodings, date_created, last_modified); 108 safe_for_autoreplace, false, encodings, date_created, last_modified);
108 model->Add(t_url); 109 TemplateURL* t_url = t_url_ptr.get();
110 model->Add(std::move(t_url_ptr));
109 EXPECT_NE(0, t_url->id()); 111 EXPECT_NE(0, t_url->id());
110 return t_url; 112 return t_url;
111 } 113 }
112 114
113 // Checks that the two TemplateURLs are similar. It does not check the id, the 115 // Checks that the two TemplateURLs are similar. It does not check the id, the
114 // date_created or the last_modified time. Neither pointer should be NULL. 116 // date_created or the last_modified time. Neither pointer should be NULL.
115 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual) { 117 void ExpectSimilar(const TemplateURL* expected, const TemplateURL* actual) {
116 ASSERT_TRUE(expected != NULL); 118 ASSERT_TRUE(expected != NULL);
117 ASSERT_TRUE(actual != NULL); 119 ASSERT_TRUE(actual != NULL);
118 EXPECT_EQ(expected->short_name(), actual->short_name()); 120 EXPECT_EQ(expected->short_name(), actual->short_name());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 Time last_modified); 155 Time last_modified);
154 156
155 // Verifies the two TemplateURLs are equal. 157 // Verifies the two TemplateURLs are equal.
156 void AssertEquals(const TemplateURL& expected, const TemplateURL& actual); 158 void AssertEquals(const TemplateURL& expected, const TemplateURL& actual);
157 159
158 // Verifies the two timestamps are equal, within the expected degree of 160 // Verifies the two timestamps are equal, within the expected degree of
159 // precision. 161 // precision.
160 void AssertTimesEqual(const base::Time& expected, const base::Time& actual); 162 void AssertTimesEqual(const base::Time& expected, const base::Time& actual);
161 163
162 // Create an URL that appears to have been prepopulated, but won't be in the 164 // Create an URL that appears to have been prepopulated, but won't be in the
163 // current data. The caller owns the returned TemplateURL*. 165 // current data.
164 TemplateURL* CreatePreloadedTemplateURL(bool safe_for_autoreplace, 166 std::unique_ptr<TemplateURL> CreatePreloadedTemplateURL(
165 int prepopulate_id); 167 bool safe_for_autoreplace,
168 int prepopulate_id);
166 169
167 // Helper methods to make calling TemplateURLServiceTestUtil methods less 170 // Helper methods to make calling TemplateURLServiceTestUtil methods less
168 // visually noisy in the test code. 171 // visually noisy in the test code.
169 void VerifyObserverCount(int expected_changed_count); 172 void VerifyObserverCount(int expected_changed_count);
170 void VerifyObserverFired(); 173 void VerifyObserverFired();
171 TemplateURLServiceTestUtil* test_util() { return test_util_.get(); } 174 TemplateURLServiceTestUtil* test_util() { return test_util_.get(); }
172 TemplateURLService* model() { return test_util_->model(); } 175 TemplateURLService* model() { return test_util_->model(); }
173 const SearchTermsData& search_terms_data() { 176 const SearchTermsData& search_terms_data() {
174 return model()->search_terms_data(); 177 return model()->search_terms_data();
175 } 178 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 246 }
244 247
245 void TemplateURLServiceTest::AssertTimesEqual(const base::Time& expected, 248 void TemplateURLServiceTest::AssertTimesEqual(const base::Time& expected,
246 const base::Time& actual) { 249 const base::Time& actual) {
247 // Because times are stored with a granularity of one second, there is a loss 250 // Because times are stored with a granularity of one second, there is a loss
248 // of precision when serializing and deserializing the timestamps. Hence, only 251 // of precision when serializing and deserializing the timestamps. Hence, only
249 // expect timestamps to be equal to within one second of one another. 252 // expect timestamps to be equal to within one second of one another.
250 ASSERT_LT((expected - actual).magnitude(), base::TimeDelta::FromSeconds(1)); 253 ASSERT_LT((expected - actual).magnitude(), base::TimeDelta::FromSeconds(1));
251 } 254 }
252 255
253 TemplateURL* TemplateURLServiceTest::CreatePreloadedTemplateURL( 256 std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL(
254 bool safe_for_autoreplace, 257 bool safe_for_autoreplace,
255 int prepopulate_id) { 258 int prepopulate_id) {
256 TemplateURLData data; 259 TemplateURLData data;
257 data.SetShortName(ASCIIToUTF16("unittest")); 260 data.SetShortName(ASCIIToUTF16("unittest"));
258 data.SetKeyword(ASCIIToUTF16("unittest")); 261 data.SetKeyword(ASCIIToUTF16("unittest"));
259 data.SetURL("http://www.unittest.com/{searchTerms}"); 262 data.SetURL("http://www.unittest.com/{searchTerms}");
260 data.favicon_url = GURL("http://favicon.url"); 263 data.favicon_url = GURL("http://favicon.url");
261 data.show_in_default_list = true; 264 data.show_in_default_list = true;
262 data.safe_for_autoreplace = safe_for_autoreplace; 265 data.safe_for_autoreplace = safe_for_autoreplace;
263 data.input_encodings.push_back("UTF-8"); 266 data.input_encodings.push_back("UTF-8");
264 data.date_created = Time::FromTimeT(100); 267 data.date_created = Time::FromTimeT(100);
265 data.last_modified = Time::FromTimeT(100); 268 data.last_modified = Time::FromTimeT(100);
266 data.prepopulate_id = prepopulate_id; 269 data.prepopulate_id = prepopulate_id;
267 return new TemplateURL(data); 270 return base::MakeUnique<TemplateURL>(data);
268 } 271 }
269 272
270 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) { 273 void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
271 EXPECT_EQ(expected_changed_count, test_util_->GetObserverCount()); 274 EXPECT_EQ(expected_changed_count, test_util_->GetObserverCount());
272 test_util_->ResetObserverCount(); 275 test_util_->ResetObserverCount();
273 } 276 }
274 277
275 void TemplateURLServiceTest::VerifyObserverFired() { 278 void TemplateURLServiceTest::VerifyObserverFired() {
276 EXPECT_LE(1, test_util_->GetObserverCount()); 279 EXPECT_LE(1, test_util_->GetObserverCount());
277 test_util_->ResetObserverCount(); 280 test_util_->ResetObserverCount();
(...skipping 13 matching lines...) Expand all
291 294
292 TemplateURLData data; 295 TemplateURLData data;
293 data.SetShortName(ASCIIToUTF16("google")); 296 data.SetShortName(ASCIIToUTF16("google"));
294 data.SetKeyword(ASCIIToUTF16("keyword")); 297 data.SetKeyword(ASCIIToUTF16("keyword"));
295 data.SetURL("http://www.google.com/foo/bar"); 298 data.SetURL("http://www.google.com/foo/bar");
296 data.favicon_url = GURL("http://favicon.url"); 299 data.favicon_url = GURL("http://favicon.url");
297 data.safe_for_autoreplace = true; 300 data.safe_for_autoreplace = true;
298 data.date_created = Time::FromTimeT(100); 301 data.date_created = Time::FromTimeT(100);
299 data.last_modified = Time::FromTimeT(100); 302 data.last_modified = Time::FromTimeT(100);
300 data.sync_guid = "00000000-0000-0000-0000-000000000001"; 303 data.sync_guid = "00000000-0000-0000-0000-000000000001";
301 TemplateURL* t_url = new TemplateURL(data); 304 std::unique_ptr<TemplateURL> t_url_ptr = base::MakeUnique<TemplateURL>(data);
302 model()->Add(t_url); 305 TemplateURL* t_url = t_url_ptr.get();
306 model()->Add(std::move(t_url_ptr));
303 ASSERT_TRUE(model()->CanAddAutogeneratedKeyword(ASCIIToUTF16("keyword"), 307 ASSERT_TRUE(model()->CanAddAutogeneratedKeyword(ASCIIToUTF16("keyword"),
304 GURL(), NULL)); 308 GURL(), NULL));
305 VerifyObserverCount(1); 309 VerifyObserverCount(1);
306 base::RunLoop().RunUntilIdle(); 310 base::RunLoop().RunUntilIdle();
307 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 311 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
308 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword())); 312 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(t_url->keyword()));
309 // We need to make a second copy as the model takes ownership of |t_url| and 313 // We need to make a second copy as the model takes ownership of |t_url| and
310 // will delete it. We have to do this after calling Add() since that gives 314 // will delete it. We have to do this after calling Add() since that gives
311 // |t_url| its ID. 315 // |t_url| its ID.
312 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 316 std::unique_ptr<TemplateURL> cloned_url =
317 base::MakeUnique<TemplateURL>(t_url->data());
313 318
314 // Reload the model to verify it was actually saved to the database. 319 // Reload the model to verify it was actually saved to the database.
315 test_util()->ResetModel(true); 320 test_util()->ResetModel(true);
316 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 321 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
317 TemplateURL* loaded_url = 322 TemplateURL* loaded_url =
318 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 323 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
319 ASSERT_TRUE(loaded_url != NULL); 324 ASSERT_TRUE(loaded_url != NULL);
320 AssertEquals(*cloned_url, *loaded_url); 325 AssertEquals(*cloned_url, *loaded_url);
321 ASSERT_TRUE(model()->CanAddAutogeneratedKeyword(ASCIIToUTF16("keyword"), 326 ASSERT_TRUE(model()->CanAddAutogeneratedKeyword(ASCIIToUTF16("keyword"),
322 GURL(), NULL)); 327 GURL(), NULL));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 std::string(), true, "UTF-8", Time(), Time()); 371 std::string(), true, "UTF-8", Time(), Time());
367 VerifyObserverCount(1); 372 VerifyObserverCount(1);
368 373
369 // Test what happens when we try to add a TemplateURL with the same keyword as 374 // Test what happens when we try to add a TemplateURL with the same keyword as
370 // one in the model. 375 // one in the model.
371 TemplateURLData data; 376 TemplateURLData data;
372 data.SetShortName(ASCIIToUTF16("second")); 377 data.SetShortName(ASCIIToUTF16("second"));
373 data.SetKeyword(ASCIIToUTF16("keyword")); 378 data.SetKeyword(ASCIIToUTF16("keyword"));
374 data.SetURL("http://test2"); 379 data.SetURL("http://test2");
375 data.safe_for_autoreplace = false; 380 data.safe_for_autoreplace = false;
376 TemplateURL* t_url = new TemplateURL(data); 381 std::unique_ptr<TemplateURL> t_url_ptr = base::MakeUnique<TemplateURL>(data);
377 model()->Add(t_url); 382 TemplateURL* t_url = t_url_ptr.get();
383 model()->Add(std::move(t_url_ptr));
378 384
379 // Because the old TemplateURL was replaceable and the new one wasn't, the new 385 // Because the old TemplateURL was replaceable and the new one wasn't, the new
380 // one should have replaced the old. 386 // one should have replaced the old.
381 VerifyObserverCount(1); 387 VerifyObserverCount(1);
382 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 388 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
383 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 389 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
384 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword()); 390 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword());
385 EXPECT_FALSE(t_url->safe_for_autoreplace()); 391 EXPECT_FALSE(t_url->safe_for_autoreplace());
386 392
387 // Now try adding a replaceable TemplateURL. This should just delete the 393 // Now try adding a replaceable TemplateURL. This should just delete the
388 // passed-in URL. 394 // passed-in URL.
389 data.SetShortName(ASCIIToUTF16("third")); 395 data.SetShortName(ASCIIToUTF16("third"));
390 data.SetURL("http://test3"); 396 data.SetURL("http://test3");
391 data.safe_for_autoreplace = true; 397 data.safe_for_autoreplace = true;
392 model()->Add(new TemplateURL(data)); 398 model()->Add(base::MakeUnique<TemplateURL>(data));
393 VerifyObserverCount(0); 399 VerifyObserverCount(0);
394 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 400 EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
395 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 401 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
396 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword()); 402 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url->keyword());
397 EXPECT_FALSE(t_url->safe_for_autoreplace()); 403 EXPECT_FALSE(t_url->safe_for_autoreplace());
398 404
399 // Now try adding a non-replaceable TemplateURL again. This should uniquify 405 // Now try adding a non-replaceable TemplateURL again. This should uniquify
400 // the existing entry's keyword. 406 // the existing entry's keyword.
401 data.SetShortName(ASCIIToUTF16("fourth")); 407 data.SetShortName(ASCIIToUTF16("fourth"));
402 data.SetURL("http://test4"); 408 data.SetURL("http://test4");
403 data.safe_for_autoreplace = false; 409 data.safe_for_autoreplace = false;
404 TemplateURL* t_url2 = new TemplateURL(data); 410 std::unique_ptr<TemplateURL> t_url2_ptr = base::MakeUnique<TemplateURL>(data);
405 model()->Add(t_url2); 411 TemplateURL* t_url2 = t_url2_ptr.get();
412 model()->Add(std::move(t_url2_ptr));
406 VerifyObserverCount(1); 413 VerifyObserverCount(1);
407 EXPECT_EQ(t_url2, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 414 EXPECT_EQ(t_url2, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
408 EXPECT_EQ(ASCIIToUTF16("fourth"), t_url2->short_name()); 415 EXPECT_EQ(ASCIIToUTF16("fourth"), t_url2->short_name());
409 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url2->keyword()); 416 EXPECT_EQ(ASCIIToUTF16("keyword"), t_url2->keyword());
410 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name()); 417 EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
411 EXPECT_EQ(ASCIIToUTF16("test2"), t_url->keyword()); 418 EXPECT_EQ(ASCIIToUTF16("test2"), t_url->keyword());
412 } 419 }
413 420
414 TEST_F(TemplateURLServiceTest, AddExtensionKeyword) { 421 TEST_F(TemplateURLServiceTest, AddExtensionKeyword) {
415 test_util()->VerifyLoad(); 422 test_util()->VerifyLoad();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 "replaceable", "keyword", "http://test1", std::string(), std::string(), 474 "replaceable", "keyword", "http://test1", std::string(), std::string(),
468 std::string(), true, "UTF-8", Time(), Time()); 475 std::string(), true, "UTF-8", Time(), Time());
469 476
470 // Adding another replaceable keyword should remove the existing one, but 477 // Adding another replaceable keyword should remove the existing one, but
471 // leave the extension as is. 478 // leave the extension as is.
472 TemplateURLData data; 479 TemplateURLData data;
473 data.SetShortName(ASCIIToUTF16("name1")); 480 data.SetShortName(ASCIIToUTF16("name1"));
474 data.SetKeyword(ASCIIToUTF16("keyword")); 481 data.SetKeyword(ASCIIToUTF16("keyword"));
475 data.SetURL("http://test3"); 482 data.SetURL("http://test3");
476 data.safe_for_autoreplace = true; 483 data.safe_for_autoreplace = true;
477 TemplateURL* t_url = new TemplateURL(data); 484 std::unique_ptr<TemplateURL> t_url_ptr = base::MakeUnique<TemplateURL>(data);
478 model()->Add(t_url); 485 TemplateURL* t_url = t_url_ptr.get();
486 model()->Add(std::move(t_url_ptr));
479 EXPECT_EQ(extension, 487 EXPECT_EQ(extension,
480 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 488 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
481 EXPECT_EQ(t_url, model()->GetTemplateURLForHost("test3")); 489 EXPECT_EQ(t_url, model()->GetTemplateURLForHost("test3"));
482 490
483 // Adding a nonreplaceable keyword should remove the existing replaceable 491 // Adding a nonreplaceable keyword should remove the existing replaceable
484 // keyword and replace the extension as the associated URL for this keyword, 492 // keyword and replace the extension as the associated URL for this keyword,
485 // but not evict the extension from the service entirely. 493 // but not evict the extension from the service entirely.
486 data.SetShortName(ASCIIToUTF16("name2")); 494 data.SetShortName(ASCIIToUTF16("name2"));
487 data.SetURL("http://test4"); 495 data.SetURL("http://test4");
488 data.safe_for_autoreplace = false; 496 data.safe_for_autoreplace = false;
489 TemplateURL* t_url2 = new TemplateURL(data); 497 std::unique_ptr<TemplateURL> t_url2_ptr = base::MakeUnique<TemplateURL>(data);
490 model()->Add(t_url2); 498 TemplateURL* t_url2 = t_url2_ptr.get();
499 model()->Add(std::move(t_url2_ptr));
491 EXPECT_EQ(t_url2, 500 EXPECT_EQ(t_url2,
492 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"))); 501 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
493 } 502 }
494 503
495 TEST_F(TemplateURLServiceTest, NotPersistOmniboxExtensionKeyword) { 504 TEST_F(TemplateURLServiceTest, NotPersistOmniboxExtensionKeyword) {
496 test_util()->VerifyLoad(); 505 test_util()->VerifyLoad();
497 506
498 // Register an omnibox keyword. 507 // Register an omnibox keyword.
499 model()->RegisterOmniboxKeyword("test", "extension", "keyword", 508 model()->RegisterOmniboxKeyword("test", "extension", "keyword",
500 "chrome-extension://test"); 509 "chrome-extension://test");
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 // Add a new TemplateURL. 634 // Add a new TemplateURL.
626 test_util()->VerifyLoad(); 635 test_util()->VerifyLoad();
627 const size_t initial_count = model()->GetTemplateURLs().size(); 636 const size_t initial_count = model()->GetTemplateURLs().size();
628 TemplateURLData data; 637 TemplateURLData data;
629 data.SetShortName(ASCIIToUTF16("google")); 638 data.SetShortName(ASCIIToUTF16("google"));
630 data.SetKeyword(ASCIIToUTF16("keyword")); 639 data.SetKeyword(ASCIIToUTF16("keyword"));
631 data.SetURL("http://www.google.com/foo/bar"); 640 data.SetURL("http://www.google.com/foo/bar");
632 data.favicon_url = GURL("http://favicon.url"); 641 data.favicon_url = GURL("http://favicon.url");
633 data.date_created = Time::FromTimeT(100); 642 data.date_created = Time::FromTimeT(100);
634 data.last_modified = Time::FromTimeT(100); 643 data.last_modified = Time::FromTimeT(100);
635 TemplateURL* t_url = new TemplateURL(data); 644 std::unique_ptr<TemplateURL> t_url_ptr = base::MakeUnique<TemplateURL>(data);
636 model()->Add(t_url); 645 TemplateURL* t_url = t_url_ptr.get();
646 model()->Add(std::move(t_url_ptr));
637 647
638 VerifyObserverCount(1); 648 VerifyObserverCount(1);
639 base::RunLoop().RunUntilIdle(); 649 base::RunLoop().RunUntilIdle();
640 650
641 base::Time now = base::Time::Now(); 651 base::Time now = base::Time::Now();
642 std::unique_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock); 652 std::unique_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock);
643 clock->SetNow(now); 653 clock->SetNow(now);
644 model()->set_clock(std::move(clock)); 654 model()->set_clock(std::move(clock));
645 655
646 // Reset the short name, keyword, url and make sure it takes. 656 // Reset the short name, keyword, url and make sure it takes.
647 const base::string16 new_short_name(ASCIIToUTF16("a")); 657 const base::string16 new_short_name(ASCIIToUTF16("a"));
648 const base::string16 new_keyword(ASCIIToUTF16("b")); 658 const base::string16 new_keyword(ASCIIToUTF16("b"));
649 const std::string new_url("c"); 659 const std::string new_url("c");
650 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url); 660 model()->ResetTemplateURL(t_url, new_short_name, new_keyword, new_url);
651 ASSERT_EQ(new_short_name, t_url->short_name()); 661 ASSERT_EQ(new_short_name, t_url->short_name());
652 ASSERT_EQ(new_keyword, t_url->keyword()); 662 ASSERT_EQ(new_keyword, t_url->keyword());
653 ASSERT_EQ(new_url, t_url->url()); 663 ASSERT_EQ(new_url, t_url->url());
654 664
655 // Make sure the mappings in the model were updated. 665 // Make sure the mappings in the model were updated.
656 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword)); 666 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(new_keyword));
657 ASSERT_TRUE( 667 ASSERT_TRUE(
658 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL); 668 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL);
659 669
660 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 670 std::unique_ptr<TemplateURL> cloned_url(
671 base::MakeUnique<TemplateURL>(t_url->data()));
661 672
662 // Reload the model from the database and make sure the change took. 673 // Reload the model from the database and make sure the change took.
663 test_util()->ResetModel(true); 674 test_util()->ResetModel(true);
664 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 675 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
665 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword); 676 const TemplateURL* read_url = model()->GetTemplateURLForKeyword(new_keyword);
666 ASSERT_TRUE(read_url); 677 ASSERT_TRUE(read_url);
667 AssertEquals(*cloned_url, *read_url); 678 AssertEquals(*cloned_url, *read_url);
668 AssertTimesEqual(now, read_url->last_modified()); 679 AssertTimesEqual(now, read_url->last_modified());
669 } 680 }
670 681
671 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) { 682 TEST_F(TemplateURLServiceTest, DefaultSearchProvider) {
672 // Add a new TemplateURL. 683 // Add a new TemplateURL.
673 test_util()->VerifyLoad(); 684 test_util()->VerifyLoad();
674 const size_t initial_count = model()->GetTemplateURLs().size(); 685 const size_t initial_count = model()->GetTemplateURLs().size();
675 TemplateURL* t_url = AddKeywordWithDate( 686 TemplateURL* t_url = AddKeywordWithDate(
676 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1", 687 "name1", "key1", "http://foo1/{searchTerms}", "http://sugg1",
677 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time()); 688 std::string(), "http://icon1", true, "UTF-8;UTF-16", Time(), Time());
678 test_util()->ResetObserverCount(); 689 test_util()->ResetObserverCount();
679 690
680 model()->SetUserSelectedDefaultSearchProvider(t_url); 691 model()->SetUserSelectedDefaultSearchProvider(t_url);
681 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 692 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
682 ASSERT_TRUE(t_url->safe_for_autoreplace()); 693 ASSERT_TRUE(t_url->safe_for_autoreplace());
683 ASSERT_TRUE(t_url->show_in_default_list()); 694 ASSERT_TRUE(t_url->show_in_default_list());
684 695
685 // Setting the default search provider should have caused notification. 696 // Setting the default search provider should have caused notification.
686 VerifyObserverCount(1); 697 VerifyObserverCount(1);
687 base::RunLoop().RunUntilIdle(); 698 base::RunLoop().RunUntilIdle();
688 699
689 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 700 std::unique_ptr<TemplateURL> cloned_url(
701 base::MakeUnique<TemplateURL>(t_url->data()));
690 702
691 // Make sure when we reload we get a default search provider. 703 // Make sure when we reload we get a default search provider.
692 test_util()->ResetModel(true); 704 test_util()->ResetModel(true);
693 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 705 EXPECT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
694 ASSERT_TRUE(model()->GetDefaultSearchProvider()); 706 ASSERT_TRUE(model()->GetDefaultSearchProvider());
695 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider()); 707 AssertEquals(*cloned_url, *model()->GetDefaultSearchProvider());
696 } 708 }
697 709
698 TEST_F(TemplateURLServiceTest, CantReplaceWithSameKeyword) { 710 TEST_F(TemplateURLServiceTest, CantReplaceWithSameKeyword) {
699 test_util()->ChangeModelToLoadState(); 711 test_util()->ChangeModelToLoadState();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 test_util()->VerifyLoad(); 763 test_util()->VerifyLoad();
752 764
753 TemplateURLData data; 765 TemplateURLData data;
754 data.SetShortName(ASCIIToUTF16("a")); 766 data.SetShortName(ASCIIToUTF16("a"));
755 data.safe_for_autoreplace = true; 767 data.safe_for_autoreplace = true;
756 data.SetURL("http://url/{searchTerms}"); 768 data.SetURL("http://url/{searchTerms}");
757 data.suggestions_url = "http://url2"; 769 data.suggestions_url = "http://url2";
758 data.instant_url = "http://instant"; 770 data.instant_url = "http://instant";
759 data.date_created = Time::FromTimeT(100); 771 data.date_created = Time::FromTimeT(100);
760 data.last_modified = Time::FromTimeT(100); 772 data.last_modified = Time::FromTimeT(100);
761 TemplateURL* t_url = new TemplateURL(data); 773 std::unique_ptr<TemplateURL> t_url_ptr = base::MakeUnique<TemplateURL>(data);
762 model()->Add(t_url); 774 TemplateURL* t_url = t_url_ptr.get();
775 model()->Add(std::move(t_url_ptr));
763 const TemplateURLID id = t_url->id(); 776 const TemplateURLID id = t_url->id();
764 777
765 model()->SetUserSelectedDefaultSearchProvider(t_url); 778 model()->SetUserSelectedDefaultSearchProvider(t_url);
766 base::RunLoop().RunUntilIdle(); 779 base::RunLoop().RunUntilIdle();
767 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 780 std::unique_ptr<TemplateURL> cloned_url(
781 base::MakeUnique<TemplateURL>(t_url->data()));
768 782
769 // Reset the model and don't load it. The template url we set as the default 783 // Reset the model and don't load it. The template url we set as the default
770 // should be pulled from prefs now. 784 // should be pulled from prefs now.
771 test_util()->ResetModel(false); 785 test_util()->ResetModel(false);
772 786
773 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs 787 // NOTE: This doesn't use AssertEquals as only a subset of the TemplateURLs
774 // value are persisted to prefs. 788 // value are persisted to prefs.
775 const TemplateURL* default_turl = model()->GetDefaultSearchProvider(); 789 const TemplateURL* default_turl = model()->GetDefaultSearchProvider();
776 ASSERT_TRUE(default_turl); 790 ASSERT_TRUE(default_turl);
777 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name()); 791 EXPECT_EQ(ASCIIToUTF16("a"), default_turl->short_name());
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 ASSERT_EQ(1U, callback.visits.size()); 1047 ASSERT_EQ(1U, callback.visits.size());
1034 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 1048 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
1035 callback.visits[0].transition, ui::PAGE_TRANSITION_KEYWORD_GENERATED)); 1049 callback.visits[0].transition, ui::PAGE_TRANSITION_KEYWORD_GENERATED));
1036 } 1050 }
1037 1051
1038 // Make sure that the load routine deletes prepopulated engines that no longer 1052 // Make sure that the load routine deletes prepopulated engines that no longer
1039 // exist in the prepopulate data. 1053 // exist in the prepopulate data.
1040 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) { 1054 TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) {
1041 // Create a preloaded template url. Add it to a loaded model and wait for the 1055 // Create a preloaded template url. Add it to a loaded model and wait for the
1042 // saves to finish. 1056 // saves to finish.
1043 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
1044 test_util()->ChangeModelToLoadState(); 1057 test_util()->ChangeModelToLoadState();
1045 model()->Add(t_url); 1058 model()->Add(CreatePreloadedTemplateURL(true, 999999));
1046 ASSERT_TRUE( 1059 ASSERT_TRUE(
1047 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL); 1060 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
1048 base::RunLoop().RunUntilIdle(); 1061 base::RunLoop().RunUntilIdle();
1049 1062
1050 // Ensure that merging clears this engine. 1063 // Ensure that merging clears this engine.
1051 test_util()->ResetModel(true); 1064 test_util()->ResetModel(true);
1052 ASSERT_TRUE( 1065 ASSERT_TRUE(
1053 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); 1066 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL);
1054 1067
1055 // Wait for any saves to finish. 1068 // Wait for any saves to finish.
1056 base::RunLoop().RunUntilIdle(); 1069 base::RunLoop().RunUntilIdle();
1057 1070
1058 // Reload the model to verify that the database was updated as a result of the 1071 // Reload the model to verify that the database was updated as a result of the
1059 // merge. 1072 // merge.
1060 test_util()->ResetModel(true); 1073 test_util()->ResetModel(true);
1061 ASSERT_TRUE( 1074 ASSERT_TRUE(
1062 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL); 1075 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) == NULL);
1063 } 1076 }
1064 1077
1065 // Make sure that load routine doesn't delete prepopulated engines that no 1078 // Make sure that load routine doesn't delete prepopulated engines that no
1066 // longer exist in the prepopulate data if it has been modified by the user. 1079 // longer exist in the prepopulate data if it has been modified by the user.
1067 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) { 1080 TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) {
1068 // Create a preloaded template url and add it to a loaded model. 1081 // Create a preloaded template url and add it to a loaded model.
1069 TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999); 1082 std::unique_ptr<TemplateURL> t_url_ptr =
1083 CreatePreloadedTemplateURL(false, 999999);
1084 TemplateURL* t_url = t_url_ptr.get();
1070 test_util()->ChangeModelToLoadState(); 1085 test_util()->ChangeModelToLoadState();
1071 model()->Add(t_url); 1086 model()->Add(std::move(t_url_ptr));
1072 1087
1073 // Do the copy after t_url is added so that the id is set. 1088 // Do the copy after t_url is added so that the id is set.
1074 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 1089 std::unique_ptr<TemplateURL> cloned_url(
Peter Kasting 2016/08/31 04:12:55 Nit: () -> =
Avi (use Gerrit) 2016/09/01 00:34:26 Done.
1090 base::MakeUnique<TemplateURL>(t_url->data()));
1075 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1091 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1076 1092
1077 // Wait for any saves to finish. 1093 // Wait for any saves to finish.
1078 base::RunLoop().RunUntilIdle(); 1094 base::RunLoop().RunUntilIdle();
1079 1095
1080 // Ensure that merging won't clear it if the user has edited it. 1096 // Ensure that merging won't clear it if the user has edited it.
1081 test_util()->ResetModel(true); 1097 test_util()->ResetModel(true);
1082 const TemplateURL* url_for_unittest = 1098 const TemplateURL* url_for_unittest =
1083 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")); 1099 model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"));
1084 ASSERT_TRUE(url_for_unittest != NULL); 1100 ASSERT_TRUE(url_for_unittest != NULL);
(...skipping 30 matching lines...) Expand all
1115 AssertEquals(*cloned_url, *default_search); 1131 AssertEquals(*cloned_url, *default_search);
1116 } 1132 }
1117 1133
1118 // Make sure that the load routine doesn't delete 1134 // Make sure that the load routine doesn't delete
1119 // prepopulated engines that no longer exist in the prepopulate data if 1135 // prepopulated engines that no longer exist in the prepopulate data if
1120 // it is the default search provider. 1136 // it is the default search provider.
1121 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) { 1137 TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) {
1122 // Set the default search provider to a preloaded template url which 1138 // Set the default search provider to a preloaded template url which
1123 // is not in the current set of preloaded template urls and save 1139 // is not in the current set of preloaded template urls and save
1124 // the result. 1140 // the result.
1125 TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999); 1141 std::unique_ptr<TemplateURL> t_url_ptr =
1142 CreatePreloadedTemplateURL(true, 999999);
1143 TemplateURL* t_url = t_url_ptr.get();
1126 test_util()->ChangeModelToLoadState(); 1144 test_util()->ChangeModelToLoadState();
1127 model()->Add(t_url); 1145 model()->Add(std::move(t_url_ptr));
1128 model()->SetUserSelectedDefaultSearchProvider(t_url); 1146 model()->SetUserSelectedDefaultSearchProvider(t_url);
1129 // Do the copy after t_url is added and set as default so that its 1147 // Do the copy after t_url is added and set as default so that its
1130 // internal state is correct. 1148 // internal state is correct.
1131 std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data())); 1149 std::unique_ptr<TemplateURL> cloned_url(
Peter Kasting 2016/08/31 04:12:56 Nit: () -> =
Avi (use Gerrit) 2016/09/01 00:34:26 Done.
1150 base::MakeUnique<TemplateURL>(t_url->data()));
1132 1151
1133 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest"))); 1152 ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
1134 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider()); 1153 ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
1135 base::RunLoop().RunUntilIdle(); 1154 base::RunLoop().RunUntilIdle();
1136 1155
1137 // Ensure that merging won't clear the prepopulated template url 1156 // Ensure that merging won't clear the prepopulated template url
1138 // which is no longer present if it's the default engine. 1157 // which is no longer present if it's the default engine.
1139 test_util()->ResetModel(true); 1158 test_util()->ResetModel(true);
1140 { 1159 {
1141 const TemplateURL* keyword_url = 1160 const TemplateURL* keyword_url =
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) { 1357 TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) {
1339 // Add a new TemplateURL. 1358 // Add a new TemplateURL.
1340 test_util()->VerifyLoad(); 1359 test_util()->VerifyLoad();
1341 const size_t initial_count = model()->GetTemplateURLs().size(); 1360 const size_t initial_count = model()->GetTemplateURLs().size();
1342 1361
1343 TemplateURLData data; 1362 TemplateURLData data;
1344 data.SetShortName(ASCIIToUTF16("google")); 1363 data.SetShortName(ASCIIToUTF16("google"));
1345 data.SetKeyword(ASCIIToUTF16("keyword")); 1364 data.SetKeyword(ASCIIToUTF16("keyword"));
1346 data.SetURL("http://www.google.com/foo/bar"); 1365 data.SetURL("http://www.google.com/foo/bar");
1347 data.sync_guid.clear(); 1366 data.sync_guid.clear();
1348 TemplateURL* t_url = new TemplateURL(data); 1367 model()->Add(base::MakeUnique<TemplateURL>(data));
1349 model()->Add(t_url);
1350 1368
1351 VerifyObserverCount(1); 1369 VerifyObserverCount(1);
1352 base::RunLoop().RunUntilIdle(); 1370 base::RunLoop().RunUntilIdle();
1353 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1371 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1354 1372
1355 // Reload the model to verify it was actually saved to the database and 1373 // Reload the model to verify it was actually saved to the database and
1356 // assigned a new GUID when brought back. 1374 // assigned a new GUID when brought back.
1357 test_util()->ResetModel(true); 1375 test_util()->ResetModel(true);
1358 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1376 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1359 const TemplateURL* loaded_url = 1377 const TemplateURL* loaded_url =
(...skipping 15 matching lines...) Expand all
1375 data.SetURL("http://www.google.com/foo/bar"); 1393 data.SetURL("http://www.google.com/foo/bar");
1376 std::vector<std::string> encodings; 1394 std::vector<std::string> encodings;
1377 data.input_encodings.push_back("UTF-8"); 1395 data.input_encodings.push_back("UTF-8");
1378 data.input_encodings.push_back("UTF-8"); 1396 data.input_encodings.push_back("UTF-8");
1379 data.input_encodings.push_back("UTF-16"); 1397 data.input_encodings.push_back("UTF-16");
1380 data.input_encodings.push_back("UTF-8"); 1398 data.input_encodings.push_back("UTF-8");
1381 data.input_encodings.push_back("Big5"); 1399 data.input_encodings.push_back("Big5");
1382 data.input_encodings.push_back("UTF-16"); 1400 data.input_encodings.push_back("UTF-16");
1383 data.input_encodings.push_back("Big5"); 1401 data.input_encodings.push_back("Big5");
1384 data.input_encodings.push_back("Windows-1252"); 1402 data.input_encodings.push_back("Windows-1252");
1385 TemplateURL* t_url = new TemplateURL(data); 1403 model()->Add(base::MakeUnique<TemplateURL>(data));
1386 model()->Add(t_url);
1387 1404
1388 VerifyObserverCount(1); 1405 VerifyObserverCount(1);
1389 base::RunLoop().RunUntilIdle(); 1406 base::RunLoop().RunUntilIdle();
1390 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1407 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1391 const TemplateURL* loaded_url = 1408 const TemplateURL* loaded_url =
1392 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1409 model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1393 ASSERT_TRUE(loaded_url != NULL); 1410 ASSERT_TRUE(loaded_url != NULL);
1394 EXPECT_EQ(8U, loaded_url->input_encodings().size()); 1411 EXPECT_EQ(8U, loaded_url->input_encodings().size());
1395 1412
1396 // Reload the model to verify it was actually saved to the database and the 1413 // Reload the model to verify it was actually saved to the database and the
1397 // duplicate encodings were removed. 1414 // duplicate encodings were removed.
1398 test_util()->ResetModel(true); 1415 test_util()->ResetModel(true);
1399 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size()); 1416 ASSERT_EQ(initial_count + 1, model()->GetTemplateURLs().size());
1400 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")); 1417 loaded_url = model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword"));
1401 ASSERT_FALSE(loaded_url == NULL); 1418 ASSERT_FALSE(loaded_url == NULL);
1402 EXPECT_EQ(4U, loaded_url->input_encodings().size()); 1419 EXPECT_EQ(4U, loaded_url->input_encodings().size());
1403 } 1420 }
1404 1421
1405 TEST_F(TemplateURLServiceTest, DefaultExtensionEngine) { 1422 TEST_F(TemplateURLServiceTest, DefaultExtensionEngine) {
1406 test_util()->VerifyLoad(); 1423 test_util()->VerifyLoad();
1407 // Add third-party default search engine. 1424 // Add third-party default search engine.
1408 TemplateURL* user_dse = AddKeywordWithDate( 1425 TemplateURL* user_dse = AddKeywordWithDate(
1409 "user", "user", "http://www.goo.com/s?q={searchTerms}", 1426 "user", "user", "http://www.goo.com/s?q={searchTerms}",
1410 std::string(), std::string(), std::string(), 1427 std::string(), std::string(), std::string(),
1411 true, "UTF-8", Time(), Time()); 1428 true, "UTF-8", Time(), Time());
1412 model()->SetUserSelectedDefaultSearchProvider(user_dse); 1429 model()->SetUserSelectedDefaultSearchProvider(user_dse);
1413 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1430 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1414 1431
1415 TemplateURL* ext_dse = CreateKeywordWithDate( 1432 std::unique_ptr<TemplateURL> ext_dse_ptr = CreateKeywordWithDate(
1416 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", 1433 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}",
1417 std::string(), std::string(), std::string(), 1434 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(),
1418 true, true, "UTF-8", Time(), Time()); 1435 Time());
1436 TemplateURL* ext_dse = ext_dse_ptr.get();
1419 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( 1437 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
1420 new TemplateURL::AssociatedExtensionInfo( 1438 new TemplateURL::AssociatedExtensionInfo(
1421 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext")); 1439 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext"));
1422 extension_info->wants_to_be_default_engine = true; 1440 extension_info->wants_to_be_default_engine = true;
1423 model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info)); 1441 model()->AddExtensionControlledTURL(std::move(ext_dse_ptr),
1442 std::move(extension_info));
1424 EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider()); 1443 EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider());
1425 1444
1426 model()->RemoveExtensionControlledTURL( 1445 model()->RemoveExtensionControlledTURL(
1427 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1446 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1428 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); 1447 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider());
1429 } 1448 }
1430 1449
1431 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { 1450 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) {
1432 test_util()->VerifyLoad(); 1451 test_util()->VerifyLoad();
1433 // Add third-party default search engine. 1452 // Add third-party default search engine.
1434 TemplateURL* user_dse = AddKeywordWithDate( 1453 TemplateURL* user_dse = AddKeywordWithDate(
1435 "user", "user", "http://www.goo.com/s?q={searchTerms}", 1454 "user", "user", "http://www.goo.com/s?q={searchTerms}",
1436 std::string(), std::string(), std::string(), 1455 std::string(), std::string(), std::string(),
1437 true, "UTF-8", Time(), Time()); 1456 true, "UTF-8", Time(), Time());
1438 model()->SetUserSelectedDefaultSearchProvider(user_dse); 1457 model()->SetUserSelectedDefaultSearchProvider(user_dse);
1439 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1458 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1440 1459
1441 TemplateURL* ext_dse = CreateKeywordWithDate( 1460 std::unique_ptr<TemplateURL> ext_dse_ptr = CreateKeywordWithDate(
1442 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1461 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1443 std::string(), std::string(), std::string(), 1462 std::string(), std::string(), std::string(), true, false, "UTF-8", Time(),
1444 true, false, "UTF-8", Time(), Time()); 1463 Time());
1464 TemplateURL* ext_dse = ext_dse_ptr.get();
1445 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( 1465 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
1446 new TemplateURL::AssociatedExtensionInfo( 1466 new TemplateURL::AssociatedExtensionInfo(
1447 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1")); 1467 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1"));
1448 extension_info->wants_to_be_default_engine = false; 1468 extension_info->wants_to_be_default_engine = false;
1449 model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info)); 1469 model()->AddExtensionControlledTURL(std::move(ext_dse_ptr),
1470 std::move(extension_info));
1450 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1471 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1451 1472
1452 ext_dse = CreateKeywordWithDate( 1473 ext_dse_ptr = CreateKeywordWithDate(
1453 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", 1474 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}",
1454 std::string(), std::string(), std::string(), 1475 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(),
1455 true, true, "UTF-8", Time(), Time()); 1476 Time());
1477 ext_dse = ext_dse_ptr.get();
1456 extension_info.reset(new TemplateURL::AssociatedExtensionInfo( 1478 extension_info.reset(new TemplateURL::AssociatedExtensionInfo(
1457 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext2")); 1479 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext2"));
1458 extension_info->wants_to_be_default_engine = true; 1480 extension_info->wants_to_be_default_engine = true;
1459 model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info)); 1481 model()->AddExtensionControlledTURL(std::move(ext_dse_ptr),
1482 std::move(extension_info));
1460 EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider()); 1483 EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider());
1461 1484
1462 test_util()->ResetModel(true); 1485 test_util()->ResetModel(true);
1463 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); 1486 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user"));
1464 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); 1487 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider());
1465 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1488 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1466 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); 1489 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2")));
1467 } 1490 }
1468 1491
1469 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { 1492 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) {
(...skipping 19 matching lines...) Expand all
1489 data.input_encodings = base::SplitString( 1512 data.input_encodings = base::SplitString(
1490 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 1513 kEncodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
1491 data.alternate_urls.push_back(kAlternateURL); 1514 data.alternate_urls.push_back(kAlternateURL);
1492 data.search_terms_replacement_key = kSearchTermsReplacementKey; 1515 data.search_terms_replacement_key = kSearchTermsReplacementKey;
1493 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data)); 1516 std::unique_ptr<TemplateURL> expected_managed_default(new TemplateURL(data));
1494 EXPECT_TRUE(model()->is_default_search_managed()); 1517 EXPECT_TRUE(model()->is_default_search_managed());
1495 const TemplateURL* actual_managed_default = 1518 const TemplateURL* actual_managed_default =
1496 model()->GetDefaultSearchProvider(); 1519 model()->GetDefaultSearchProvider();
1497 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1520 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1498 1521
1499 TemplateURL* ext_dse = CreateKeywordWithDate( 1522 std::unique_ptr<TemplateURL> ext_dse_ptr = CreateKeywordWithDate(
1500 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1523 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1501 std::string(), std::string(), std::string(), 1524 std::string(), std::string(), std::string(), true, true, "UTF-8", Time(),
1502 true, true, "UTF-8", Time(), Time()); 1525 Time());
1526 TemplateURL* ext_dse = ext_dse_ptr.get();
1503 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( 1527 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
1504 new TemplateURL::AssociatedExtensionInfo( 1528 new TemplateURL::AssociatedExtensionInfo(
1505 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1")); 1529 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1"));
1506 extension_info->wants_to_be_default_engine = true; 1530 extension_info->wants_to_be_default_engine = true;
1507 model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info)); 1531 model()->AddExtensionControlledTURL(std::move(ext_dse_ptr),
1532 std::move(extension_info));
1508 EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1533 EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1509 EXPECT_TRUE(model()->is_default_search_managed()); 1534 EXPECT_TRUE(model()->is_default_search_managed());
1510 actual_managed_default = model()->GetDefaultSearchProvider(); 1535 actual_managed_default = model()->GetDefaultSearchProvider();
1511 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1536 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1512 } 1537 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698