| Index: chrome/browser/search_engines/template_url_service_unittest.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service_unittest.cc b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| index 482d6dd6426ba8a006a2e044072f2ec6b17dff0e..fb3369b734a628460ae5b5fe7eb7863b28f62dad 100644
|
| --- a/chrome/browser/search_engines/template_url_service_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/bind_helpers.h"
|
| #include "base/callback.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/run_loop.h"
|
| #include "base/strings/string_split.h"
|
| @@ -60,7 +61,7 @@ struct QueryHistoryCallbackImpl {
|
| history::VisitVector visits;
|
| };
|
|
|
| -TemplateURL* CreateKeywordWithDate(
|
| +std::unique_ptr<TemplateURL> CreateKeywordWithDate(
|
| TemplateURLService* model,
|
| const std::string& short_name,
|
| const std::string& keyword,
|
| @@ -87,7 +88,7 @@ TemplateURL* CreateKeywordWithDate(
|
| encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| data.date_created = date_created;
|
| data.last_modified = last_modified;
|
| - return new TemplateURL(data);
|
| + return base::MakeUnique<TemplateURL>(data);
|
| }
|
|
|
| TemplateURL* AddKeywordWithDate(
|
| @@ -102,10 +103,9 @@ TemplateURL* AddKeywordWithDate(
|
| const std::string& encodings,
|
| Time date_created,
|
| Time last_modified) {
|
| - TemplateURL* t_url = CreateKeywordWithDate(
|
| - model, short_name, keyword, url, suggest_url, alternate_url,favicon_url,
|
| - safe_for_autoreplace, false, encodings, date_created, last_modified);
|
| - model->Add(t_url);
|
| + TemplateURL* t_url = model->Add(CreateKeywordWithDate(
|
| + model, short_name, keyword, url, suggest_url, alternate_url, favicon_url,
|
| + safe_for_autoreplace, false, encodings, date_created, last_modified));
|
| EXPECT_NE(0, t_url->id());
|
| return t_url;
|
| }
|
| @@ -160,9 +160,10 @@ class TemplateURLServiceTest : public testing::Test {
|
| void AssertTimesEqual(const base::Time& expected, const base::Time& actual);
|
|
|
| // Create an URL that appears to have been prepopulated, but won't be in the
|
| - // current data. The caller owns the returned TemplateURL*.
|
| - TemplateURL* CreatePreloadedTemplateURL(bool safe_for_autoreplace,
|
| - int prepopulate_id);
|
| + // current data.
|
| + std::unique_ptr<TemplateURL> CreatePreloadedTemplateURL(
|
| + bool safe_for_autoreplace,
|
| + int prepopulate_id);
|
|
|
| // Helper methods to make calling TemplateURLServiceTestUtil methods less
|
| // visually noisy in the test code.
|
| @@ -250,7 +251,7 @@ void TemplateURLServiceTest::AssertTimesEqual(const base::Time& expected,
|
| ASSERT_LT((expected - actual).magnitude(), base::TimeDelta::FromSeconds(1));
|
| }
|
|
|
| -TemplateURL* TemplateURLServiceTest::CreatePreloadedTemplateURL(
|
| +std::unique_ptr<TemplateURL> TemplateURLServiceTest::CreatePreloadedTemplateURL(
|
| bool safe_for_autoreplace,
|
| int prepopulate_id) {
|
| TemplateURLData data;
|
| @@ -264,7 +265,7 @@ TemplateURL* TemplateURLServiceTest::CreatePreloadedTemplateURL(
|
| data.date_created = Time::FromTimeT(100);
|
| data.last_modified = Time::FromTimeT(100);
|
| data.prepopulate_id = prepopulate_id;
|
| - return new TemplateURL(data);
|
| + return base::MakeUnique<TemplateURL>(data);
|
| }
|
|
|
| void TemplateURLServiceTest::VerifyObserverCount(int expected_changed_count) {
|
| @@ -298,8 +299,7 @@ TEST_F(TemplateURLServiceTest, AddUpdateRemove) {
|
| data.date_created = Time::FromTimeT(100);
|
| data.last_modified = Time::FromTimeT(100);
|
| data.sync_guid = "00000000-0000-0000-0000-000000000001";
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(base::MakeUnique<TemplateURL>(data));
|
| ASSERT_TRUE(model()->CanAddAutogeneratedKeyword(ASCIIToUTF16("keyword"),
|
| GURL(), NULL));
|
| VerifyObserverCount(1);
|
| @@ -309,7 +309,8 @@ TEST_F(TemplateURLServiceTest, AddUpdateRemove) {
|
| // We need to make a second copy as the model takes ownership of |t_url| and
|
| // will delete it. We have to do this after calling Add() since that gives
|
| // |t_url| its ID.
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url =
|
| + base::MakeUnique<TemplateURL>(t_url->data());
|
|
|
| // Reload the model to verify it was actually saved to the database.
|
| test_util()->ResetModel(true);
|
| @@ -373,8 +374,7 @@ TEST_F(TemplateURLServiceTest, AddSameKeyword) {
|
| data.SetKeyword(ASCIIToUTF16("keyword"));
|
| data.SetURL("http://test2");
|
| data.safe_for_autoreplace = false;
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(base::MakeUnique<TemplateURL>(data));
|
|
|
| // Because the old TemplateURL was replaceable and the new one wasn't, the new
|
| // one should have replaced the old.
|
| @@ -389,7 +389,7 @@ TEST_F(TemplateURLServiceTest, AddSameKeyword) {
|
| data.SetShortName(ASCIIToUTF16("third"));
|
| data.SetURL("http://test3");
|
| data.safe_for_autoreplace = true;
|
| - model()->Add(new TemplateURL(data));
|
| + model()->Add(base::MakeUnique<TemplateURL>(data));
|
| VerifyObserverCount(0);
|
| EXPECT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
|
| EXPECT_EQ(ASCIIToUTF16("second"), t_url->short_name());
|
| @@ -401,8 +401,7 @@ TEST_F(TemplateURLServiceTest, AddSameKeyword) {
|
| data.SetShortName(ASCIIToUTF16("fourth"));
|
| data.SetURL("http://test4");
|
| data.safe_for_autoreplace = false;
|
| - TemplateURL* t_url2 = new TemplateURL(data);
|
| - model()->Add(t_url2);
|
| + TemplateURL* t_url2 = model()->Add(base::MakeUnique<TemplateURL>(data));
|
| VerifyObserverCount(1);
|
| EXPECT_EQ(t_url2, model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
|
| EXPECT_EQ(ASCIIToUTF16("fourth"), t_url2->short_name());
|
| @@ -474,8 +473,7 @@ TEST_F(TemplateURLServiceTest, AddSameKeywordWithExtensionPresent) {
|
| data.SetKeyword(ASCIIToUTF16("keyword"));
|
| data.SetURL("http://test3");
|
| data.safe_for_autoreplace = true;
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(base::MakeUnique<TemplateURL>(data));
|
| EXPECT_EQ(extension,
|
| model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
|
| EXPECT_EQ(t_url, model()->GetTemplateURLForHost("test3"));
|
| @@ -486,8 +484,7 @@ TEST_F(TemplateURLServiceTest, AddSameKeywordWithExtensionPresent) {
|
| data.SetShortName(ASCIIToUTF16("name2"));
|
| data.SetURL("http://test4");
|
| data.safe_for_autoreplace = false;
|
| - TemplateURL* t_url2 = new TemplateURL(data);
|
| - model()->Add(t_url2);
|
| + TemplateURL* t_url2 = model()->Add(base::MakeUnique<TemplateURL>(data));
|
| EXPECT_EQ(t_url2,
|
| model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")));
|
| }
|
| @@ -637,8 +634,7 @@ TEST_F(TemplateURLServiceTest, Reset) {
|
| data.favicon_url = GURL("http://favicon.url");
|
| data.date_created = Time::FromTimeT(100);
|
| data.last_modified = Time::FromTimeT(100);
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(base::MakeUnique<TemplateURL>(data));
|
|
|
| VerifyObserverCount(1);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -662,7 +658,8 @@ TEST_F(TemplateURLServiceTest, Reset) {
|
| ASSERT_TRUE(
|
| model()->GetTemplateURLForKeyword(ASCIIToUTF16("keyword")) == NULL);
|
|
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url(
|
| + base::MakeUnique<TemplateURL>(t_url->data()));
|
|
|
| // Reload the model from the database and make sure the change took.
|
| test_util()->ResetModel(true);
|
| @@ -691,7 +688,8 @@ TEST_F(TemplateURLServiceTest, DefaultSearchProvider) {
|
| VerifyObserverCount(1);
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url(
|
| + base::MakeUnique<TemplateURL>(t_url->data()));
|
|
|
| // Make sure when we reload we get a default search provider.
|
| test_util()->ResetModel(true);
|
| @@ -763,13 +761,13 @@ TEST_F(TemplateURLServiceTest, DefaultSearchProviderLoadedFromPrefs) {
|
| data.instant_url = "http://instant";
|
| data.date_created = Time::FromTimeT(100);
|
| data.last_modified = Time::FromTimeT(100);
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(base::MakeUnique<TemplateURL>(data));
|
| const TemplateURLID id = t_url->id();
|
|
|
| model()->SetUserSelectedDefaultSearchProvider(t_url);
|
| base::RunLoop().RunUntilIdle();
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url(
|
| + base::MakeUnique<TemplateURL>(t_url->data()));
|
|
|
| // Reset the model and don't load it. The template url we set as the default
|
| // should be pulled from prefs now.
|
| @@ -1045,9 +1043,8 @@ TEST_F(TemplateURLServiceTest, GenerateVisitOnKeyword) {
|
| TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) {
|
| // Create a preloaded template url. Add it to a loaded model and wait for the
|
| // saves to finish.
|
| - TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
|
| test_util()->ChangeModelToLoadState();
|
| - model()->Add(t_url);
|
| + model()->Add(CreatePreloadedTemplateURL(true, 999999));
|
| ASSERT_TRUE(
|
| model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")) != NULL);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -1071,12 +1068,12 @@ TEST_F(TemplateURLServiceTest, LoadDeletesUnusedProvider) {
|
| // longer exist in the prepopulate data if it has been modified by the user.
|
| TEST_F(TemplateURLServiceTest, LoadRetainsModifiedProvider) {
|
| // Create a preloaded template url and add it to a loaded model.
|
| - TemplateURL* t_url = CreatePreloadedTemplateURL(false, 999999);
|
| test_util()->ChangeModelToLoadState();
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(CreatePreloadedTemplateURL(false, 999999));
|
|
|
| // Do the copy after t_url is added so that the id is set.
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url =
|
| + base::MakeUnique<TemplateURL>(t_url->data());
|
| ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
|
|
|
| // Wait for any saves to finish.
|
| @@ -1127,13 +1124,13 @@ TEST_F(TemplateURLServiceTest, LoadRetainsDefaultProvider) {
|
| // Set the default search provider to a preloaded template url which
|
| // is not in the current set of preloaded template urls and save
|
| // the result.
|
| - TemplateURL* t_url = CreatePreloadedTemplateURL(true, 999999);
|
| test_util()->ChangeModelToLoadState();
|
| - model()->Add(t_url);
|
| + TemplateURL* t_url = model()->Add(CreatePreloadedTemplateURL(true, 999999));
|
| model()->SetUserSelectedDefaultSearchProvider(t_url);
|
| // Do the copy after t_url is added and set as default so that its
|
| // internal state is correct.
|
| - std::unique_ptr<TemplateURL> cloned_url(new TemplateURL(t_url->data()));
|
| + std::unique_ptr<TemplateURL> cloned_url =
|
| + base::MakeUnique<TemplateURL>(t_url->data());
|
|
|
| ASSERT_EQ(t_url, model()->GetTemplateURLForKeyword(ASCIIToUTF16("unittest")));
|
| ASSERT_EQ(t_url, model()->GetDefaultSearchProvider());
|
| @@ -1350,8 +1347,7 @@ TEST_F(TemplateURLServiceTest, PatchEmptySyncGUID) {
|
| data.SetKeyword(ASCIIToUTF16("keyword"));
|
| data.SetURL("http://www.google.com/foo/bar");
|
| data.sync_guid.clear();
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + model()->Add(base::MakeUnique<TemplateURL>(data));
|
|
|
| VerifyObserverCount(1);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -1387,8 +1383,7 @@ TEST_F(TemplateURLServiceTest, DuplicateInputEncodings) {
|
| data.input_encodings.push_back("UTF-16");
|
| data.input_encodings.push_back("Big5");
|
| data.input_encodings.push_back("Windows-1252");
|
| - TemplateURL* t_url = new TemplateURL(data);
|
| - model()->Add(t_url);
|
| + model()->Add(base::MakeUnique<TemplateURL>(data));
|
|
|
| VerifyObserverCount(1);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -1417,16 +1412,17 @@ TEST_F(TemplateURLServiceTest, DefaultExtensionEngine) {
|
| model()->SetUserSelectedDefaultSearchProvider(user_dse);
|
| EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
|
|
|
| - TemplateURL* ext_dse = CreateKeywordWithDate(
|
| + std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
|
| model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}",
|
| - std::string(), std::string(), std::string(),
|
| - true, true, "UTF-8", Time(), Time());
|
| + std::string(), std::string(), std::string(), true, true, "UTF-8", Time(),
|
| + Time());
|
| std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
|
| new TemplateURL::AssociatedExtensionInfo(
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext"));
|
| extension_info->wants_to_be_default_engine = true;
|
| - model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info));
|
| - EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider());
|
| + TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| + EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider());
|
|
|
| model()->RemoveExtensionControlledTURL(
|
| "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| @@ -1443,26 +1439,28 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) {
|
| model()->SetUserSelectedDefaultSearchProvider(user_dse);
|
| EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
|
|
|
| - TemplateURL* ext_dse = CreateKeywordWithDate(
|
| + std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
|
| model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
|
| - std::string(), std::string(), std::string(),
|
| - true, false, "UTF-8", Time(), Time());
|
| + std::string(), std::string(), std::string(), true, false, "UTF-8", Time(),
|
| + Time());
|
| std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
|
| new TemplateURL::AssociatedExtensionInfo(
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1"));
|
| extension_info->wants_to_be_default_engine = false;
|
| - model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info));
|
| + model()->AddExtensionControlledTURL(std::move(ext_dse),
|
| + std::move(extension_info));
|
| EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
|
|
|
| - ext_dse = CreateKeywordWithDate(
|
| - model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}",
|
| - std::string(), std::string(), std::string(),
|
| - true, true, "UTF-8", Time(), Time());
|
| + ext_dse = CreateKeywordWithDate(model(), "ext2", "ext2",
|
| + "http://www.ext2.com/s?q={searchTerms}",
|
| + std::string(), std::string(), std::string(),
|
| + true, true, "UTF-8", Time(), Time());
|
| extension_info.reset(new TemplateURL::AssociatedExtensionInfo(
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext2"));
|
| extension_info->wants_to_be_default_engine = true;
|
| - model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info));
|
| - EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider());
|
| + TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| + EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider());
|
|
|
| test_util()->ResetModel(true);
|
| user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user"));
|
| @@ -1501,16 +1499,18 @@ TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) {
|
| model()->GetDefaultSearchProvider();
|
| ExpectSimilar(expected_managed_default.get(), actual_managed_default);
|
|
|
| - TemplateURL* ext_dse = CreateKeywordWithDate(
|
| + std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
|
| model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
|
| - std::string(), std::string(), std::string(),
|
| - true, true, "UTF-8", Time(), Time());
|
| + std::string(), std::string(), std::string(), true, true, "UTF-8", Time(),
|
| + Time());
|
| std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
|
| new TemplateURL::AssociatedExtensionInfo(
|
| TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, "ext1"));
|
| extension_info->wants_to_be_default_engine = true;
|
| - model()->AddExtensionControlledTURL(ext_dse, std::move(extension_info));
|
| - EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
|
| + TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL(
|
| + std::move(ext_dse), std::move(extension_info));
|
| + EXPECT_EQ(ext_dse_ptr,
|
| + model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
|
| EXPECT_TRUE(model()->is_default_search_managed());
|
| actual_managed_default = model()->GetDefaultSearchProvider();
|
| ExpectSimilar(expected_managed_default.get(), actual_managed_default);
|
|
|