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..9175a42b78a2f07f18ca82de8fefecb2451b5eca 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,15 +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_ptr = 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()); |
+ TemplateURL* ext_dse = ext_dse_ptr.get(); |
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)); |
+ model()->AddExtensionControlledTURL(std::move(ext_dse_ptr), |
Peter Kasting
2016/09/01 08:21:39
Nit: Does it make sense for this Add() variant to
Avi (use Gerrit)
2016/09/01 15:14:46
Might as well for completeness's sake.
|
+ std::move(extension_info)); |
EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider()); |
model()->RemoveExtensionControlledTURL( |
@@ -1443,25 +1440,29 @@ TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { |
model()->SetUserSelectedDefaultSearchProvider(user_dse); |
EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
- TemplateURL* ext_dse = CreateKeywordWithDate( |
+ std::unique_ptr<TemplateURL> ext_dse_ptr = 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()); |
+ TemplateURL* ext_dse = ext_dse_ptr.get(); |
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_ptr), |
+ std::move(extension_info)); |
EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
- ext_dse = CreateKeywordWithDate( |
+ ext_dse_ptr = CreateKeywordWithDate( |
model(), "ext2", "ext2", "http://www.ext2.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()); |
+ ext_dse = ext_dse_ptr.get(); |
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)); |
+ model()->AddExtensionControlledTURL(std::move(ext_dse_ptr), |
+ std::move(extension_info)); |
EXPECT_EQ(ext_dse, model()->GetDefaultSearchProvider()); |
test_util()->ResetModel(true); |
@@ -1501,15 +1502,17 @@ TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { |
model()->GetDefaultSearchProvider(); |
ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
- TemplateURL* ext_dse = CreateKeywordWithDate( |
+ std::unique_ptr<TemplateURL> ext_dse_ptr = 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()); |
+ TemplateURL* ext_dse = ext_dse_ptr.get(); |
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)); |
+ model()->AddExtensionControlledTURL(std::move(ext_dse_ptr), |
+ std::move(extension_info)); |
EXPECT_EQ(ext_dse, model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
EXPECT_TRUE(model()->is_default_search_managed()); |
actual_managed_default = model()->GetDefaultSearchProvider(); |