diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-07-14 17:41:05 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-08-04 12:37:36 +0000 |
commit | 399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (patch) | |
tree | 6b06b60ff365abef0e13b3503d593a0df48d20e8 /chromium/components/search_engines | |
parent | 7366110654eec46f21b6824f302356426f48cd74 (diff) | |
download | qtwebengine-chromium-399c965b6064c440ddcf4015f5f8e9d131c7a0a6.tar.gz |
BASELINE: Update Chromium to 52.0.2743.76 and Ninja to 1.7.1
Change-Id: I382f51b959689505a60f8b707255ecb344f7d8b4
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/components/search_engines')
35 files changed, 413 insertions, 352 deletions
diff --git a/chromium/components/search_engines/default_search_manager.cc b/chromium/components/search_engines/default_search_manager.cc index 22cfb06e82d..966a721f17e 100644 --- a/chromium/components/search_engines/default_search_manager.cc +++ b/chromium/components/search_engines/default_search_manager.cc @@ -108,7 +108,7 @@ void DefaultSearchManager::RegisterProfilePrefs( // static void DefaultSearchManager::AddPrefValueToMap( - scoped_ptr<base::DictionaryValue> value, + std::unique_ptr<base::DictionaryValue> value, PrefValueMap* pref_value_map) { pref_value_map->SetValue(kDefaultSearchProviderDataPrefName, std::move(value)); @@ -189,7 +189,7 @@ void DefaultSearchManager::SetUserSelectedDefaultSearchEngine( base::Int64ToString(data.last_modified.ToInternalValue())); url_dict.SetInteger(kUsageCount, data.usage_count); - scoped_ptr<base::ListValue> alternate_urls(new base::ListValue); + std::unique_ptr<base::ListValue> alternate_urls(new base::ListValue); for (std::vector<std::string>::const_iterator it = data.alternate_urls.begin(); it != data.alternate_urls.end(); ++it) { @@ -197,7 +197,7 @@ void DefaultSearchManager::SetUserSelectedDefaultSearchEngine( } url_dict.Set(kAlternateURLs, alternate_urls.release()); - scoped_ptr<base::ListValue> encodings(new base::ListValue); + std::unique_ptr<base::ListValue> encodings(new base::ListValue); for (std::vector<std::string>::const_iterator it = data.input_encodings.begin(); it != data.input_encodings.end(); ++it) { @@ -405,7 +405,7 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() { } void DefaultSearchManager::LoadPrepopulatedDefaultSearch() { - scoped_ptr<TemplateURLData> data = + std::unique_ptr<TemplateURLData> data = TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(pref_service_); fallback_default_search_ = std::move(data); MergePrefsDataWithPrepopulated(); diff --git a/chromium/components/search_engines/default_search_manager.h b/chromium/components/search_engines/default_search_manager.h index 774bf27b7bc..3cf6960340e 100644 --- a/chromium/components/search_engines/default_search_manager.h +++ b/chromium/components/search_engines/default_search_manager.h @@ -5,9 +5,10 @@ #ifndef COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ #define COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ +#include <memory> + #include "base/callback.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "components/prefs/pref_change_registrar.h" namespace base { @@ -77,7 +78,7 @@ class DefaultSearchManager { static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); // Save default search provider pref values into the map provided. - static void AddPrefValueToMap(scoped_ptr<base::DictionaryValue> value, + static void AddPrefValueToMap(std::unique_ptr<base::DictionaryValue> value, PrefValueMap* pref_value_map); // Testing code can call this with |disabled| set to true to cause @@ -144,16 +145,16 @@ class DefaultSearchManager { // Default search engine provided by pre-populated data or by the // |kSearchProviderOverrides| pref. This will be used when no other default // search engine has been selected. - scoped_ptr<TemplateURLData> fallback_default_search_; + std::unique_ptr<TemplateURLData> fallback_default_search_; // Default search engine provided by extension (usings Settings Override API). // This will be null if there are no extensions installed which provide // default search engines. - scoped_ptr<TemplateURLData> extension_default_search_; + std::unique_ptr<TemplateURLData> extension_default_search_; // Default search engine provided by prefs (either user prefs or policy // prefs). This will be null if no value was set in the pref store. - scoped_ptr<TemplateURLData> prefs_default_search_; + std::unique_ptr<TemplateURLData> prefs_default_search_; // True if the default search is currently enforced by policy. bool default_search_controlled_by_policy_; diff --git a/chromium/components/search_engines/default_search_manager_unittest.cc b/chromium/components/search_engines/default_search_manager_unittest.cc index 11b4eab2f37..682b7144979 100644 --- a/chromium/components/search_engines/default_search_manager_unittest.cc +++ b/chromium/components/search_engines/default_search_manager_unittest.cc @@ -2,18 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "components/search_engines/default_search_manager.h" + #include <stddef.h> +#include <memory> + #include "base/files/scoped_temp_dir.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/pref_registry/testing_pref_service_syncable.h" -#include "components/search_engines/default_search_manager.h" #include "components/search_engines/search_engines_pref_names.h" #include "components/search_engines/template_url_data.h" #include "components/search_engines/template_url_prepopulate_data.h" @@ -51,7 +53,7 @@ void SetOverrides(user_prefs::TestingPrefServiceSyncable* prefs, bool update) { prefs->SetUserPref(prefs::kSearchProviderOverridesVersion, new base::FundamentalValue(1)); base::ListValue* overrides = new base::ListValue; - scoped_ptr<base::DictionaryValue> entry(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); entry->SetString("name", update ? "new_foo" : "foo"); entry->SetString("keyword", update ? "new_fook" : "fook"); @@ -88,7 +90,7 @@ void SetPolicy(user_prefs::TestingPrefServiceSyncable* prefs, EXPECT_FALSE(data->keyword().empty()); EXPECT_FALSE(data->url().empty()); } - scoped_ptr<base::DictionaryValue> entry(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); entry->SetString(DefaultSearchManager::kShortName, data->short_name()); entry->SetString(DefaultSearchManager::kKeyword, data->keyword()); entry->SetString(DefaultSearchManager::kURL, data->url()); @@ -97,7 +99,7 @@ void SetPolicy(user_prefs::TestingPrefServiceSyncable* prefs, data->suggestions_url); entry->SetBoolean(DefaultSearchManager::kSafeForAutoReplace, data->safe_for_autoreplace); - scoped_ptr<base::ListValue> alternate_urls(new base::ListValue); + std::unique_ptr<base::ListValue> alternate_urls(new base::ListValue); for (std::vector<std::string>::const_iterator it = data->alternate_urls.begin(); it != data->alternate_urls.end(); @@ -106,7 +108,7 @@ void SetPolicy(user_prefs::TestingPrefServiceSyncable* prefs, } entry->Set(DefaultSearchManager::kAlternateURLs, alternate_urls.release()); - scoped_ptr<base::ListValue> encodings(new base::ListValue); + std::unique_ptr<base::ListValue> encodings(new base::ListValue); for (std::vector<std::string>::const_iterator it = data->input_encodings.begin(); it != data->input_encodings.end(); @@ -121,9 +123,9 @@ void SetPolicy(user_prefs::TestingPrefServiceSyncable* prefs, prefs->SetManagedPref(kDefaultSearchProviderData, entry.release()); } -scoped_ptr<TemplateURLData> GenerateDummyTemplateURLData( +std::unique_ptr<TemplateURLData> GenerateDummyTemplateURLData( const std::string& type) { - scoped_ptr<TemplateURLData> data(new TemplateURLData()); + std::unique_ptr<TemplateURLData> data(new TemplateURLData()); data->SetShortName(base::UTF8ToUTF16(std::string(type).append("name"))); data->SetKeyword(base::UTF8ToUTF16(std::string(type).append("key"))); data->SetURL(std::string("http://").append(type).append("foo/{searchTerms}")); @@ -157,7 +159,7 @@ class DefaultSearchManagerTest : public testing::Test { } private: - scoped_ptr<user_prefs::TestingPrefServiceSyncable> pref_service_; + std::unique_ptr<user_prefs::TestingPrefServiceSyncable> pref_service_; DISALLOW_COPY_AND_ASSIGN(DefaultSearchManagerTest); }; @@ -200,7 +202,7 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { EXPECT_EQ(DefaultSearchManager::FROM_FALLBACK, source); // Setting a user pref overrides the pre-populated values. - scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); + std::unique_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); manager.SetUserSelectedDefaultSearchEngine(*data.get()); ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); @@ -208,7 +210,8 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { // Updating the user pref (externally to this instance of // DefaultSearchManager) triggers an update. - scoped_ptr<TemplateURLData> new_data = GenerateDummyTemplateURLData("user2"); + std::unique_ptr<TemplateURLData> new_data = + GenerateDummyTemplateURLData("user2"); DefaultSearchManager other_manager(pref_service(), DefaultSearchManager::ObserverCallback()); other_manager.SetUserSelectedDefaultSearchEngine(*new_data.get()); @@ -258,14 +261,14 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByOverrides) { TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { DefaultSearchManager manager(pref_service(), DefaultSearchManager::ObserverCallback()); - scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); + std::unique_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); manager.SetUserSelectedDefaultSearchEngine(*data.get()); DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); EXPECT_EQ(DefaultSearchManager::FROM_USER, source); - scoped_ptr<TemplateURLData> policy_data = + std::unique_ptr<TemplateURLData> policy_data = GenerateDummyTemplateURLData("policy"); SetPolicy(pref_service(), true, policy_data.get()); @@ -286,7 +289,7 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { DefaultSearchManager manager(pref_service(), DefaultSearchManager::ObserverCallback()); - scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); + std::unique_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); manager.SetUserSelectedDefaultSearchEngine(*data); DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; @@ -294,7 +297,7 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { EXPECT_EQ(DefaultSearchManager::FROM_USER, source); // Extension trumps prefs: - scoped_ptr<TemplateURLData> extension_data_1 = + std::unique_ptr<TemplateURLData> extension_data_1 = GenerateDummyTemplateURLData("ext1"); manager.SetExtensionControlledDefaultSearchEngine(*extension_data_1); @@ -303,7 +306,7 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { EXPECT_EQ(DefaultSearchManager::FROM_EXTENSION, source); // Policy trumps extension: - scoped_ptr<TemplateURLData> policy_data = + std::unique_ptr<TemplateURLData> policy_data = GenerateDummyTemplateURLData("policy"); SetPolicy(pref_service(), true, policy_data.get()); @@ -312,9 +315,9 @@ TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { pref_service()->RemoveManagedPref(kDefaultSearchProviderData); // Extensions trump each other: - scoped_ptr<TemplateURLData> extension_data_2 = + std::unique_ptr<TemplateURLData> extension_data_2 = GenerateDummyTemplateURLData("ext2"); - scoped_ptr<TemplateURLData> extension_data_3 = + std::unique_ptr<TemplateURLData> extension_data_3 = GenerateDummyTemplateURLData("ext3"); manager.SetExtensionControlledDefaultSearchEngine(*extension_data_2); manager.SetExtensionControlledDefaultSearchEngine(*extension_data_3); diff --git a/chromium/components/search_engines/default_search_policy_handler.cc b/chromium/components/search_engines/default_search_policy_handler.cc index d8389934500..341f7f00e1c 100644 --- a/chromium/components/search_engines/default_search_policy_handler.cc +++ b/chromium/components/search_engines/default_search_policy_handler.cc @@ -5,9 +5,11 @@ #include "components/search_engines/default_search_policy_handler.h" #include <stddef.h> + #include <utility> #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" @@ -232,7 +234,7 @@ bool DefaultSearchPolicyHandler::CheckPolicySettings(const PolicyMap& policies, void DefaultSearchPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, PrefValueMap* prefs) { if (DefaultSearchProviderIsDisabled(policies)) { - scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); dict->SetBoolean(DefaultSearchManager::kDisabledByPolicy, true); DefaultSearchManager::AddPrefValueToMap(std::move(dict), prefs); return; @@ -246,7 +248,7 @@ void DefaultSearchPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, if (!DefaultSearchURLIsValid(policies, &dummy, &url)) return; - scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); for (size_t i = 0; i < arraysize(kDefaultSearchPolicyDataMap); ++i) { const char* policy_name = kDefaultSearchPolicyDataMap[i].policy_name; switch (kDefaultSearchPolicyDataMap[i].value_type) { @@ -367,7 +369,7 @@ void DefaultSearchPolicyHandler::EnsureListPrefExists( base::Value* value; base::ListValue* list_value; if (!prefs->GetValue(path, &value) || !value->GetAsList(&list_value)) - prefs->SetValue(path, make_scoped_ptr(new base::ListValue())); + prefs->SetValue(path, base::WrapUnique(new base::ListValue())); } } // namespace policy diff --git a/chromium/components/search_engines/default_search_policy_handler_unittest.cc b/chromium/components/search_engines/default_search_policy_handler_unittest.cc index c4fdea213f8..6cdbf02f86c 100644 --- a/chromium/components/search_engines/default_search_policy_handler_unittest.cc +++ b/chromium/components/search_engines/default_search_policy_handler_unittest.cc @@ -2,12 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/memory/scoped_ptr.h" +#include "components/search_engines/default_search_policy_handler.h" + +#include <memory> + +#include "base/memory/ptr_util.h" #include "components/policy/core/browser/configuration_policy_pref_store.h" #include "components/policy/core/browser/configuration_policy_pref_store_test.h" #include "components/policy/core/common/policy_types.h" #include "components/search_engines/default_search_manager.h" -#include "components/search_engines/default_search_policy_handler.h" #include "components/search_engines/search_engines_pref_names.h" #include "policy/policy_constants.h" @@ -31,7 +34,7 @@ class DefaultSearchPolicyHandlerTest } void SetUp() override { - handler_list_.AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( + handler_list_.AddHandler(base::WrapUnique<ConfigurationPolicyHandler>( new DefaultSearchPolicyHandler)); } @@ -83,71 +86,43 @@ void DefaultSearchPolicyHandlerTest:: base::ListValue* encodings = new base::ListValue(); encodings->AppendString("UTF-16"); encodings->AppendString("UTF-8"); - policy->Set(key::kDefaultSearchProviderEnabled, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::FundamentalValue(true), - NULL); - policy->Set(key::kDefaultSearchProviderSearchURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kSearchURL), - NULL); - policy->Set(key::kDefaultSearchProviderName, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kName), - NULL); - policy->Set(key::kDefaultSearchProviderKeyword, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kKeyword), - NULL); - policy->Set(key::kDefaultSearchProviderSuggestURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kSuggestURL), - NULL); - policy->Set(key::kDefaultSearchProviderIconURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kIconURL), - NULL); + policy->Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::FundamentalValue(true)), nullptr); + policy->Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kSearchURL)), nullptr); + policy->Set(key::kDefaultSearchProviderName, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kName)), nullptr); + policy->Set(key::kDefaultSearchProviderKeyword, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kKeyword)), nullptr); + policy->Set(key::kDefaultSearchProviderSuggestURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kSuggestURL)), nullptr); + policy->Set(key::kDefaultSearchProviderIconURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kIconURL)), nullptr); policy->Set(key::kDefaultSearchProviderEncodings, POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, encodings, nullptr); + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(encodings), nullptr); policy->Set(key::kDefaultSearchProviderAlternateURLs, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, - default_alternate_urls_.DeepCopy(), nullptr); + default_alternate_urls_.CreateDeepCopy(), nullptr); policy->Set(key::kDefaultSearchProviderSearchTermsReplacementKey, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kReplacementKey), - NULL); - policy->Set(key::kDefaultSearchProviderImageURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kImageURL), - NULL); + POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kReplacementKey)), + nullptr); + policy->Set(key::kDefaultSearchProviderImageURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kImageURL)), nullptr); policy->Set(key::kDefaultSearchProviderImageURLPostParams, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kImageParams), - NULL); - policy->Set(key::kDefaultSearchProviderNewTabURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kNewTabURL), - NULL); + POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kImageParams)), nullptr); + policy->Set(key::kDefaultSearchProviderNewTabURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kNewTabURL)), nullptr); } // Checks that if the default search policy is missing, that no elements of the @@ -170,7 +145,7 @@ TEST_F(DefaultSearchPolicyHandlerTest, Invalid) { const char bad_search_url[] = "http://test.com/noSearchTerms"; policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, - new base::StringValue(bad_search_url), nullptr); + base::WrapUnique(new base::StringValue(bad_search_url)), nullptr); UpdateProviderPolicy(policy); const base::Value* temp = nullptr; @@ -244,12 +219,9 @@ TEST_F(DefaultSearchPolicyHandlerTest, FullyDefined) { // pref. TEST_F(DefaultSearchPolicyHandlerTest, Disabled) { PolicyMap policy; - policy.Set(key::kDefaultSearchProviderEnabled, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::FundamentalValue(false), - NULL); + policy.Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::FundamentalValue(false)), nullptr); UpdateProviderPolicy(policy); const base::Value* temp = NULL; const base::DictionaryValue* dictionary; @@ -265,18 +237,12 @@ TEST_F(DefaultSearchPolicyHandlerTest, Disabled) { // search URL, that all the elements have been given proper defaults. TEST_F(DefaultSearchPolicyHandlerTest, MinimallyDefined) { PolicyMap policy; - policy.Set(key::kDefaultSearchProviderEnabled, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::FundamentalValue(true), - NULL); - policy.Set(key::kDefaultSearchProviderSearchURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kSearchURL), - NULL); + policy.Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::FundamentalValue(true)), nullptr); + policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kSearchURL)), nullptr); UpdateProviderPolicy(policy); const base::Value* temp = NULL; @@ -329,18 +295,12 @@ TEST_F(DefaultSearchPolicyHandlerTest, MinimallyDefined) { // the dictionary pref. TEST_F(DefaultSearchPolicyHandlerTest, FileURL) { PolicyMap policy; - policy.Set(key::kDefaultSearchProviderEnabled, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::FundamentalValue(true), - NULL); - policy.Set(key::kDefaultSearchProviderSearchURL, - POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, - POLICY_SOURCE_CLOUD, - new base::StringValue(kFileSearchURL), - NULL); + policy.Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::FundamentalValue(true)), nullptr); + policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, + base::WrapUnique(new base::StringValue(kFileSearchURL)), nullptr); UpdateProviderPolicy(policy); const base::Value* temp = NULL; diff --git a/chromium/components/search_engines/default_search_pref_migration.cc b/chromium/components/search_engines/default_search_pref_migration.cc index 344a8d47e59..4753a04ec31 100644 --- a/chromium/components/search_engines/default_search_pref_migration.cc +++ b/chromium/components/search_engines/default_search_pref_migration.cc @@ -7,10 +7,11 @@ #include <stddef.h> #include <stdint.h> +#include <memory> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/logging.h" -#include "base/memory/scoped_ptr.h" #include "base/metrics/histogram.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" @@ -25,26 +26,26 @@ namespace { // Loads the user-selected DSE (if there is one) from legacy preferences. -scoped_ptr<TemplateURLData> LoadDefaultSearchProviderFromLegacyPrefs( +std::unique_ptr<TemplateURLData> LoadDefaultSearchProviderFromLegacyPrefs( PrefService* prefs) { if (!prefs->HasPrefPath(prefs::kDefaultSearchProviderSearchURL) || !prefs->HasPrefPath(prefs::kDefaultSearchProviderKeyword)) - return scoped_ptr<TemplateURLData>(); + return std::unique_ptr<TemplateURLData>(); const PrefService::Preference* pref = prefs->FindPreference(prefs::kDefaultSearchProviderSearchURL); DCHECK(pref); if (pref->IsManaged()) - return scoped_ptr<TemplateURLData>(); + return std::unique_ptr<TemplateURLData>(); base::string16 keyword = base::UTF8ToUTF16(prefs->GetString(prefs::kDefaultSearchProviderKeyword)); std::string search_url = prefs->GetString(prefs::kDefaultSearchProviderSearchURL); if (keyword.empty() || search_url.empty()) - return scoped_ptr<TemplateURLData>(); + return std::unique_ptr<TemplateURLData>(); - scoped_ptr<TemplateURLData> default_provider_data(new TemplateURLData); + std::unique_ptr<TemplateURLData> default_provider_data(new TemplateURLData); default_provider_data->SetShortName( base::UTF8ToUTF16(prefs->GetString(prefs::kDefaultSearchProviderName))); default_provider_data->SetKeyword(keyword); @@ -123,7 +124,7 @@ void ClearDefaultSearchProviderFromLegacyPrefs(PrefService* prefs) { void MigrateDefaultSearchPref(PrefService* pref_service) { DCHECK(pref_service); - scoped_ptr<TemplateURLData> legacy_dse_from_prefs = + std::unique_ptr<TemplateURLData> legacy_dse_from_prefs = LoadDefaultSearchProviderFromLegacyPrefs(pref_service); if (!legacy_dse_from_prefs) return; diff --git a/chromium/components/search_engines/default_search_pref_migration_unittest.cc b/chromium/components/search_engines/default_search_pref_migration_unittest.cc index 90b81015ca8..41cb14eea58 100644 --- a/chromium/components/search_engines/default_search_pref_migration_unittest.cc +++ b/chromium/components/search_engines/default_search_pref_migration_unittest.cc @@ -31,9 +31,9 @@ class DefaultSearchPrefMigrationTest : public testing::Test { void SaveDefaultSearchProviderToLegacyPrefs(const TemplateURL* t_url); - scoped_ptr<TemplateURL> CreateKeyword(const std::string& short_name, - const std::string& keyword, - const std::string& url); + std::unique_ptr<TemplateURL> CreateKeyword(const std::string& short_name, + const std::string& keyword, + const std::string& url); DefaultSearchManager* default_search_manager() { return default_search_manager_.get(); @@ -43,7 +43,7 @@ class DefaultSearchPrefMigrationTest : public testing::Test { private: user_prefs::TestingPrefServiceSyncable prefs_; - scoped_ptr<DefaultSearchManager> default_search_manager_; + std::unique_ptr<DefaultSearchManager> default_search_manager_; DISALLOW_COPY_AND_ASSIGN(DefaultSearchPrefMigrationTest); }; @@ -127,7 +127,7 @@ void DefaultSearchPrefMigrationTest::SaveDefaultSearchProviderToLegacyPrefs( search_terms_replacement_key); } -scoped_ptr<TemplateURL> DefaultSearchPrefMigrationTest::CreateKeyword( +std::unique_ptr<TemplateURL> DefaultSearchPrefMigrationTest::CreateKeyword( const std::string& short_name, const std::string& keyword, const std::string& url) { @@ -135,12 +135,12 @@ scoped_ptr<TemplateURL> DefaultSearchPrefMigrationTest::CreateKeyword( data.SetShortName(base::ASCIIToUTF16(short_name)); data.SetKeyword(base::ASCIIToUTF16(keyword)); data.SetURL(url); - scoped_ptr<TemplateURL> t_url(new TemplateURL(data)); + std::unique_ptr<TemplateURL> t_url(new TemplateURL(data)); return t_url; } TEST_F(DefaultSearchPrefMigrationTest, MigrateUserSelectedValue) { - scoped_ptr<TemplateURL> t_url( + std::unique_ptr<TemplateURL> t_url( CreateKeyword("name1", "key1", "http://foo1/{searchTerms}")); // Store a value in the legacy location. SaveDefaultSearchProviderToLegacyPrefs(t_url.get()); @@ -160,7 +160,7 @@ TEST_F(DefaultSearchPrefMigrationTest, MigrateUserSelectedValue) { } TEST_F(DefaultSearchPrefMigrationTest, MigrateOnlyOnce) { - scoped_ptr<TemplateURL> t_url( + std::unique_ptr<TemplateURL> t_url( CreateKeyword("name1", "key1", "http://foo1/{searchTerms}")); // Store a value in the legacy location. SaveDefaultSearchProviderToLegacyPrefs(t_url.get()); @@ -189,9 +189,9 @@ TEST_F(DefaultSearchPrefMigrationTest, MigrateOnlyOnce) { } TEST_F(DefaultSearchPrefMigrationTest, ModernValuePresent) { - scoped_ptr<TemplateURL> t_url( + std::unique_ptr<TemplateURL> t_url( CreateKeyword("name1", "key1", "http://foo1/{searchTerms}")); - scoped_ptr<TemplateURL> t_url2( + std::unique_ptr<TemplateURL> t_url2( CreateKeyword("name2", "key2", "http://foo2/{searchTerms}")); // Store a value in the legacy location. SaveDefaultSearchProviderToLegacyPrefs(t_url.get()); diff --git a/chromium/components/search_engines/default_search_pref_test_util.cc b/chromium/components/search_engines/default_search_pref_test_util.cc index aa80db97928..3fdf4807725 100644 --- a/chromium/components/search_engines/default_search_pref_test_util.cc +++ b/chromium/components/search_engines/default_search_pref_test_util.cc @@ -9,7 +9,7 @@ #include "testing/gtest/include/gtest/gtest.h" // static -scoped_ptr<base::DictionaryValue> +std::unique_ptr<base::DictionaryValue> DefaultSearchPrefTestUtil::CreateDefaultSearchPreferenceValue( bool enabled, const std::string& name, @@ -20,7 +20,7 @@ DefaultSearchPrefTestUtil::CreateDefaultSearchPreferenceValue( const std::string& encodings, const std::string& alternate_url, const std::string& search_terms_replacement_key) { - scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue); if (!enabled) { value->SetBoolean(DefaultSearchManager::kDisabledByPolicy, true); return value; @@ -41,13 +41,13 @@ DefaultSearchPrefTestUtil::CreateDefaultSearchPreferenceValue( value->Set(DefaultSearchManager::kSearchTermsReplacementKey, new base::StringValue(search_terms_replacement_key)); - scoped_ptr<base::ListValue> encodings_list(new base::ListValue); + std::unique_ptr<base::ListValue> encodings_list(new base::ListValue); for (const std::string& term : base::SplitString( encodings, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) encodings_list->AppendString(term); value->Set(DefaultSearchManager::kInputEncodings, encodings_list.release()); - scoped_ptr<base::ListValue> alternate_url_list(new base::ListValue()); + std::unique_ptr<base::ListValue> alternate_url_list(new base::ListValue()); if (!alternate_url.empty()) alternate_url_list->Append(new base::StringValue(alternate_url)); value->Set(DefaultSearchManager::kAlternateURLs, diff --git a/chromium/components/search_engines/default_search_pref_test_util.h b/chromium/components/search_engines/default_search_pref_test_util.h index 095abd4a1c1..1732119b3bb 100644 --- a/chromium/components/search_engines/default_search_pref_test_util.h +++ b/chromium/components/search_engines/default_search_pref_test_util.h @@ -5,9 +5,9 @@ #ifndef COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_PREF_TEST_UTIL_H_ #define COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_PREF_TEST_UTIL_H_ +#include <memory> #include <string> -#include "base/memory/scoped_ptr.h" #include "base/values.h" #include "components/search_engines/default_search_manager.h" @@ -15,7 +15,8 @@ class DefaultSearchPrefTestUtil { public: // Creates a DictionaryValue which can be used as a // kDefaultSearchProviderDataPrefName preference value. - static scoped_ptr<base::DictionaryValue> CreateDefaultSearchPreferenceValue( + static std::unique_ptr<base::DictionaryValue> + CreateDefaultSearchPreferenceValue( bool enabled, const std::string& name, const std::string& keyword, diff --git a/chromium/components/search_engines/desktop_search_redirection_infobar_delegate.cc b/chromium/components/search_engines/desktop_search_redirection_infobar_delegate.cc index 557a4e8fe9c..d1a44280b86 100644 --- a/chromium/components/search_engines/desktop_search_redirection_infobar_delegate.cc +++ b/chromium/components/search_engines/desktop_search_redirection_infobar_delegate.cc @@ -4,10 +4,10 @@ #include "components/search_engines/desktop_search_redirection_infobar_delegate.h" +#include <memory> #include <vector> #include "base/logging.h" -#include "base/memory/scoped_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "components/infobars/core/infobar.h" @@ -45,8 +45,8 @@ void DesktopSearchRedirectionInfobarDelegate::Show( const base::Closure& manage_search_settings_callback, PrefService* pref_service) { DCHECK(infobar_manager); - infobar_manager->AddInfoBar( - infobar_manager->CreateConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate>( + infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar( + std::unique_ptr<ConfirmInfoBarDelegate>( new DesktopSearchRedirectionInfobarDelegate( default_search_engine_name, manage_search_settings_callback)))); pref_service->SetBoolean(prefs::kDesktopSearchRedirectionInfobarShownPref, diff --git a/chromium/components/search_engines/desktop_search_utils.cc b/chromium/components/search_engines/desktop_search_utils.cc index 09994767771..e42c35e2f11 100644 --- a/chromium/components/search_engines/desktop_search_utils.cc +++ b/chromium/components/search_engines/desktop_search_utils.cc @@ -4,9 +4,9 @@ #include "components/search_engines/desktop_search_utils.h" +#include <memory> #include <string> -#include "base/memory/scoped_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/strings/string_util.h" @@ -43,7 +43,7 @@ bool DetectDesktopSearch(const GURL& url, DCHECK(search_terms); search_terms->clear(); - scoped_ptr<TemplateURLData> template_url_data = + std::unique_ptr<TemplateURLData> template_url_data = TemplateURLPrepopulateData::MakeTemplateURLDataFromPrepopulatedEngine( TemplateURLPrepopulateData::bing); TemplateURL template_url(*template_url_data); diff --git a/chromium/components/search_engines/desktop_search_utils_unittest.cc b/chromium/components/search_engines/desktop_search_utils_unittest.cc index b59f930c22a..56fa841e0b7 100644 --- a/chromium/components/search_engines/desktop_search_utils_unittest.cc +++ b/chromium/components/search_engines/desktop_search_utils_unittest.cc @@ -4,11 +4,11 @@ #include "components/search_engines/desktop_search_utils.h" +#include <memory> #include <string> #include "base/feature_list.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "components/prefs/pref_service.h" @@ -50,7 +50,7 @@ class DesktopSearchUtilsTest : public testing::Test { protected: void SetFeatureEnabled(bool enabled) { base::FeatureList::ClearInstanceForTesting(); - scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); if (enabled) { feature_list->InitializeFromCommandLine( kDesktopSearchRedirectionFeature.name, std::string()); @@ -61,7 +61,7 @@ class DesktopSearchUtilsTest : public testing::Test { void SetDefaultSearchEngine( const TemplateURLPrepopulateData::PrepopulatedEngine default_search_engine) { - scoped_ptr<TemplateURLData> template_url_data = + std::unique_ptr<TemplateURLData> template_url_data = TemplateURLPrepopulateData::MakeTemplateURLDataFromPrepopulatedEngine( default_search_engine); TemplateURL template_url(*template_url_data); diff --git a/chromium/components/search_engines/keyword_table.cc b/chromium/components/search_engines/keyword_table.cc index ed7d6e88049..fcbd5255825 100644 --- a/chromium/components/search_engines/keyword_table.cc +++ b/chromium/components/search_engines/keyword_table.cc @@ -6,12 +6,12 @@ #include <stddef.h> +#include <memory> #include <set> #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/logging.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" @@ -327,7 +327,8 @@ bool KeywordTable::GetKeywordDataFromStatement(const sql::Statement& s, data->alternate_urls.clear(); base::JSONReader json_reader; - scoped_ptr<base::Value> value(json_reader.ReadToValue(s.ColumnString(17))); + std::unique_ptr<base::Value> value( + json_reader.ReadToValue(s.ColumnString(17))); base::ListValue* alternate_urls_value; if (value.get() && value->GetAsList(&alternate_urls_value)) { std::string alternate_url; diff --git a/chromium/components/search_engines/keyword_table_unittest.cc b/chromium/components/search_engines/keyword_table_unittest.cc index 39b9aa20f11..0aea5edba69 100644 --- a/chromium/components/search_engines/keyword_table_unittest.cc +++ b/chromium/components/search_engines/keyword_table_unittest.cc @@ -104,8 +104,8 @@ class KeywordTableTest : public testing::Test { private: base::FilePath file_; base::ScopedTempDir temp_dir_; - scoped_ptr<KeywordTable> table_; - scoped_ptr<WebDatabase> db_; + std::unique_ptr<KeywordTable> table_; + std::unique_ptr<WebDatabase> db_; DISALLOW_COPY_AND_ASSIGN(KeywordTableTest); }; diff --git a/chromium/components/search_engines/keyword_web_data_service.cc b/chromium/components/search_engines/keyword_web_data_service.cc index d1e78962f98..47bfafcf8f6 100644 --- a/chromium/components/search_engines/keyword_web_data_service.cc +++ b/chromium/components/search_engines/keyword_web_data_service.cc @@ -123,9 +123,9 @@ WebDatabase::State KeywordWebDataService::PerformKeywordOperationsImpl( WebDatabase::COMMIT_NEEDED : WebDatabase::COMMIT_NOT_NEEDED; } -scoped_ptr<WDTypedResult> KeywordWebDataService::GetKeywordsImpl( +std::unique_ptr<WDTypedResult> KeywordWebDataService::GetKeywordsImpl( WebDatabase* db) { - scoped_ptr<WDTypedResult> result_ptr; + std::unique_ptr<WDTypedResult> result_ptr; WDKeywordsResult result; if (KeywordTable::FromWebDatabase(db)->GetKeywords(&result.keywords)) { result.default_search_provider_id = diff --git a/chromium/components/search_engines/keyword_web_data_service.h b/chromium/components/search_engines/keyword_web_data_service.h index 2c163b8e9d7..12ede63818d 100644 --- a/chromium/components/search_engines/keyword_web_data_service.h +++ b/chromium/components/search_engines/keyword_web_data_service.h @@ -101,7 +101,7 @@ class KeywordWebDataService : public WebDataServiceBase { WebDatabase::State PerformKeywordOperationsImpl( const KeywordTable::Operations& operations, WebDatabase* db); - scoped_ptr<WDTypedResult> GetKeywordsImpl(WebDatabase* db); + std::unique_ptr<WDTypedResult> GetKeywordsImpl(WebDatabase* db); WebDatabase::State SetDefaultSearchProviderIDImpl(TemplateURLID id, WebDatabase* db); WebDatabase::State SetBuiltinKeywordVersionImpl(int version, WebDatabase* db); diff --git a/chromium/components/search_engines/prepopulated_engines.json b/chromium/components/search_engines/prepopulated_engines.json index 27748953e41..721bfd60824 100644 --- a/chromium/components/search_engines/prepopulated_engines.json +++ b/chromium/components/search_engines/prepopulated_engines.json @@ -30,7 +30,7 @@ // Increment this if you change the data in ways that mean users with // existing data should get a new version. - "kCurrentDataVersion": 90 + "kCurrentDataVersion": 91 }, // The following engines are included in country lists and are added to the @@ -578,7 +578,7 @@ "yandex_by": { "name": "\u042f\u043d\u0434\u0435\u043a\u0441", "keyword": "yandex.by", - "favicon_url": "https://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", + "favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", "search_url": "https://yandex.by/{yandex:searchPath}?text={searchTerms}", "suggest_url": "https://api.browser.yandex.by/suggest/get?part={searchTerms}", "image_url": "https://yandex.by/images/search/?rpt=imageview", @@ -591,7 +591,7 @@ "yandex_kz": { "name": "\u042f\u043d\u0434\u0435\u043a\u0441", "keyword": "yandex.kz", - "favicon_url": "https://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", + "favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", "search_url": "https://yandex.kz/{yandex:searchPath}?text={searchTerms}", "suggest_url": "https://api.browser.yandex.kz/suggest/get?part={searchTerms}", "image_url": "https://yandex.kz/images/search/?rpt=imageview", @@ -604,7 +604,7 @@ "yandex_ru": { "name": "\u042f\u043d\u0434\u0435\u043a\u0441", "keyword": "yandex.ru", - "favicon_url": "https://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", + "favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", "search_url": "https://yandex.ru/{yandex:searchPath}?text={searchTerms}", "suggest_url": "https://api.browser.yandex.ru/suggest/get?part={searchTerms}", "image_url": "https://yandex.ru/images/search/?rpt=imageview", @@ -617,7 +617,7 @@ "yandex_tr": { "name": "Yandex", "keyword": "yandex.com.tr", - "favicon_url": "https://yandex.st/lego/_/rBTjd6UOPk5913OSn5ZQVYMTQWQ.ico", + "favicon_url": "https://yastatic.net/lego/_/rBTjd6UOPk5913OSn5ZQVYMTQWQ.ico", "search_url": "https://www.yandex.com.tr/{yandex:searchPath}?text={searchTerms}", "suggest_url": "https://api.browser.yandex.com.tr/suggest/get?part={searchTerms}", "image_url": "https://yandex.com.tr/gorsel/search?rpt=imageview", @@ -630,7 +630,7 @@ "yandex_ua": { "name": "\u042f\u043d\u0434\u0435\u043a\u0441", "keyword": "yandex.ua", - "favicon_url": "https://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", + "favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico", "search_url": "https://yandex.ua/{yandex:searchPath}?text={searchTerms}", "suggest_url": "https://api.browser.yandex.ua/suggest/get?part={searchTerms}", "image_url": "https://yandex.ua/images/search/?rpt=imageview", diff --git a/chromium/components/search_engines/search_engine_data_type_controller.h b/chromium/components/search_engines/search_engine_data_type_controller.h index 5ec31193225..cc4cb6157c2 100644 --- a/chromium/components/search_engines/search_engine_data_type_controller.h +++ b/chromium/components/search_engines/search_engine_data_type_controller.h @@ -5,10 +5,10 @@ #ifndef COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__ #define COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__ +#include <memory> #include <string> #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "components/search_engines/template_url_service.h" #include "components/sync_driver/ui_data_type_controller.h" @@ -46,7 +46,7 @@ class SearchEngineDataTypeController TemplateURLService* template_url_service_; // A subscription to the OnLoadedCallback so it can be cleared if necessary. - scoped_ptr<TemplateURLService::Subscription> template_url_subscription_; + std::unique_ptr<TemplateURLService::Subscription> template_url_subscription_; DISALLOW_COPY_AND_ASSIGN(SearchEngineDataTypeController); }; diff --git a/chromium/components/search_engines/search_engine_data_type_controller_unittest.cc b/chromium/components/search_engines/search_engine_data_type_controller_unittest.cc index a569e5e3b9c..b025e60a18f 100644 --- a/chromium/components/search_engines/search_engine_data_type_controller_unittest.cc +++ b/chromium/components/search_engines/search_engine_data_type_controller_unittest.cc @@ -2,15 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "components/search_engines/search_engine_data_type_controller.h" + +#include <memory> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/callback.h" -#include "base/memory/scoped_ptr.h" +#include "base/memory/ptr_util.h" #include "base/run_loop.h" #include "base/single_thread_task_runner.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "base/tracked_objects.h" -#include "components/search_engines/search_engine_data_type_controller.h" #include "components/search_engines/template_url_service.h" #include "components/sync_driver/data_type_controller_mock.h" #include "components/sync_driver/fake_generic_change_processor.h" @@ -67,9 +70,9 @@ class SyncSearchEngineDataTypeControllerTest void SetStartExpectations() { search_engine_dtc_->SetGenericChangeProcessorFactoryForTest( - make_scoped_ptr<sync_driver::GenericChangeProcessorFactory>( + base::WrapUnique<sync_driver::GenericChangeProcessorFactory>( new sync_driver::FakeGenericChangeProcessorFactory( - make_scoped_ptr(new sync_driver::FakeGenericChangeProcessor( + base::WrapUnique(new sync_driver::FakeGenericChangeProcessor( syncer::SEARCH_ENGINES, this))))); EXPECT_CALL(model_load_callback_, Run(_, _)); } @@ -85,7 +88,7 @@ class SyncSearchEngineDataTypeControllerTest } base::MessageLoop message_loop_; - scoped_ptr<TemplateURLService> template_url_service_; + std::unique_ptr<TemplateURLService> template_url_service_; scoped_refptr<SearchEngineDataTypeController> search_engine_dtc_; SyncApiComponentFactoryMock profile_sync_factory_; syncer::FakeSyncableService syncable_service_; diff --git a/chromium/components/search_engines/search_host_to_urls_map.cc b/chromium/components/search_engines/search_host_to_urls_map.cc index 1db68aa803e..d10f62b2def 100644 --- a/chromium/components/search_engines/search_host_to_urls_map.cc +++ b/chromium/components/search_engines/search_host_to_urls_map.cc @@ -4,7 +4,8 @@ #include "components/search_engines/search_host_to_urls_map.h" -#include "base/memory/scoped_ptr.h" +#include <memory> + #include "components/search_engines/template_url.h" SearchHostToURLsMap::SearchHostToURLsMap() diff --git a/chromium/components/search_engines/search_host_to_urls_map_unittest.cc b/chromium/components/search_engines/search_host_to_urls_map_unittest.cc index 7c635cdb8fd..9d29769a7d8 100644 --- a/chromium/components/search_engines/search_host_to_urls_map_unittest.cc +++ b/chromium/components/search_engines/search_host_to_urls_map_unittest.cc @@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "components/search_engines/search_host_to_urls_map.h" + #include <stddef.h> +#include <memory> + #include "base/macros.h" -#include "base/memory/scoped_ptr.h" -#include "components/search_engines/search_host_to_urls_map.h" #include "components/search_engines/search_terms_data.h" #include "components/search_engines/template_url.h" #include "testing/gtest/include/gtest/gtest.h" @@ -21,8 +23,8 @@ class SearchHostToURLsMapTest : public testing::Test { void SetUp() override; protected: - scoped_ptr<SearchHostToURLsMap> provider_map_; - scoped_ptr<TemplateURL> t_urls_[2]; + std::unique_ptr<SearchHostToURLsMap> provider_map_; + std::unique_ptr<TemplateURL> t_urls_[2]; std::string host_; DISALLOW_COPY_AND_ASSIGN(SearchHostToURLsMapTest); diff --git a/chromium/components/search_engines/template_url.cc b/chromium/components/search_engines/template_url.cc index a29aa263100..22e361ad561 100644 --- a/chromium/components/search_engines/template_url.cc +++ b/chromium/components/search_engines/template_url.cc @@ -96,26 +96,49 @@ bool TryEncoding(const base::string16& terms, return true; } +// Returns true if the search term placeholder is present, and also produces +// the constant prefix/suffix found. +bool TryMatchSearchParam(base::StringPiece text, + base::StringPiece pattern, + std::string* prefix, + std::string* suffix) { + auto pos = text.find(pattern); + if (pos == base::StringPiece::npos) + return false; + text.substr(0, pos).CopyToString(prefix); + text.substr(pos + pattern.length()).CopyToString(suffix); + return true; +} + // Extract query key and host given a list of parameters coming from the URL // query or ref. -std::string FindSearchTermsKey(const std::string& params) { +struct SearchTermsKeyResult { + std::string key; + std::string value_prefix; + std::string value_suffix; + bool found() const { return !key.empty(); } +}; +SearchTermsKeyResult FindSearchTermsKey(const std::string& params) { + SearchTermsKeyResult result; if (params.empty()) - return std::string(); + return result; url::Component query, key, value; query.len = static_cast<int>(params.size()); while (url::ExtractQueryKeyValue(params.c_str(), &query, &key, &value)) { if (key.is_nonempty() && value.is_nonempty()) { const base::StringPiece value_string(params.c_str() + value.begin, value.len); - if (value_string.find(kSearchTermsParameterFull, 0) != - base::StringPiece::npos || - value_string.find(kGoogleUnescapedSearchTermsParameterFull, 0) != - base::StringPiece::npos) { - return params.substr(key.begin, key.len); + if (TryMatchSearchParam(value_string, kSearchTermsParameterFull, + &result.value_prefix, &result.value_suffix) || + TryMatchSearchParam(value_string, + kGoogleUnescapedSearchTermsParameterFull, + &result.value_prefix, &result.value_suffix)) { + result.key = params.substr(key.begin, key.len); + break; } } } - return std::string(); + return result; } // Extract the position of the search terms' parameter in the URL path. @@ -506,8 +529,19 @@ bool TemplateURLRef::ExtractSearchTermsFromURL( // Fail if search term key is found twice. if (key_found) return false; + + // If the query parameter does not contain the expected prefix and + // suffix, then this is not a match. + base::StringPiece search_term = + base::StringPiece(source).substr(value.begin, value.len); + if (!search_term.starts_with(search_term_value_prefix_) || + !search_term.ends_with(search_term_value_suffix_)) + continue; + key_found = true; - position = value; + position = + url::MakeRange(value.begin + search_term_value_prefix_.size(), + value.end() - search_term_value_suffix_.size()); } } } @@ -516,8 +550,8 @@ bool TemplateURLRef::ExtractSearchTermsFromURL( } // Extract the search term. - *search_terms = SearchTermToString16( - source.substr(position.begin, position.len)); + *search_terms = + SearchTermToString16(source.substr(position.begin, position.len)); if (search_terms_component) *search_terms_component = search_term_key_location_; if (search_terms_position) @@ -783,11 +817,11 @@ void TemplateURLRef::ParseHostAndSearchTermKey( if (!url.is_valid()) return; - std::string query_key = FindSearchTermsKey(url.query()); - std::string ref_key = FindSearchTermsKey(url.ref()); + auto query_result = FindSearchTermsKey(url.query()); + auto ref_result = FindSearchTermsKey(url.ref()); url::Component parameter_position; - const bool in_query = !query_key.empty(); - const bool in_ref = !ref_key.empty(); + const bool in_query = query_result.found(); + const bool in_ref = ref_result.found(); const bool in_path = FindSearchTermsInPath(url.path(), ¶meter_position); if (in_query ? (in_ref || in_path) : (in_ref == in_path)) return; // No key or multiple keys found. We only handle having one key. @@ -796,11 +830,15 @@ void TemplateURLRef::ParseHostAndSearchTermKey( port_ = url.port(); path_ = url.path(); if (in_query) { - search_term_key_ = query_key; + search_term_key_ = query_result.key; search_term_key_location_ = url::Parsed::QUERY; + search_term_value_prefix_ = query_result.value_prefix; + search_term_value_suffix_ = query_result.value_suffix; } else if (in_ref) { - search_term_key_ = ref_key; + search_term_key_ = ref_result.key; search_term_key_location_ = url::Parsed::REF; + search_term_value_prefix_ = ref_result.value_prefix; + search_term_value_suffix_ = ref_result.value_suffix; } else { DCHECK(in_path); DCHECK_GE(parameter_position.begin, 1); // Path must start with '/'. @@ -1437,9 +1475,13 @@ void TemplateURL::SetURL(const std::string& url) { void TemplateURL::SetPrepopulateId(int id) { data_.prepopulate_id = id; const bool prepopulated = id > 0; - url_ref_->prepopulated_ = prepopulated; + for (TemplateURLRef& ref : url_refs_) + ref.prepopulated_ = prepopulated; suggestions_url_ref_.prepopulated_ = prepopulated; instant_url_ref_.prepopulated_ = prepopulated; + image_url_ref_.prepopulated_ = prepopulated; + new_tab_url_ref_.prepopulated_ = prepopulated; + contextual_search_url_ref_.prepopulated_ = prepopulated; } void TemplateURL::ResetKeywordIfNecessary( diff --git a/chromium/components/search_engines/template_url.h b/chromium/components/search_engines/template_url.h index c62bd20bea6..2acb1468518 100644 --- a/chromium/components/search_engines/template_url.h +++ b/chromium/components/search_engines/template_url.h @@ -7,13 +7,13 @@ #include <stddef.h> +#include <memory> #include <string> #include <utility> #include <vector> #include "base/gtest_prod_util.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/time/time.h" #include "components/metrics/proto/omnibox_event.pb.h" #include "components/metrics/proto/omnibox_input_type.pb.h" @@ -467,6 +467,8 @@ class TemplateURLRef { mutable std::string search_term_key_; mutable size_t search_term_position_in_path_; mutable url::Parsed::ComponentType search_term_key_location_; + mutable std::string search_term_value_prefix_; + mutable std::string search_term_value_suffix_; mutable PostParams post_params_; @@ -612,7 +614,8 @@ class TemplateURL { // This setter shouldn't be used except by TemplateURLService and // TemplateURLServiceClient implementations. - void set_extension_info(scoped_ptr<AssociatedExtensionInfo> extension_info) { + void set_extension_info( + std::unique_ptr<AssociatedExtensionInfo> extension_info) { extension_info_ = std::move(extension_info); } @@ -744,7 +747,7 @@ class TemplateURL { TemplateURLRef image_url_ref_; TemplateURLRef new_tab_url_ref_; TemplateURLRef contextual_search_url_ref_; - scoped_ptr<AssociatedExtensionInfo> extension_info_; + std::unique_ptr<AssociatedExtensionInfo> extension_info_; // TODO(sky): Add date last parsed OSD file. diff --git a/chromium/components/search_engines/template_url_fetcher.cc b/chromium/components/search_engines/template_url_fetcher.cc index 39229c39e14..16068752d0b 100644 --- a/chromium/components/search_engines/template_url_fetcher.cc +++ b/chromium/components/search_engines/template_url_fetcher.cc @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" - -#include "base/macros.h" #include "components/search_engines/template_url_fetcher.h" +#include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" +#include "build/build_config.h" #include "components/search_engines/template_url.h" #include "components/search_engines/template_url_parser.h" #include "components/search_engines/template_url_service.h" @@ -26,9 +26,7 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate { const base::string16& keyword, const GURL& osdd_url, const GURL& favicon_url, - const URLFetcherCustomizeCallback& url_fetcher_customize_callback, - const ConfirmAddSearchProviderCallback& confirm_add_callback, - ProviderType provider_type); + const URLFetcherCustomizeCallback& url_fetcher_customize_callback); // net::URLFetcherDelegate: // If data contains a valid OSDD, a TemplateURL is created and added to @@ -41,23 +39,18 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate { // Keyword to use. base::string16 keyword() const { return keyword_; } - // The type of search provider being fetched. - ProviderType provider_type() const { return provider_type_; } - private: void OnLoaded(); void AddSearchProvider(); - scoped_ptr<net::URLFetcher> url_fetcher_; + std::unique_ptr<net::URLFetcher> url_fetcher_; TemplateURLFetcher* fetcher_; - scoped_ptr<TemplateURL> template_url_; + std::unique_ptr<TemplateURL> template_url_; base::string16 keyword_; const GURL osdd_url_; const GURL favicon_url_; - const ProviderType provider_type_; - ConfirmAddSearchProviderCallback confirm_add_callback_; - scoped_ptr<TemplateURLService::Subscription> template_url_subscription_; + std::unique_ptr<TemplateURLService::Subscription> template_url_subscription_; DISALLOW_COPY_AND_ASSIGN(RequestDelegate); }; @@ -67,17 +60,13 @@ TemplateURLFetcher::RequestDelegate::RequestDelegate( const base::string16& keyword, const GURL& osdd_url, const GURL& favicon_url, - const URLFetcherCustomizeCallback& url_fetcher_customize_callback, - const ConfirmAddSearchProviderCallback& confirm_add_callback, - ProviderType provider_type) + const URLFetcherCustomizeCallback& url_fetcher_customize_callback) : url_fetcher_( net::URLFetcher::Create(osdd_url, net::URLFetcher::GET, this)), fetcher_(fetcher), keyword_(keyword), osdd_url_(osdd_url), - favicon_url_(favicon_url), - provider_type_(provider_type), - confirm_add_callback_(confirm_add_callback) { + favicon_url_(favicon_url) { TemplateURLService* model = fetcher_->template_url_service_; DCHECK(model); // TemplateURLFetcher::ScheduleDownload verifies this. @@ -133,7 +122,7 @@ void TemplateURLFetcher::RequestDelegate::OnURLFetchComplete( return; } - if (provider_type_ != AUTODETECTED_PROVIDER || keyword_.empty()) { + if (keyword_.empty()) { // Use the parser-generated new keyword from the URL in the OSDD for the // non-autodetected case. The existing |keyword_| was generated from the // URL that hosted the OSDD, which results in the wrong keyword when the @@ -158,15 +147,15 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() { DCHECK(model->loaded()); TemplateURL* existing_url = NULL; - if (model->CanAddAutogeneratedKeyword(keyword_, GURL(template_url_->url()), - &existing_url)) { - if (existing_url) - model->Remove(existing_url); - } else if (provider_type_ == AUTODETECTED_PROVIDER) { + if (!model->CanAddAutogeneratedKeyword(keyword_, GURL(template_url_->url()), + &existing_url)) { fetcher_->RequestCompleted(this); // WARNING: Deletes us! return; } + if (existing_url) + model->Remove(existing_url); + // The short name is what is shown to the user. We preserve original names // since it is better when generated keyword in many cases. TemplateURLData data(template_url_->data()); @@ -177,27 +166,9 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() { if (!data.favicon_url.is_valid()) data.favicon_url = favicon_url_; - switch (provider_type_) { - case AUTODETECTED_PROVIDER: - // Mark the keyword as replaceable so it can be removed if necessary. - data.safe_for_autoreplace = true; - model->Add(new TemplateURL(data)); - break; - - case EXPLICIT_PROVIDER: - // Confirm addition and allow user to edit default choices. It's ironic - // that only *non*-autodetected additions get confirmed, but the user - // expects feedback that his action did something. - // The source WebContents' delegate takes care of adding the URL to the - // model, which takes ownership, or of deleting it if the add is - // cancelled. - confirm_add_callback_.Run(make_scoped_ptr(new TemplateURL(data))); - break; - - default: - NOTREACHED(); - break; - } + // Mark the keyword as replaceable so it can be removed if necessary. + data.safe_for_autoreplace = true; + model->Add(new TemplateURL(data)); fetcher_->RequestCompleted(this); // WARNING: RequestCompleted deletes us. @@ -219,42 +190,31 @@ void TemplateURLFetcher::ScheduleDownload( const base::string16& keyword, const GURL& osdd_url, const GURL& favicon_url, - const URLFetcherCustomizeCallback& url_fetcher_customize_callback, - const ConfirmAddSearchProviderCallback& confirm_add_callback, - ProviderType provider_type) { + const URLFetcherCustomizeCallback& url_fetcher_customize_callback) { DCHECK(osdd_url.is_valid()); + DCHECK(!keyword.empty()); - // For a JS-added OSDD, the provided keyword is irrelevant because we will - // generate a keyword later from the OSDD content. For the autodetected case, - // we need a valid keyword up front. - if (provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER) { - DCHECK(!keyword.empty()); - - if (!template_url_service_->loaded()) { - // We could try to set up a callback to this function again once the model - // is loaded but since this is an auto-add case anyway, meh. - template_url_service_->Load(); - return; - } - - const TemplateURL* template_url = - template_url_service_->GetTemplateURLForKeyword(keyword); - if (template_url && (!template_url->safe_for_autoreplace() || - template_url->originating_url() == osdd_url)) - return; + if (!template_url_service_->loaded()) { + // We could try to set up a callback to this function again once the model + // is loaded but meh. + template_url_service_->Load(); + return; } + const TemplateURL* template_url = + template_url_service_->GetTemplateURLForKeyword(keyword); + if (template_url && (!template_url->safe_for_autoreplace() || + template_url->originating_url() == osdd_url)) + return; + // Make sure we aren't already downloading this request. for (Requests::iterator i = requests_.begin(); i != requests_.end(); ++i) { - if (((*i)->url() == osdd_url) || - ((provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER) && - ((*i)->keyword() == keyword))) + if (((*i)->url() == osdd_url) || ((*i)->keyword() == keyword)) return; } requests_.push_back(new RequestDelegate( - this, keyword, osdd_url, favicon_url, url_fetcher_customize_callback, - confirm_add_callback, provider_type)); + this, keyword, osdd_url, favicon_url, url_fetcher_customize_callback)); } void TemplateURLFetcher::RequestCompleted(RequestDelegate* request) { diff --git a/chromium/components/search_engines/template_url_fetcher.h b/chromium/components/search_engines/template_url_fetcher.h index d66dda880a9..f229a4ea0b2 100644 --- a/chromium/components/search_engines/template_url_fetcher.h +++ b/chromium/components/search_engines/template_url_fetcher.h @@ -5,10 +5,11 @@ #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_FETCHER_H_ #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_FETCHER_H_ +#include <memory> + #include "base/callback_forward.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/strings/string16.h" #include "components/keyed_service/core/keyed_service.h" @@ -30,13 +31,6 @@ class TemplateURLFetcher : public KeyedService { public: typedef base::Callback<void( net::URLFetcher* url_fetcher)> URLFetcherCustomizeCallback; - typedef base::Callback<void( - scoped_ptr<TemplateURL> template_url)> ConfirmAddSearchProviderCallback; - - enum ProviderType { - AUTODETECTED_PROVIDER, - EXPLICIT_PROVIDER // Supplied by Javascript. - }; // Creates a TemplateURLFetcher. TemplateURLFetcher(TemplateURLService* template_url_service, @@ -47,11 +41,9 @@ class TemplateURLFetcher : public KeyedService { // it is downloaded. If successful and the result can be parsed, a TemplateURL // is added to the TemplateURLService. // - // If |provider_type| is AUTODETECTED_PROVIDER, |keyword| must be non-empty, - // and if there's already a non-replaceable TemplateURL in the model for - // |keyword|, or we're already downloading an OSDD for this keyword, no - // download is started. If |provider_type| is EXPLICIT_PROVIDER, |keyword| is - // ignored. + // |keyword| must be non-empty. If there's already a non-replaceable + // TemplateURL in the model for |keyword|, or we're already downloading an + // OSDD for this keyword, no download is started. // // If |url_fetcher_customize_callback| is not null, it's run after a // URLFetcher is created. This callback can be used to set additional @@ -60,24 +52,24 @@ class TemplateURLFetcher : public KeyedService { const base::string16& keyword, const GURL& osdd_url, const GURL& favicon_url, - const URLFetcherCustomizeCallback& url_fetcher_customize_callback, - const ConfirmAddSearchProviderCallback& confirm_add_callback, - ProviderType provider_type); + const URLFetcherCustomizeCallback& url_fetcher_customize_callback); // The current number of outstanding requests. int requests_count() const { return requests_.size(); } - private: + protected: // A RequestDelegate is created to download each OSDD. When done downloading // RequestCompleted is invoked back on the TemplateURLFetcher. class RequestDelegate; + + // Invoked from the RequestDelegate when done downloading. Virtual for tests. + virtual void RequestCompleted(RequestDelegate* request); + + private: friend class RequestDelegate; typedef ScopedVector<RequestDelegate> Requests; - // Invoked from the RequestDelegate when done downloading. - void RequestCompleted(RequestDelegate* request); - TemplateURLService* template_url_service_; scoped_refptr<net::URLRequestContextGetter> request_context_; diff --git a/chromium/components/search_engines/template_url_parser.cc b/chromium/components/search_engines/template_url_parser.cc index ca554be130b..9c93747b27b 100644 --- a/chromium/components/search_engines/template_url_parser.cc +++ b/chromium/components/search_engines/template_url_parser.cc @@ -8,11 +8,11 @@ #include <algorithm> #include <map> +#include <memory> #include <vector> #include "base/logging.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -324,7 +324,7 @@ TemplateURL* TemplateURLParsingContext::GetTemplateURL( data_.show_in_default_list = show_in_default_list; // Bail if the search URL is empty or if either TemplateURLRef is invalid. - scoped_ptr<TemplateURL> template_url(new TemplateURL(data_)); + std::unique_ptr<TemplateURL> template_url(new TemplateURL(data_)); if (template_url->url().empty() || !template_url->url_ref().IsValid(search_terms_data) || (!template_url->suggestions_url().empty() && diff --git a/chromium/components/search_engines/template_url_prepopulate_data.cc b/chromium/components/search_engines/template_url_prepopulate_data.cc index cff4ee7a7b9..33a72bbb0ab 100644 --- a/chromium/components/search_engines/template_url_prepopulate_data.cc +++ b/chromium/components/search_engines/template_url_prepopulate_data.cc @@ -968,7 +968,7 @@ void GetPrepopulationSetFromCountryID(PrefService* prefs, } } -scoped_ptr<TemplateURLData> MakePrepopulatedTemplateURLData( +std::unique_ptr<TemplateURLData> MakePrepopulatedTemplateURLData( const base::string16& name, const base::string16& keyword, const base::StringPiece& search_url, @@ -986,7 +986,7 @@ scoped_ptr<TemplateURLData> MakePrepopulatedTemplateURLData( const base::ListValue& alternate_urls, const base::StringPiece& search_terms_replacement_key, int id) { - scoped_ptr<TemplateURLData> data(new TemplateURLData); + std::unique_ptr<TemplateURLData> data(new TemplateURLData); data->SetShortName(name); data->SetKeyword(keyword); @@ -1125,7 +1125,7 @@ ScopedVector<TemplateURLData> GetPrepopulatedEngines( return t_urls; } -scoped_ptr<TemplateURLData> MakeTemplateURLDataFromPrepopulatedEngine( +std::unique_ptr<TemplateURLData> MakeTemplateURLDataFromPrepopulatedEngine( const PrepopulatedEngine& engine) { base::ListValue alternate_urls; if (engine.alternate_urls) { @@ -1151,8 +1151,9 @@ void ClearPrepopulatedEnginesInPrefs(PrefService* prefs) { prefs->ClearPref(prefs::kSearchProviderOverridesVersion); } -scoped_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(PrefService* prefs) { - scoped_ptr<TemplateURLData> default_search_provider; +std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch( + PrefService* prefs) { + std::unique_ptr<TemplateURLData> default_search_provider; size_t default_search_index; // This could be more efficient. We are loading all the URLs to only keep // the first one. diff --git a/chromium/components/search_engines/template_url_prepopulate_data.h b/chromium/components/search_engines/template_url_prepopulate_data.h index 0b22aad8807..9d6787305b9 100644 --- a/chromium/components/search_engines/template_url_prepopulate_data.h +++ b/chromium/components/search_engines/template_url_prepopulate_data.h @@ -6,10 +6,11 @@ #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ #include <stddef.h> + +#include <memory> #include <string> #include <vector> -#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/strings/string16.h" #include "components/search_engines/search_engine_type.h" @@ -45,7 +46,7 @@ ScopedVector<TemplateURLData> GetPrepopulatedEngines( size_t* default_search_provider_index); // Returns a TemplateURLData for the specified prepopulated engine. -scoped_ptr<TemplateURLData> MakeTemplateURLDataFromPrepopulatedEngine( +std::unique_ptr<TemplateURLData> MakeTemplateURLDataFromPrepopulatedEngine( const PrepopulatedEngine& engine); // Removes prepopulated engines and their version stored in user prefs. @@ -55,7 +56,8 @@ void ClearPrepopulatedEnginesInPrefs(PrefService* prefs); // may be NULL. // If |prefs| is NULL, any search provider overrides from the preferences are // not used. -scoped_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(PrefService* prefs); +std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch( + PrefService* prefs); // Returns the type of the provided engine, or SEARCH_ENGINE_OTHER if no engines // match. This checks the TLD+1 for the most part, but will report the type as diff --git a/chromium/components/search_engines/template_url_prepopulate_data_unittest.cc b/chromium/components/search_engines/template_url_prepopulate_data_unittest.cc index d7e6e4508c0..368597b9ff3 100644 --- a/chromium/components/search_engines/template_url_prepopulate_data_unittest.cc +++ b/chromium/components/search_engines/template_url_prepopulate_data_unittest.cc @@ -121,7 +121,7 @@ TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { prefs_.SetUserPref(prefs::kSearchProviderOverridesVersion, new base::FundamentalValue(1)); base::ListValue* overrides = new base::ListValue; - scoped_ptr<base::DictionaryValue> entry(new base::DictionaryValue); + std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); // Set only the minimal required settings for a search provider configuration. entry->SetString("name", "foo"); entry->SetString("keyword", "fook"); diff --git a/chromium/components/search_engines/template_url_service.cc b/chromium/components/search_engines/template_url_service.cc index ee4fb619c00..f89aa3c10e6 100644 --- a/chromium/components/search_engines/template_url_service.cc +++ b/chromium/components/search_engines/template_url_service.cc @@ -217,9 +217,9 @@ class TemplateURLService::LessWithPrefix { TemplateURLService::TemplateURLService( PrefService* prefs, - scoped_ptr<SearchTermsData> search_terms_data, + std::unique_ptr<SearchTermsData> search_terms_data, const scoped_refptr<KeywordWebDataService>& web_data_service, - scoped_ptr<TemplateURLServiceClient> client, + std::unique_ptr<TemplateURLServiceClient> client, GoogleURLTracker* google_url_tracker, rappor::RapporService* rappor_service, const base::Closure& dsp_change_callback) @@ -456,7 +456,7 @@ void TemplateURLService::AddWithOverrides(TemplateURL* template_url, void TemplateURLService::AddExtensionControlledTURL( TemplateURL* template_url, - scoped_ptr<TemplateURL::AssociatedExtensionInfo> info) { + std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info) { DCHECK(loaded_); DCHECK(template_url); DCHECK_EQ(kInvalidTemplateURLID, template_url->id()); @@ -547,7 +547,7 @@ void TemplateURLService::RegisterOmniboxKeyword( data.SetKeyword(base::UTF8ToUTF16(keyword)); data.SetURL(template_url_string); TemplateURL* url = new TemplateURL(data); - scoped_ptr<TemplateURL::AssociatedExtensionInfo> info( + std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info( new TemplateURL::AssociatedExtensionInfo( TemplateURL::OMNIBOX_API_EXTENSION, extension_id)); AddExtensionControlledTURL(url, std::move(info)); @@ -716,12 +716,10 @@ void TemplateURLService::Load() { ChangeToLoadedState(); } -scoped_ptr<TemplateURLService::Subscription> - TemplateURLService::RegisterOnLoadedCallback( - const base::Closure& callback) { - return loaded_ ? - scoped_ptr<TemplateURLService::Subscription>() : - on_loaded_callbacks_.Add(callback); +std::unique_ptr<TemplateURLService::Subscription> +TemplateURLService::RegisterOnLoadedCallback(const base::Closure& callback) { + return loaded_ ? std::unique_ptr<TemplateURLService::Subscription>() + : on_loaded_callbacks_.Add(callback); } void TemplateURLService::OnWebDataServiceRequestDone( @@ -930,9 +928,10 @@ syncer::SyncError TemplateURLService::ProcessSyncChanges( std::string guid = iter->sync_data().GetSpecifics().search_engine().sync_guid(); TemplateURL* existing_turl = GetTemplateURLForGUID(guid); - scoped_ptr<TemplateURL> turl(CreateTemplateURLFromTemplateURLAndSyncData( - client_.get(), prefs_, search_terms_data(), existing_turl, - iter->sync_data(), &new_changes)); + std::unique_ptr<TemplateURL> turl( + CreateTemplateURLFromTemplateURLAndSyncData( + client_.get(), prefs_, search_terms_data(), existing_turl, + iter->sync_data(), &new_changes)); if (!turl.get()) continue; @@ -1041,8 +1040,8 @@ syncer::SyncError TemplateURLService::ProcessSyncChanges( syncer::SyncMergeResult TemplateURLService::MergeDataAndStartSyncing( syncer::ModelType type, const syncer::SyncDataList& initial_sync_data, - scoped_ptr<syncer::SyncChangeProcessor> sync_processor, - scoped_ptr<syncer::SyncErrorFactory> sync_error_factory) { + std::unique_ptr<syncer::SyncChangeProcessor> sync_processor, + std::unique_ptr<syncer::SyncErrorFactory> sync_error_factory) { DCHECK(loaded_); DCHECK_EQ(type, syncer::SEARCH_ENGINES); DCHECK(!sync_processor_.get()); @@ -1084,7 +1083,7 @@ syncer::SyncMergeResult TemplateURLService::MergeDataAndStartSyncing( for (SyncDataMap::const_iterator iter = sync_data_map.begin(); iter != sync_data_map.end(); ++iter) { TemplateURL* local_turl = GetTemplateURLForGUID(iter->first); - scoped_ptr<TemplateURL> sync_turl( + std::unique_ptr<TemplateURL> sync_turl( CreateTemplateURLFromTemplateURLAndSyncData( client_.get(), prefs_, search_terms_data(), local_turl, iter->second, &new_changes)); @@ -1252,7 +1251,7 @@ syncer::SyncData TemplateURLService::CreateSyncDataFromTemplateURL( } // static -scoped_ptr<TemplateURL> +std::unique_ptr<TemplateURL> TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData( TemplateURLServiceClient* client, PrefService* prefs, @@ -1321,7 +1320,7 @@ TemplateURLService::CreateTemplateURLFromTemplateURLAndSyncData( data.alternate_urls.push_back(specifics.alternate_urls(i)); data.search_terms_replacement_key = specifics.search_terms_replacement_key(); - scoped_ptr<TemplateURL> turl(new TemplateURL(data)); + std::unique_ptr<TemplateURL> turl(new TemplateURL(data)); // If this TemplateURL matches a built-in prepopulated template URL, it's // possible that sync is trying to modify fields that should not be touched. // Revert these fields to the built-in values. diff --git a/chromium/components/search_engines/template_url_service.h b/chromium/components/search_engines/template_url_service.h index c56da710ee3..3f32b11e744 100644 --- a/chromium/components/search_engines/template_url_service.h +++ b/chromium/components/search_engines/template_url_service.h @@ -6,8 +6,10 @@ #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ #include <stddef.h> + #include <list> #include <map> +#include <memory> #include <set> #include <string> #include <utility> @@ -16,7 +18,6 @@ #include "base/callback_list.h" #include "base/gtest_prod_util.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/observer_list.h" #include "base/time/clock.h" #include "components/google/core/browser/google_url_tracker.h" @@ -103,9 +104,9 @@ class TemplateURLService : public WebDataServiceConsumer, TemplateURLService( PrefService* prefs, - scoped_ptr<SearchTermsData> search_terms_data, + std::unique_ptr<SearchTermsData> search_terms_data, const scoped_refptr<KeywordWebDataService>& web_data_service, - scoped_ptr<TemplateURLServiceClient> client, + std::unique_ptr<TemplateURLServiceClient> client, GoogleURLTracker* google_url_tracker, rappor::RapporService* rappor_service, const base::Closure& dsp_change_callback); @@ -179,7 +180,7 @@ class TemplateURLService : public WebDataServiceConsumer, // Adds a search engine with the specified info. void AddExtensionControlledTURL( TemplateURL* template_url, - scoped_ptr<TemplateURL::AssociatedExtensionInfo> info); + std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info); // Removes the keyword from the model. This deletes the supplied TemplateURL. // This fails if the supplied template_url is the default search provider. @@ -292,7 +293,7 @@ class TemplateURLService : public WebDataServiceConsumer, // Registers a callback to be called when the service has loaded. // // If the service has already loaded, this function does nothing. - scoped_ptr<Subscription> RegisterOnLoadedCallback( + std::unique_ptr<Subscription> RegisterOnLoadedCallback( const base::Closure& callback); #if defined(UNIT_TEST) @@ -340,8 +341,8 @@ class TemplateURLService : public WebDataServiceConsumer, syncer::SyncMergeResult MergeDataAndStartSyncing( syncer::ModelType type, const syncer::SyncDataList& initial_sync_data, - scoped_ptr<syncer::SyncChangeProcessor> sync_processor, - scoped_ptr<syncer::SyncErrorFactory> sync_error_factory) override; + std::unique_ptr<syncer::SyncChangeProcessor> sync_processor, + std::unique_ptr<syncer::SyncErrorFactory> sync_error_factory) override; void StopSyncing(syncer::ModelType type) override; // Processes a local TemplateURL change for Sync. |turl| is the TemplateURL @@ -371,7 +372,8 @@ class TemplateURLService : public WebDataServiceConsumer, // data, an appropriate SyncChange is added to |change_list|. If the sync // data is bad for some reason, an ACTION_DELETE change is added and the // function returns NULL. - static scoped_ptr<TemplateURL> CreateTemplateURLFromTemplateURLAndSyncData( + static std::unique_ptr<TemplateURL> + CreateTemplateURLFromTemplateURLAndSyncData( TemplateURLServiceClient* client, PrefService* prefs, const SearchTermsData& search_terms_data, @@ -384,7 +386,9 @@ class TemplateURLService : public WebDataServiceConsumer, const syncer::SyncDataList& sync_data); #if defined(UNIT_TEST) - void set_clock(scoped_ptr<base::Clock> clock) { clock_ = std::move(clock); } + void set_clock(std::unique_ptr<base::Clock> clock) { + clock_ = std::move(clock); + } #endif private: @@ -700,13 +704,13 @@ class TemplateURLService : public WebDataServiceConsumer, // ---------- Browser state related members --------------------------------- PrefService* prefs_; - scoped_ptr<SearchTermsData> search_terms_data_; + std::unique_ptr<SearchTermsData> search_terms_data_; // ---------- Dependencies on other components ------------------------------ // Service used to store entries. scoped_refptr<KeywordWebDataService> web_data_service_; - scoped_ptr<TemplateURLServiceClient> client_; + std::unique_ptr<TemplateURLServiceClient> client_; GoogleURLTracker* google_url_tracker_; @@ -741,9 +745,9 @@ class TemplateURLService : public WebDataServiceConsumer, base::ObserverList<TemplateURLServiceObserver> model_observers_; // Maps from host to set of TemplateURLs whose search url host is host. - // NOTE: This is always non-NULL; we use a scoped_ptr<> to avoid circular + // NOTE: This is always non-NULL; we use a std::unique_ptr<> to avoid circular // header dependencies. - scoped_ptr<SearchHostToURLsMap> provider_map_; + std::unique_ptr<SearchHostToURLsMap> provider_map_; // Whether the keywords have been loaded. bool loaded_; @@ -769,7 +773,7 @@ class TemplateURLService : public WebDataServiceConsumer, // A temporary location for the DSE until Web Data has been loaded and it can // be merged into |template_urls_|. - scoped_ptr<TemplateURL> initial_default_search_provider_; + std::unique_ptr<TemplateURL> initial_default_search_provider_; // Source of the default search provider. DefaultSearchManager::Source default_search_provider_source_; @@ -779,7 +783,7 @@ class TemplateURLService : public WebDataServiceConsumer, TemplateURLID next_id_; // Used to retrieve the current time, in base::Time units. - scoped_ptr<base::Clock> clock_; + std::unique_ptr<base::Clock> clock_; // Do we have an active association between the TemplateURLs and sync models? // Set in MergeDataAndStartSyncing, reset in StopSyncing. While this is not @@ -792,10 +796,10 @@ class TemplateURLService : public WebDataServiceConsumer, bool processing_syncer_changes_; // Sync's syncer::SyncChange handler. We push all our changes through this. - scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; + std::unique_ptr<syncer::SyncChangeProcessor> sync_processor_; // Sync's error handler. We use it to create a sync error. - scoped_ptr<syncer::SyncErrorFactory> sync_error_factory_; + std::unique_ptr<syncer::SyncErrorFactory> sync_error_factory_; // A set of sync GUIDs denoting TemplateURLs that have been removed from this // model or the underlying KeywordWebDataService prior to @@ -815,7 +819,8 @@ class TemplateURLService : public WebDataServiceConsumer, // Helper class to manage the default search engine. DefaultSearchManager default_search_manager_; - scoped_ptr<GoogleURLTracker::Subscription> google_url_updated_subscription_; + std::unique_ptr<GoogleURLTracker::Subscription> + google_url_updated_subscription_; DISALLOW_COPY_AND_ASSIGN(TemplateURLService); }; diff --git a/chromium/components/search_engines/template_url_service_util_unittest.cc b/chromium/components/search_engines/template_url_service_util_unittest.cc index e961f9a83fe..d9a79cad2f8 100644 --- a/chromium/components/search_engines/template_url_service_util_unittest.cc +++ b/chromium/components/search_engines/template_url_service_util_unittest.cc @@ -4,6 +4,7 @@ #include <stddef.h> +#include "base/memory/ptr_util.h" #include "base/memory/scoped_vector.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -15,11 +16,11 @@ namespace { -scoped_ptr<TemplateURLData> CreatePrepopulateTemplateURLData( +std::unique_ptr<TemplateURLData> CreatePrepopulateTemplateURLData( int prepopulate_id, const std::string& keyword, TemplateURLID id) { - scoped_ptr<TemplateURLData> data(new TemplateURLData); + std::unique_ptr<TemplateURLData> data(new TemplateURLData); data->prepopulate_id = prepopulate_id; data->SetKeyword(base::ASCIIToUTF16(keyword)); data->id = id; @@ -29,10 +30,11 @@ scoped_ptr<TemplateURLData> CreatePrepopulateTemplateURLData( // Creates a TemplateURL with default values except for the prepopulate ID, // keyword and TemplateURLID. Only use this in tests if your tests do not // care about other fields. -scoped_ptr<TemplateURL> CreatePrepopulateTemplateURL(int prepopulate_id, - const std::string& keyword, - TemplateURLID id) { - return make_scoped_ptr(new TemplateURL( +std::unique_ptr<TemplateURL> CreatePrepopulateTemplateURL( + int prepopulate_id, + const std::string& keyword, + TemplateURLID id) { + return base::WrapUnique(new TemplateURL( *CreatePrepopulateTemplateURLData(prepopulate_id, keyword, id))); } diff --git a/chromium/components/search_engines/template_url_unittest.cc b/chromium/components/search_engines/template_url_unittest.cc index 828559760d7..6103835a45f 100644 --- a/chromium/components/search_engines/template_url_unittest.cc +++ b/chromium/components/search_engines/template_url_unittest.cc @@ -277,6 +277,60 @@ TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { EXPECT_TRUE(valid); } +// Test that setting the prepopulate ID from TemplateURL causes the stored +// TemplateURLRef to handle parsing the URL parameters differently. +TEST_F(TemplateURLTest, SetPrepopulatedAndReplace) { + TemplateURLData data; + data.SetURL("http://foo{fhqwhgads}search/?q={searchTerms}"); + data.suggestions_url = "http://foo{fhqwhgads}suggest/?q={searchTerms}"; + data.instant_url = "http://foo{fhqwhgads}instant/"; + data.image_url = "http://foo{fhqwhgads}image/"; + data.new_tab_url = "http://foo{fhqwhgads}newtab/"; + data.contextual_search_url = "http://foo{fhqwhgads}context/"; + data.alternate_urls.push_back( + "http://foo{fhqwhgads}alternate/?q={searchTerms}"); + + TemplateURLRef::SearchTermsArgs args(base::ASCIIToUTF16("X")); + const SearchTermsData& stdata = search_terms_data_; + + TemplateURL url(data); + EXPECT_EQ("http://foo%7Bfhqwhgads%7Dsearch/?q=X", + url.url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo%7Bfhqwhgads%7Dalternate/?q=X", + url.url_refs()[0].ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo%7Bfhqwhgads%7Dsearch/?q=X", + url.url_refs()[1].ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo%7Bfhqwhgads%7Dsuggest/?q=X", + url.suggestions_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo{fhqwhgads}instant/", + url.instant_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo{fhqwhgads}image/", + url.image_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo{fhqwhgads}newtab/", + url.new_tab_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foo{fhqwhgads}context/", + url.contextual_search_url_ref().ReplaceSearchTerms(args, stdata)); + + data.prepopulate_id = 123; + TemplateURL url2(data); + EXPECT_EQ("http://foosearch/?q=X", + url2.url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://fooalternate/?q=X", + url2.url_refs()[0].ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foosearch/?q=X", + url2.url_refs()[1].ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foosuggest/?q=X", + url2.suggestions_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://fooinstant/", + url2.instant_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://fooimage/", + url2.image_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foonewtab/", + url2.new_tab_url_ref().ReplaceSearchTerms(args, stdata)); + EXPECT_EQ("http://foocontext/", + url2.contextual_search_url_ref().ReplaceSearchTerms(args, stdata)); +} + TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { TemplateURLData data; data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); @@ -1192,6 +1246,32 @@ TEST_F(TemplateURLTest, ExtractSearchTermsFromNonUTF8URL) { result); } +// Checks that the ExtractSearchTermsFromURL function strips constant +// prefix/suffix strings from the search terms param. +TEST_F(TemplateURLTest, ExtractSearchTermsWithPrefixAndSuffix) { + TemplateURLData data; + data.alternate_urls.push_back( + "http://www.example.com/?q=chromium-{searchTerms}@chromium.org"); + data.alternate_urls.push_back( + "http://www.example.com/chromium-{searchTerms}@chromium.org/info"); + TemplateURL url(data); + base::string16 result; + + EXPECT_TRUE(url.ExtractSearchTermsFromURL( + GURL("http://www.example.com/?q=chromium-dev@chromium.org"), + search_terms_data_, &result)); + EXPECT_EQ(ASCIIToUTF16("dev"), result); + + EXPECT_TRUE(url.ExtractSearchTermsFromURL( + GURL("http://www.example.com/chromium-dev@chromium.org/info"), + search_terms_data_, &result)); + EXPECT_EQ(ASCIIToUTF16("dev"), result); + + // Don't match if the prefix and suffix aren't there. + EXPECT_FALSE(url.ExtractSearchTermsFromURL( + GURL("http://www.example.com/?q=invalid"), search_terms_data_, &result)); +} + TEST_F(TemplateURLTest, HasSearchTermsReplacementKey) { TemplateURLData data; data.SetURL("http://google.com/?q={searchTerms}"); diff --git a/chromium/components/search_engines/util.cc b/chromium/components/search_engines/util.cc index 029c37f099e..c8918540995 100644 --- a/chromium/components/search_engines/util.cc +++ b/chromium/components/search_engines/util.cc @@ -207,7 +207,7 @@ void MergeEnginesFromPrepopulateData( // Remove items. for (std::vector<TemplateURL*>::iterator i = actions.removed_engines.begin(); i < actions.removed_engines.end(); ++i) { - scoped_ptr<TemplateURL> template_url(*i); + std::unique_ptr<TemplateURL> template_url(*i); TemplateURLService::TemplateURLVector::iterator j = std::find( template_urls->begin(), template_urls->end(), template_url.get()); DCHECK(j != template_urls->end()); @@ -225,7 +225,7 @@ void MergeEnginesFromPrepopulateData( for (EditedEngines::iterator i(actions.edited_engines.begin()); i < actions.edited_engines.end(); ++i) { TemplateURLData& data = i->second; - scoped_ptr<TemplateURL> existing_url(i->first); + std::unique_ptr<TemplateURL> existing_url(i->first); if (service) service->UpdateKeyword(data); @@ -266,7 +266,7 @@ ActionsFromPrepopulateData CreateActionsFromCurrentPrepopulateData( ActionsFromPrepopulateData actions; for (size_t i = 0; i < prepopulated_urls->size(); ++i) { // We take ownership of |prepopulated_urls[i]|. - scoped_ptr<TemplateURLData> prepopulated_url((*prepopulated_urls)[i]); + std::unique_ptr<TemplateURLData> prepopulated_url((*prepopulated_urls)[i]); const int prepopulated_id = prepopulated_url->prepopulate_id; DCHECK_NE(0, prepopulated_id); diff --git a/chromium/components/search_engines/util.h b/chromium/components/search_engines/util.h index 1b7d3eecf30..6c235b96cf5 100644 --- a/chromium/components/search_engines/util.h +++ b/chromium/components/search_engines/util.h @@ -6,11 +6,11 @@ #define COMPONENTS_SEARCH_ENGINES_UTIL_H_ // This file contains utility functions for search engine functionality. +#include <memory> #include <set> #include <string> #include <vector> -#include "base/memory/scoped_ptr.h" #include "base/strings/string16.h" #include "components/search_engines/template_url_service.h" |