summaryrefslogtreecommitdiff
path: root/chromium/components/search_engines
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-07-14 17:41:05 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:37:36 +0000
commit399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (patch)
tree6b06b60ff365abef0e13b3503d593a0df48d20e8 /chromium/components/search_engines
parent7366110654eec46f21b6824f302356426f48cd74 (diff)
downloadqtwebengine-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')
-rw-r--r--chromium/components/search_engines/default_search_manager.cc8
-rw-r--r--chromium/components/search_engines/default_search_manager.h11
-rw-r--r--chromium/components/search_engines/default_search_manager_unittest.cc39
-rw-r--r--chromium/components/search_engines/default_search_policy_handler.cc8
-rw-r--r--chromium/components/search_engines/default_search_policy_handler_unittest.cc148
-rw-r--r--chromium/components/search_engines/default_search_pref_migration.cc15
-rw-r--r--chromium/components/search_engines/default_search_pref_migration_unittest.cc20
-rw-r--r--chromium/components/search_engines/default_search_pref_test_util.cc8
-rw-r--r--chromium/components/search_engines/default_search_pref_test_util.h5
-rw-r--r--chromium/components/search_engines/desktop_search_redirection_infobar_delegate.cc6
-rw-r--r--chromium/components/search_engines/desktop_search_utils.cc4
-rw-r--r--chromium/components/search_engines/desktop_search_utils_unittest.cc6
-rw-r--r--chromium/components/search_engines/keyword_table.cc5
-rw-r--r--chromium/components/search_engines/keyword_table_unittest.cc4
-rw-r--r--chromium/components/search_engines/keyword_web_data_service.cc4
-rw-r--r--chromium/components/search_engines/keyword_web_data_service.h2
-rw-r--r--chromium/components/search_engines/prepopulated_engines.json12
-rw-r--r--chromium/components/search_engines/search_engine_data_type_controller.h4
-rw-r--r--chromium/components/search_engines/search_engine_data_type_controller_unittest.cc15
-rw-r--r--chromium/components/search_engines/search_host_to_urls_map.cc3
-rw-r--r--chromium/components/search_engines/search_host_to_urls_map_unittest.cc10
-rw-r--r--chromium/components/search_engines/template_url.cc78
-rw-r--r--chromium/components/search_engines/template_url.h9
-rw-r--r--chromium/components/search_engines/template_url_fetcher.cc106
-rw-r--r--chromium/components/search_engines/template_url_fetcher.h32
-rw-r--r--chromium/components/search_engines/template_url_parser.cc4
-rw-r--r--chromium/components/search_engines/template_url_prepopulate_data.cc11
-rw-r--r--chromium/components/search_engines/template_url_prepopulate_data.h8
-rw-r--r--chromium/components/search_engines/template_url_prepopulate_data_unittest.cc2
-rw-r--r--chromium/components/search_engines/template_url_service.cc35
-rw-r--r--chromium/components/search_engines/template_url_service.h41
-rw-r--r--chromium/components/search_engines/template_url_service_util_unittest.cc14
-rw-r--r--chromium/components/search_engines/template_url_unittest.cc80
-rw-r--r--chromium/components/search_engines/util.cc6
-rw-r--r--chromium/components/search_engines/util.h2
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(), &parameter_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"