summaryrefslogtreecommitdiff
path: root/chromium/components/content_settings
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-04 14:17:57 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-05 10:05:06 +0000
commit39d357e3248f80abea0159765ff39554affb40db (patch)
treeaba0e6bfb76de0244bba0f5fdbd64b830dd6e621 /chromium/components/content_settings
parent87778abf5a1f89266f37d1321b92a21851d8244d (diff)
downloadqtwebengine-chromium-39d357e3248f80abea0159765ff39554affb40db.tar.gz
BASELINE: Update Chromium to 55.0.2883.105
And updates ninja to 1.7.2 Change-Id: I20d43c737f82764d857ada9a55586901b18b9243 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/components/content_settings')
-rw-r--r--chromium/components/content_settings/DEPS3
-rw-r--r--chromium/components/content_settings/content/DEPS4
-rw-r--r--chromium/components/content_settings/content/common/BUILD.gn19
-rw-r--r--chromium/components/content_settings/content/common/DEPS3
-rw-r--r--chromium/components/content_settings/content/common/OWNERS2
-rw-r--r--chromium/components/content_settings/content/common/content_settings_message_generator.cc39
-rw-r--r--chromium/components/content_settings/content/common/content_settings_message_generator.h7
-rw-r--r--chromium/components/content_settings/content/common/content_settings_messages.h96
-rw-r--r--chromium/components/content_settings/core/browser/BUILD.gn11
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_binary_value_map.cc18
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_binary_value_map.h1
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_client.h70
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_default_provider.cc57
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_default_provider.h5
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_info.cc2
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc22
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h1
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_policy_provider.cc9
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_pref.h1
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_pref_provider.cc32
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_pref_provider.h5
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_provider.h1
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_registry.cc40
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_registry_unittest.cc2
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_rule.cc18
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_rule.h7
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_usages_state.cc12
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_usages_state.h4
-rw-r--r--chromium/components/content_settings/core/browser/content_settings_utils.cc2
-rw-r--r--chromium/components/content_settings/core/browser/host_content_settings_map.cc198
-rw-r--r--chromium/components/content_settings/core/browser/host_content_settings_map.h30
-rw-r--r--chromium/components/content_settings/core/browser/local_shared_objects_counter.h28
-rw-r--r--chromium/components/content_settings/core/browser/plugins_field_trial.cc23
-rw-r--r--chromium/components/content_settings/core/browser/plugins_field_trial.h28
-rw-r--r--chromium/components/content_settings/core/browser/website_settings_info.h6
-rw-r--r--chromium/components/content_settings/core/browser/website_settings_registry.cc26
-rw-r--r--chromium/components/content_settings/core/browser/website_settings_registry_unittest.cc14
-rw-r--r--chromium/components/content_settings/core/common/content_settings.cc6
-rw-r--r--chromium/components/content_settings/core/common/content_settings_pattern.cc61
-rw-r--r--chromium/components/content_settings/core/common/content_settings_pattern.h12
-rw-r--r--chromium/components/content_settings/core/common/content_settings_pattern_unittest.cc96
-rw-r--r--chromium/components/content_settings/core/common/content_settings_types.h3
-rw-r--r--chromium/components/content_settings/core/common/pref_names.cc6
-rw-r--r--chromium/components/content_settings/core/common/pref_names.h1
44 files changed, 487 insertions, 544 deletions
diff --git a/chromium/components/content_settings/DEPS b/chromium/components/content_settings/DEPS
index 3a4400fde88..eac076192dc 100644
--- a/chromium/components/content_settings/DEPS
+++ b/chromium/components/content_settings/DEPS
@@ -1,6 +1,3 @@
include_rules = [
- # Content settings is a layered component; subdirectories must explicitly
- # introduce the ability to use the content layer as appropriate.
- "-components/content_settings/content",
"+components/prefs",
]
diff --git a/chromium/components/content_settings/content/DEPS b/chromium/components/content_settings/content/DEPS
deleted file mode 100644
index 09645ae41e7..00000000000
--- a/chromium/components/content_settings/content/DEPS
+++ /dev/null
@@ -1,4 +0,0 @@
-include_rules = [
- "+components/content_settings/content/common",
- "+ipc",
-]
diff --git a/chromium/components/content_settings/content/common/BUILD.gn b/chromium/components/content_settings/content/common/BUILD.gn
deleted file mode 100644
index 5da2f62693b..00000000000
--- a/chromium/components/content_settings/content/common/BUILD.gn
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-source_set("common") {
- sources = [
- "content_settings_message_generator.cc",
- "content_settings_message_generator.h",
- "content_settings_messages.h",
- ]
-
- deps = [
- "//base",
- "//components/content_settings/core/common",
- "//content/public/common",
- "//ipc",
- "//url",
- ]
-}
diff --git a/chromium/components/content_settings/content/common/DEPS b/chromium/components/content_settings/content/common/DEPS
deleted file mode 100644
index d5923ee96cb..00000000000
--- a/chromium/components/content_settings/content/common/DEPS
+++ /dev/null
@@ -1,3 +0,0 @@
-include_rules = [
- "+content/public/common",
-]
diff --git a/chromium/components/content_settings/content/common/OWNERS b/chromium/components/content_settings/content/common/OWNERS
deleted file mode 100644
index 42444bcd16d..00000000000
--- a/chromium/components/content_settings/content/common/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-per-file *_messages*.h=set noparent
-per-file *_messages*.h=file://ipc/SECURITY_OWNERS
diff --git a/chromium/components/content_settings/content/common/content_settings_message_generator.cc b/chromium/components/content_settings/content/common/content_settings_message_generator.cc
deleted file mode 100644
index 0156c49723b..00000000000
--- a/chromium/components/content_settings/content/common/content_settings_message_generator.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Get basic type definitions.
-#define IPC_MESSAGE_IMPL
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-
-// Generate constructors.
-#include "ipc/struct_constructor_macros.h"
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-
-// Generate destructors.
-#include "ipc/struct_destructor_macros.h"
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-
-// Generate param traits size methods.
-#include "ipc/param_traits_size_macros.h"
-namespace IPC {
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-} // namespace IPC
-
-// Generate param traits write methods.
-#include "ipc/param_traits_write_macros.h"
-namespace IPC {
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-} // namespace IPC
-
-// Generate param traits read methods.
-#include "ipc/param_traits_read_macros.h"
-namespace IPC {
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-} // namespace IPC
-
-// Generate param traits log methods.
-#include "ipc/param_traits_log_macros.h"
-namespace IPC {
-#include "components/content_settings/content/common/content_settings_message_generator.h"
-} // namespace IPC
diff --git a/chromium/components/content_settings/content/common/content_settings_message_generator.h b/chromium/components/content_settings/content/common/content_settings_message_generator.h
deleted file mode 100644
index 322fbaecaa9..00000000000
--- a/chromium/components/content_settings/content/common/content_settings_message_generator.h
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Multiply-included file, hence no include guard.
-
-#include "components/content_settings/content/common/content_settings_messages.h"
diff --git a/chromium/components/content_settings/content/common/content_settings_messages.h b/chromium/components/content_settings/content/common/content_settings_messages.h
deleted file mode 100644
index 6d969472da6..00000000000
--- a/chromium/components/content_settings/content/common/content_settings_messages.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Multiply-included file, no traditional include guard.
-#include "base/strings/string16.h"
-#include "components/content_settings/core/common/content_settings_types.h"
-#include "ipc/ipc_message_macros.h"
-#include "url/gurl.h"
-#include "url/ipc/url_param_traits.h"
-
-#define IPC_MESSAGE_START ContentSettingsMsgStart
-
-IPC_ENUM_TRAITS_MAX_VALUE(ContentSettingsType,
- CONTENT_SETTINGS_NUM_TYPES_DO_NOT_USE - 1)
-
-//-----------------------------------------------------------------------------
-// These are messages sent from the browser to the renderer process.
-
-// Sent in response to FrameHostMsg_DidBlockDisplayingInsecureContent.
-IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetAllowDisplayingInsecureContent,
- bool /* allowed */)
-
-// Sent in response to FrameHostMsg_DidBlockRunningInsecureContent.
-IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetAllowRunningInsecureContent,
- bool /* allowed */)
-
-IPC_MESSAGE_ROUTED0(ChromeViewMsg_ReloadFrame)
-
-// Tells the renderer whether or not a file system access has been allowed.
-IPC_MESSAGE_ROUTED2(ChromeViewMsg_RequestFileSystemAccessAsyncResponse,
- int /* request_id */,
- bool /* allowed */)
-
-// Tells the render frame to load all blocked plugins with the given identifier.
-IPC_MESSAGE_ROUTED1(ChromeViewMsg_LoadBlockedPlugins,
- std::string /* identifier */)
-
-// JavaScript related messages -----------------------------------------------
-
-// Tells the frame it is displaying an interstitial page.
-IPC_MESSAGE_ROUTED0(ChromeViewMsg_SetAsInterstitial)
-
-//-----------------------------------------------------------------------------
-// These are messages sent from the renderer to the browser process.
-
-// Tells the browser that content in the current page was blocked due to the
-// user's content settings.
-IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_ContentBlocked,
- ContentSettingsType /* type of blocked content */,
- base::string16 /* details on blocked content */)
-
-// Sent by the renderer process to check whether access to web databases is
-// granted by content settings.
-IPC_SYNC_MESSAGE_CONTROL5_1(ChromeViewHostMsg_AllowDatabase,
- int /* render_frame_id */,
- GURL /* origin_url */,
- GURL /* top origin url */,
- base::string16 /* database name */,
- base::string16 /* database display name */,
- bool /* allowed */)
-
-// Sent by the renderer process to check whether access to DOM Storage is
-// granted by content settings.
-IPC_SYNC_MESSAGE_CONTROL4_1(ChromeViewHostMsg_AllowDOMStorage,
- int /* render_frame_id */,
- GURL /* origin_url */,
- GURL /* top origin url */,
- bool /* if true local storage, otherwise session */,
- bool /* allowed */)
-
-// Sent by the renderer process when a keygen element is rendered onto the
-// current page.
-IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_DidUseKeygen,
- GURL /* origin_url */)
-
-// Sent by the renderer process to check whether access to FileSystem is
-// granted by content settings.
-IPC_MESSAGE_CONTROL4(ChromeViewHostMsg_RequestFileSystemAccessAsync,
- int /* render_frame_id */,
- int /* request_id */,
- GURL /* origin_url */,
- GURL /* top origin url */)
-
-// Sent by the renderer process to check whether access to Indexed DBis
-// granted by content settings.
-IPC_SYNC_MESSAGE_CONTROL4_1(ChromeViewHostMsg_AllowIndexedDB,
- int /* render_frame_id */,
- GURL /* origin_url */,
- GURL /* top origin url */,
- base::string16 /* database name */,
- bool /* allowed */)
-
-// Sent when the renderer was prevented from displaying insecure content in
-// a secure page by a security policy. The page may appear incomplete.
-IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_DidBlockDisplayingInsecureContent)
diff --git a/chromium/components/content_settings/core/browser/BUILD.gn b/chromium/components/content_settings/core/browser/BUILD.gn
index 12e50f4f42a..536cd3d7288 100644
--- a/chromium/components/content_settings/core/browser/BUILD.gn
+++ b/chromium/components/content_settings/core/browser/BUILD.gn
@@ -4,11 +4,10 @@
import("//build/config/features.gni")
-source_set("browser") {
+static_library("browser") {
sources = [
"content_settings_binary_value_map.cc",
"content_settings_binary_value_map.h",
- "content_settings_client.h",
"content_settings_default_provider.cc",
"content_settings_default_provider.h",
"content_settings_details.cc",
@@ -39,20 +38,12 @@ source_set("browser") {
"cookie_settings.h",
"host_content_settings_map.cc",
"host_content_settings_map.h",
- "local_shared_objects_counter.h",
"website_settings_info.cc",
"website_settings_info.h",
"website_settings_registry.cc",
"website_settings_registry.h",
]
- if (enable_plugins) {
- sources += [
- "plugins_field_trial.cc",
- "plugins_field_trial.h",
- ]
- }
-
deps = [
"//base",
"//components/content_settings/core/common",
diff --git a/chromium/components/content_settings/core/browser/content_settings_binary_value_map.cc b/chromium/components/content_settings/core/browser/content_settings_binary_value_map.cc
index cd030bd65dd..ddfb7326c12 100644
--- a/chromium/components/content_settings/core/browser/content_settings_binary_value_map.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_binary_value_map.cc
@@ -16,14 +16,13 @@ namespace {
class RuleIteratorBinary : public RuleIterator {
public:
- explicit RuleIteratorBinary(bool is_enabled,
- std::unique_ptr<base::AutoLock> auto_lock)
+ RuleIteratorBinary(bool is_enabled, std::unique_ptr<base::AutoLock> auto_lock)
: is_done_(is_enabled), auto_lock_(std::move(auto_lock)) {}
bool HasNext() const override { return !is_done_; }
Rule Next() override {
- DCHECK(!is_done_);
+ DCHECK(HasNext());
is_done_ = true;
return Rule(ContentSettingsPattern::Wildcard(),
ContentSettingsPattern::Wildcard(),
@@ -45,11 +44,10 @@ std::unique_ptr<RuleIterator> BinaryValueMap::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
std::unique_ptr<base::AutoLock> auto_lock) const {
- if (resource_identifier.empty()) {
- return std::unique_ptr<RuleIterator>(new RuleIteratorBinary(
- IsContentSettingEnabled(content_type), std::move(auto_lock)));
- }
- return std::unique_ptr<RuleIterator>(new EmptyRuleIterator());
+ if (!resource_identifier.empty())
+ return nullptr;
+ return std::unique_ptr<RuleIterator>(new RuleIteratorBinary(
+ IsContentSettingEnabled(content_type), std::move(auto_lock)));
}
void BinaryValueMap::SetContentSettingDisabled(ContentSettingsType content_type,
@@ -60,9 +58,7 @@ void BinaryValueMap::SetContentSettingDisabled(ContentSettingsType content_type,
bool BinaryValueMap::IsContentSettingEnabled(
ContentSettingsType content_type) const {
auto it = is_enabled_.find(content_type);
- if (it == is_enabled_.end())
- return true;
- return it->second;
+ return it == is_enabled_.end() || it->second;
}
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/content_settings_binary_value_map.h b/chromium/components/content_settings/core/browser/content_settings_binary_value_map.h
index 2fba9126371..dbce8982bc1 100644
--- a/chromium/components/content_settings/core/browser/content_settings_binary_value_map.h
+++ b/chromium/components/content_settings/core/browser/content_settings_binary_value_map.h
@@ -26,6 +26,7 @@ class BinaryValueMap {
BinaryValueMap();
~BinaryValueMap();
+ // Returns nullptr to indicate the RuleIterator is empty.
std::unique_ptr<RuleIterator> GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
diff --git a/chromium/components/content_settings/core/browser/content_settings_client.h b/chromium/components/content_settings/core/browser/content_settings_client.h
deleted file mode 100644
index 2ba347c6d45..00000000000
--- a/chromium/components/content_settings/core/browser/content_settings_client.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_CLIENT_H_
-#define COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_CLIENT_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "base/strings/string16.h"
-#include "net/cookies/canonical_cookie.h"
-
-class GURL;
-class LocalSharedObjectsCounter;
-
-namespace net {
-class CookieOptions;
-}
-
-namespace content_settings {
-
-// An abstraction of operations that depend on the embedder (e.g. Chrome).
-class ContentSettingsClient {
- public:
- enum AccessType { BLOCKED, ALLOWED };
-
- ContentSettingsClient() {}
- virtual ~ContentSettingsClient() {}
-
- // Methods to notify the client about access to local shared objects.
- virtual void OnCookiesRead(const GURL& url,
- const GURL& first_party_url,
- const net::CookieList& cookie_list,
- bool blocked_by_policy) = 0;
-
- virtual void OnCookieChanged(const GURL& url,
- const GURL& first_party_url,
- const std::string& cookie_line,
- const net::CookieOptions& options,
- bool blocked_by_policy) = 0;
-
- virtual void OnFileSystemAccessed(const GURL& url,
- bool blocked_by_policy) = 0;
-
- virtual void OnIndexedDBAccessed(const GURL& url,
- const base::string16& description,
- bool blocked_by_policy) = 0;
-
- virtual void OnLocalStorageAccessed(const GURL& url,
- bool local,
- bool blocked_by_policy) = 0;
-
- virtual void OnWebDatabaseAccessed(const GURL& url,
- const base::string16& name,
- const base::string16& display_name,
- bool blocked_by_policy) = 0;
-
- // Returns the |LocalSharedObjectsCounter| instances corresponding to all
- // allowed (or blocked, depending on |type|) local shared objects.
- virtual const LocalSharedObjectsCounter& local_shared_objects(
- AccessType type) const = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ContentSettingsClient);
-};
-
-} // namespace content_settings
-
-#endif // COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_CLIENT_H_
diff --git a/chromium/components/content_settings/core/browser/content_settings_default_provider.cc b/chromium/components/content_settings/core/browser/content_settings_default_provider.cc
index 1d4af86fdca..f1ca103e3b6 100644
--- a/chromium/components/content_settings/core/browser/content_settings_default_provider.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_default_provider.cc
@@ -9,7 +9,6 @@
#include "base/auto_reset.h"
#include "base/bind.h"
-#include "base/command_line.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "components/content_settings/core/browser/content_settings_rule.h"
@@ -29,15 +28,6 @@ namespace content_settings {
namespace {
-// Obsolete prefs to be removed from the pref file.
-// TODO(msramek): Remove this cleanup code after two releases (i.e. in M50).
-const char kObsoleteMetroSwitchToDesktopSetting[] =
- "profile.default_content_setting_values.metro_switch_to_desktop";
-
-// TODO(msramek): Remove this cleanup code after two releases (i.e. in M51).
-const char kObsoleteMediaStreamSetting[] =
- "profile.default_content_setting_values.media_stream";
-
ContentSetting GetDefaultValue(const WebsiteSettingsInfo* info) {
const base::Value* initial_default = info->initial_default_value();
if (!initial_default)
@@ -65,10 +55,10 @@ class DefaultRuleIterator : public RuleIterator {
value_.reset(value->DeepCopy());
}
- bool HasNext() const override { return value_.get() != NULL; }
+ bool HasNext() const override { return !!value_; }
Rule Next() override {
- DCHECK(value_.get());
+ DCHECK(HasNext());
return Rule(ContentSettingsPattern::Wildcard(),
ContentSettingsPattern::Wildcard(),
value_.release());
@@ -91,17 +81,6 @@ void DefaultProvider::RegisterProfilePrefs(
GetDefaultValue(info),
info->GetPrefRegistrationFlags());
}
-
- // Obsolete prefs -------------------------------------------------------
-
- // The removed content settings type METRO_SWITCH_TO_DESKTOP.
- registry->RegisterIntegerPref(
- kObsoleteMetroSwitchToDesktopSetting,
- 0,
- user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-
- // The removed content settings type MEDIASTREAM.
- registry->RegisterIntegerPref(kObsoleteMediaStreamSetting, 0);
}
DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
@@ -110,9 +89,6 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
updating_preferences_(false) {
DCHECK(prefs_);
- // Remove the obsolete preferences from the pref file.
- DiscardObsoletePreferences();
-
// Read global defaults.
ReadDefaultSettings();
@@ -178,11 +154,6 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
GetPrefName(CONTENT_SETTINGS_TYPE_MIDI_SYSEX))),
CONTENT_SETTING_NUM_SETTINGS);
UMA_HISTOGRAM_ENUMERATION(
- "ContentSettings.DefaultPushMessagingSetting",
- IntToContentSetting(prefs_->GetInteger(
- GetPrefName(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING))),
- CONTENT_SETTING_NUM_SETTINGS);
- UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.DefaultKeygenSetting",
IntToContentSetting(prefs_->GetInteger(
GetPrefName(CONTENT_SETTINGS_TYPE_KEYGEN))),
@@ -261,17 +232,18 @@ std::unique_ptr<RuleIterator> DefaultProvider::GetRuleIterator(
bool incognito) const {
// The default provider never has incognito-specific settings.
if (incognito)
- return std::unique_ptr<RuleIterator>(new EmptyRuleIterator());
+ return nullptr;
base::AutoLock lock(lock_);
- if (resource_identifier.empty()) {
- auto it(default_settings_.find(content_type));
- if (it != default_settings_.end())
- return std::unique_ptr<RuleIterator>(
- new DefaultRuleIterator(it->second.get()));
+ if (!resource_identifier.empty())
+ return nullptr;
+
+ auto it = default_settings_.find(content_type);
+ if (it == default_settings_.end()) {
NOTREACHED();
+ return nullptr;
}
- return std::unique_ptr<RuleIterator>(new EmptyRuleIterator());
+ return base::MakeUnique<DefaultRuleIterator>(it->second.get());
}
void DefaultProvider::ClearAllContentSettingsRules(
@@ -300,8 +272,8 @@ void DefaultProvider::ReadDefaultSettings() {
bool DefaultProvider::IsValueEmptyOrDefault(ContentSettingsType content_type,
base::Value* value) {
- if (!value) return true;
- return ValueToContentSetting(value) == GetDefaultValue(content_type);
+ return !value ||
+ ValueToContentSetting(value) == GetDefaultValue(content_type);
}
void DefaultProvider::ChangeSetting(ContentSettingsType content_type,
@@ -372,9 +344,4 @@ std::unique_ptr<base::Value> DefaultProvider::ReadFromPref(
return ContentSettingToValue(IntToContentSetting(int_value));
}
-void DefaultProvider::DiscardObsoletePreferences() {
- prefs_->ClearPref(kObsoleteMetroSwitchToDesktopSetting);
- prefs_->ClearPref(kObsoleteMediaStreamSetting);
-}
-
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/content_settings_default_provider.h b/chromium/components/content_settings/core/browser/content_settings_default_provider.h
index 5691a188ce4..f4f234695ca 100644
--- a/chromium/components/content_settings/core/browser/content_settings_default_provider.h
+++ b/chromium/components/content_settings/core/browser/content_settings_default_provider.h
@@ -72,16 +72,13 @@ class DefaultProvider : public ObservableProvider {
// Called on prefs change.
void OnPreferenceChanged(const std::string& pref_name);
- // Clean up the obsolete preferences from the user's profile.
- void DiscardObsoletePreferences();
-
// Copies of the pref data, so that we can read it on the IO thread.
std::map<ContentSettingsType, std::unique_ptr<base::Value>> default_settings_;
PrefService* prefs_;
// Whether this settings map is for an Incognito session.
- bool is_incognito_;
+ const bool is_incognito_;
// Used around accesses to the |default_settings_| object to guarantee
// thread safety.
diff --git a/chromium/components/content_settings/core/browser/content_settings_info.cc b/chromium/components/content_settings/core/browser/content_settings_info.cc
index 62e5c685c4f..c111944e286 100644
--- a/chromium/components/content_settings/core/browser/content_settings_info.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_info.cc
@@ -21,7 +21,7 @@ ContentSettingsInfo::ContentSettingsInfo(
ContentSettingsInfo::~ContentSettingsInfo() {}
bool ContentSettingsInfo::IsSettingValid(ContentSetting setting) const {
- return ContainsKey(valid_settings_, setting);
+ return base::ContainsKey(valid_settings_, setting);
}
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc b/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
index 42bc2512b5f..3f6133b67a8 100644
--- a/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
@@ -37,7 +37,7 @@ class RuleIteratorImpl : public RuleIterator {
bool HasNext() const override { return (current_rule_ != rule_end_); }
Rule Next() override {
- DCHECK(current_rule_ != rule_end_);
+ DCHECK(HasNext());
DCHECK(current_rule_->second.get());
Rule to_return(current_rule_->first.primary_pattern,
current_rule_->first.secondary_pattern,
@@ -97,16 +97,15 @@ std::unique_ptr<RuleIterator> OriginIdentifierValueMap::GetRuleIterator(
auto_lock.reset(new base::AutoLock(*lock));
EntryMap::const_iterator it = entries_.find(key);
if (it == entries_.end())
- return std::unique_ptr<RuleIterator>(new EmptyRuleIterator());
+ return nullptr;
return std::unique_ptr<RuleIterator>(new RuleIteratorImpl(
it->second.begin(), it->second.end(), auto_lock.release()));
}
size_t OriginIdentifierValueMap::size() const {
size_t size = 0;
- EntryMap::const_iterator it;
- for (it = entries_.begin(); it != entries_.end(); ++it)
- size += it->second.size();
+ for (const auto& entry : entries_)
+ size += entry.second.size();
return size;
}
@@ -122,19 +121,18 @@ base::Value* OriginIdentifierValueMap::GetValue(
EntryMapKey key(content_type, resource_identifier);
EntryMap::const_iterator it = entries_.find(key);
if (it == entries_.end())
- return NULL;
+ return nullptr;
// Iterate the entries in until a match is found. Since the rules are stored
// in the order of decreasing precedence, the most specific match is found
// first.
- Rules::const_iterator entry;
- for (entry = it->second.begin(); entry != it->second.end(); ++entry) {
- if (entry->first.primary_pattern.Matches(primary_url) &&
- entry->first.secondary_pattern.Matches(secondary_url)) {
- return entry->second.get();
+ for (const auto& entry : it->second) {
+ if (entry.first.primary_pattern.Matches(primary_url) &&
+ entry.first.secondary_pattern.Matches(secondary_url)) {
+ return entry.second.get();
}
}
- return NULL;
+ return nullptr;
}
void OriginIdentifierValueMap::SetValue(
diff --git a/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h b/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
index 62c984c59de..1ac2fe56bed 100644
--- a/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
+++ b/chromium/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
@@ -74,6 +74,7 @@ class OriginIdentifierValueMap {
// |OriginIdentifierValueMap| (also |GetRuleIterator|) before the iterator
// has been destroyed. If |lock| is non-NULL, the returned |RuleIterator|
// locks it and releases it when it is destroyed.
+ // Returns nullptr to indicate the RuleIterator is empty.
std::unique_ptr<RuleIterator> GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
diff --git a/chromium/components/content_settings/core/browser/content_settings_policy_provider.cc b/chromium/components/content_settings/core/browser/content_settings_policy_provider.cc
index 3e1245b9ad4..78a12a27a91 100644
--- a/chromium/components/content_settings/core/browser/content_settings_policy_provider.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_policy_provider.cc
@@ -9,6 +9,7 @@
#include <string>
#include "base/bind.h"
+#include "base/feature_list.h"
#include "base/json/json_reader.h"
#include "base/macros.h"
#include "base/values.h"
@@ -354,8 +355,14 @@ void PolicyProvider::UpdateManagedDefaultSetting(
DCHECK(!prefs_->HasPrefPath(entry.pref_name) ||
prefs_->IsManagedPreference(entry.pref_name));
base::AutoLock auto_lock(lock_);
-
int setting = prefs_->GetInteger(entry.pref_name);
+ // TODO(wfh): Remove once HDB is enabled by default.
+ if (entry.pref_name == prefs::kManagedDefaultPluginsSetting) {
+ static constexpr base::Feature kIgnoreDefaultPluginsSetting = {
+ "IgnoreDefaultPluginsSetting", base::FEATURE_DISABLED_BY_DEFAULT};
+ if (base::FeatureList::IsEnabled(kIgnoreDefaultPluginsSetting))
+ setting = CONTENT_SETTING_DEFAULT;
+ }
if (setting == CONTENT_SETTING_DEFAULT) {
value_map_.DeleteValue(ContentSettingsPattern::Wildcard(),
ContentSettingsPattern::Wildcard(),
diff --git a/chromium/components/content_settings/core/browser/content_settings_pref.h b/chromium/components/content_settings/core/browser/content_settings_pref.h
index 1a600d6c156..aa2ab178e3d 100644
--- a/chromium/components/content_settings/core/browser/content_settings_pref.h
+++ b/chromium/components/content_settings/core/browser/content_settings_pref.h
@@ -51,6 +51,7 @@ class ContentSettingsPref {
NotifyObserversCallback notify_callback);
~ContentSettingsPref();
+ // Returns nullptr to indicate the RuleIterator is empty.
std::unique_ptr<RuleIterator> GetRuleIterator(
const ResourceIdentifier& resource_identifier,
bool incognito) const;
diff --git a/chromium/components/content_settings/core/browser/content_settings_pref_provider.cc b/chromium/components/content_settings/core/browser/content_settings_pref_provider.cc
index c544e186aa2..8d451633e2c 100644
--- a/chromium/components/content_settings/core/browser/content_settings_pref_provider.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_pref_provider.cc
@@ -15,7 +15,6 @@
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
-#include "base/strings/string_split.h"
#include "base/time/clock.h"
#include "base/time/default_clock.h"
#include "components/content_settings/core/browser/content_settings_pref.h"
@@ -32,18 +31,6 @@
#include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h"
-namespace {
-
-// Obsolete prefs.
-// TODO(msramek): Remove the cleanup code after two releases (i.e. in M50).
-const char kObsoleteMetroSwitchToDesktopExceptions[] =
- "profile.content_settings.exceptions.metro_switch_to_desktop";
-
-const char kObsoleteMediaStreamExceptions[] =
- "profile.content_settings.exceptions.media_stream";
-
-} // namespace
-
namespace content_settings {
// ////////////////////////////////////////////////////////////////////////////
@@ -63,14 +50,6 @@ void PrefProvider::RegisterProfilePrefs(
registry->RegisterDictionaryPref(info->pref_name(),
info->GetPrefRegistrationFlags());
}
-
- // Obsolete prefs ----------------------------------------------------------
-
- registry->RegisterDictionaryPref(
- kObsoleteMetroSwitchToDesktopExceptions,
- user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-
- registry->RegisterDictionaryPref(kObsoleteMediaStreamExceptions);
}
PrefProvider::PrefProvider(PrefService* prefs, bool incognito)
@@ -95,10 +74,10 @@ PrefProvider::PrefProvider(PrefService* prefs, bool incognito)
for (const WebsiteSettingsInfo* info : *website_settings) {
content_settings_prefs_.insert(std::make_pair(
info->type(),
- base::WrapUnique(new ContentSettingsPref(
+ base::MakeUnique<ContentSettingsPref>(
info->type(), prefs_, &pref_change_registrar_, info->pref_name(),
is_incognito_,
- base::Bind(&PrefProvider::Notify, base::Unretained(this))))));
+ base::Bind(&PrefProvider::Notify, base::Unretained(this)))));
}
if (!is_incognito_) {
@@ -109,8 +88,6 @@ PrefProvider::PrefProvider(PrefService* prefs, bool incognito)
UMA_HISTOGRAM_COUNTS("ContentSettings.NumberOfExceptions",
num_exceptions);
}
-
- DiscardObsoletePreferences();
}
PrefProvider::~PrefProvider() {
@@ -210,9 +187,4 @@ void PrefProvider::Notify(
resource_identifier);
}
-void PrefProvider::DiscardObsoletePreferences() {
- prefs_->ClearPref(kObsoleteMetroSwitchToDesktopExceptions);
- prefs_->ClearPref(kObsoleteMediaStreamExceptions);
-}
-
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/content_settings_pref_provider.h b/chromium/components/content_settings/core/browser/content_settings_pref_provider.h
index fd7bb42635f..65be16d049f 100644
--- a/chromium/components/content_settings/core/browser/content_settings_pref_provider.h
+++ b/chromium/components/content_settings/core/browser/content_settings_pref_provider.h
@@ -80,16 +80,13 @@ class PrefProvider : public ObservableProvider {
ContentSettingsType content_type,
const std::string& resource_identifier);
- // Clean up the obsolete preferences from the user's profile.
- void DiscardObsoletePreferences();
-
// Weak; owned by the Profile and reset in ShutdownOnUIThread.
PrefService* prefs_;
// Can be set for testing.
std::unique_ptr<base::Clock> clock_;
- bool is_incognito_;
+ const bool is_incognito_;
PrefChangeRegistrar pref_change_registrar_;
diff --git a/chromium/components/content_settings/core/browser/content_settings_provider.h b/chromium/components/content_settings/core/browser/content_settings_provider.h
index 8c1852e5ece..057ed81ba7e 100644
--- a/chromium/components/content_settings/core/browser/content_settings_provider.h
+++ b/chromium/components/content_settings/core/browser/content_settings_provider.h
@@ -32,6 +32,7 @@ class ProviderInterface {
// mode. It is not allowed to call other |ProviderInterface| functions
// (including |GetRuleIterator|) for the same provider until the
// |RuleIterator| is destroyed.
+ // Returns nullptr to indicate the RuleIterator is empty.
virtual std::unique_ptr<RuleIterator> GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
diff --git a/chromium/components/content_settings/core/browser/content_settings_registry.cc b/chromium/components/content_settings/core/browser/content_settings_registry.cc
index 240243d1961..6f71249d2be 100644
--- a/chromium/components/content_settings/core/browser/content_settings_registry.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_registry.cc
@@ -132,7 +132,7 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -141,7 +141,7 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -153,7 +153,7 @@ void ContentSettingsRegistry::Init() {
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK,
CONTENT_SETTING_DETECT_IMPORTANT_CONTENT),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -162,7 +162,7 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme,
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -202,7 +202,7 @@ void ContentSettingsRegistry::Init() {
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -241,7 +241,7 @@ void ContentSettingsRegistry::Init() {
kExtensionScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP |
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -255,16 +255,6 @@ void ContentSettingsRegistry::Init() {
WebsiteSettingsRegistry::PLATFORM_ANDROID,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
- Register(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, "push-messaging",
- CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
- WhitelistedSchemes(),
- ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
- CONTENT_SETTING_ASK),
- WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
- WebsiteSettingsRegistry::DESKTOP |
- WebsiteSettingsRegistry::PLATFORM_ANDROID,
- ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW);
-
Register(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
"protected-media-identifier", CONTENT_SETTING_ASK,
WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
@@ -316,14 +306,14 @@ void ContentSettingsRegistry::Init() {
Register(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "protocol-handler",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, "mixed-script",
CONTENT_SETTING_DEFAULT, WebsiteSettingsInfo::UNSYNCABLE,
WhitelistedSchemes(), ValidSettings(),
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::DESKTOP,
ContentSettingsInfo::INHERIT_IN_INCOGNITO);
@@ -349,9 +339,9 @@ void ContentSettingsRegistry::Register(
ContentSettingsInfo::IncognitoBehavior incognito_behavior) {
// Ensure that nothing has been registered yet for the given type.
DCHECK(!website_settings_registry_->Get(type));
- DCHECK(incognito_behavior
- != ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW
- || ContainsKey(valid_settings, CONTENT_SETTING_ASK))
+ DCHECK(incognito_behavior !=
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW ||
+ base::ContainsKey(valid_settings, CONTENT_SETTING_ASK))
<< "If INHERIT_IN_INCOGNITO_EXCEPT_ALLOW is set, ASK must be listed as a "
"valid setting.";
std::unique_ptr<base::Value> default_value(
@@ -367,10 +357,10 @@ void ContentSettingsRegistry::Register(
if (!website_settings_info)
return;
- DCHECK(!ContainsKey(content_settings_info_, type));
- content_settings_info_[type] = base::WrapUnique(
- new ContentSettingsInfo(website_settings_info, whitelisted_schemes,
- valid_settings, incognito_behavior));
+ DCHECK(!base::ContainsKey(content_settings_info_, type));
+ content_settings_info_[type] = base::MakeUnique<ContentSettingsInfo>(
+ website_settings_info, whitelisted_schemes, valid_settings,
+ incognito_behavior);
}
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/content_settings_registry_unittest.cc b/chromium/components/content_settings/core/browser/content_settings_registry_unittest.cc
index 7b8d66203ce..bf595c44e03 100644
--- a/chromium/components/content_settings/core/browser/content_settings_registry_unittest.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_registry_unittest.cc
@@ -86,7 +86,7 @@ TEST_F(ContentSettingsRegistryTest, Properties) {
ASSERT_TRUE(
website_settings_info->initial_default_value()->GetAsInteger(&setting));
EXPECT_EQ(CONTENT_SETTING_ALLOW, setting);
-#if defined(OS_IOS)
+#if defined(OS_ANDROID) || defined(OS_IOS)
EXPECT_EQ(PrefRegistry::NO_REGISTRATION_FLAGS,
website_settings_info->GetPrefRegistrationFlags());
#else
diff --git a/chromium/components/content_settings/core/browser/content_settings_rule.cc b/chromium/components/content_settings/core/browser/content_settings_rule.cc
index 540231337ee..13d6a0aeed9 100644
--- a/chromium/components/content_settings/core/browser/content_settings_rule.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_rule.cc
@@ -2,9 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/logging.h"
#include "components/content_settings/core/browser/content_settings_rule.h"
+#include <utility>
+
+#include "base/logging.h"
+
namespace content_settings {
Rule::Rule() {}
@@ -25,17 +28,6 @@ Rule::~Rule() {}
RuleIterator::~RuleIterator() {}
-EmptyRuleIterator::~EmptyRuleIterator() {}
-
-bool EmptyRuleIterator::HasNext() const {
- return false;
-}
-
-Rule EmptyRuleIterator::Next() {
- NOTREACHED();
- return Rule();
-}
-
ConcatenationIterator::ConcatenationIterator(
std::vector<std::unique_ptr<RuleIterator>> iterators,
base::AutoLock* auto_lock)
@@ -52,7 +44,7 @@ ConcatenationIterator::ConcatenationIterator(
ConcatenationIterator::~ConcatenationIterator() {}
bool ConcatenationIterator::HasNext() const {
- return (!iterators_.empty());
+ return !iterators_.empty();
}
Rule ConcatenationIterator::Next() {
diff --git a/chromium/components/content_settings/core/browser/content_settings_rule.h b/chromium/components/content_settings/core/browser/content_settings_rule.h
index af7b450a8f9..8c24e60ccaf 100644
--- a/chromium/components/content_settings/core/browser/content_settings_rule.h
+++ b/chromium/components/content_settings/core/browser/content_settings_rule.h
@@ -39,13 +39,6 @@ class RuleIterator {
virtual Rule Next() = 0;
};
-class EmptyRuleIterator : public RuleIterator {
- public:
- ~EmptyRuleIterator() override;
- bool HasNext() const override;
- Rule Next() override;
-};
-
class ConcatenationIterator : public RuleIterator {
public:
// ConcatenationIterator takes ownership of the pointers in the |iterators|
diff --git a/chromium/components/content_settings/core/browser/content_settings_usages_state.cc b/chromium/components/content_settings/core/browser/content_settings_usages_state.cc
index b0486a90758..0619ff3ffc6 100644
--- a/chromium/components/content_settings/core/browser/content_settings_usages_state.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_usages_state.cc
@@ -10,12 +10,6 @@
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/url_formatter/url_formatter.h"
-ContentSettingsUsagesState::CommittedDetails::CommittedDetails()
- : current_url_valid(false) {
-}
-
-ContentSettingsUsagesState::CommittedDetails::~CommittedDetails() {}
-
ContentSettingsUsagesState::ContentSettingsUsagesState(
HostContentSettingsMap* host_content_settings_map,
ContentSettingsType type)
@@ -33,12 +27,10 @@ void ContentSettingsUsagesState::OnPermissionSet(
}
void ContentSettingsUsagesState::DidNavigate(const CommittedDetails& details) {
- if (details.current_url_valid)
- embedder_url_ = details.current_url;
+ embedder_url_ = details.current_url;
if (state_map_.empty())
return;
- if (!details.current_url_valid ||
- details.previous_url.GetOrigin() != details.current_url.GetOrigin()) {
+ if (details.previous_url.GetOrigin() != details.current_url.GetOrigin()) {
state_map_.clear();
return;
}
diff --git a/chromium/components/content_settings/core/browser/content_settings_usages_state.h b/chromium/components/content_settings/core/browser/content_settings_usages_state.h
index 770483eed6d..f00e1702ee1 100644
--- a/chromium/components/content_settings/core/browser/content_settings_usages_state.h
+++ b/chromium/components/content_settings/core/browser/content_settings_usages_state.h
@@ -22,10 +22,6 @@ class ContentSettingsUsagesState {
public:
// Information about navigation.
struct CommittedDetails {
- CommittedDetails();
- ~CommittedDetails();
-
- bool current_url_valid;
GURL current_url;
GURL previous_url;
};
diff --git a/chromium/components/content_settings/core/browser/content_settings_utils.cc b/chromium/components/content_settings/core/browser/content_settings_utils.cc
index c58163250c1..ed0a256f0ae 100644
--- a/chromium/components/content_settings/core/browser/content_settings_utils.cc
+++ b/chromium/components/content_settings/core/browser/content_settings_utils.cc
@@ -128,7 +128,7 @@ std::unique_ptr<base::Value> ContentSettingToValue(ContentSetting setting) {
setting >= CONTENT_SETTING_NUM_SETTINGS) {
return nullptr;
}
- return base::WrapUnique(new base::FundamentalValue(setting));
+ return base::MakeUnique<base::FundamentalValue>(setting);
}
void GetRendererContentSettingRules(const HostContentSettingsMap* map,
diff --git a/chromium/components/content_settings/core/browser/host_content_settings_map.cc b/chromium/components/content_settings/core/browser/host_content_settings_map.cc
index f5a47a8b15b..0e3f49fea1b 100644
--- a/chromium/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/chromium/components/content_settings/core/browser/host_content_settings_map.cc
@@ -11,7 +11,7 @@
#include "base/command_line.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
-#include "base/metrics/histogram.h"
+#include "base/metrics/histogram_macros.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
@@ -58,6 +58,23 @@ const ProviderNamesSourceMapEntry kProviderNamesSourceMap[] = {
{"default", content_settings::SETTING_SOURCE_USER},
};
+// Enum describing the status of domain to origin migration of content settings.
+// Migration will be done twice: once upon construction of the
+// HostContentSettingsMap (before syncing any content settings) and once after
+// sync has finished. We always migrate before sync to ensure that settings will
+// get migrated even if a user doesn't have sync enabled. We migrate after sync
+// to ensure that any sync'd settings will be migrated. Once these events have
+// occurred, we won't perform migration again.
+enum DomainToOriginMigrationStatus {
+ // Haven't been migrated at all.
+ NOT_MIGRATED,
+ // Have done migration in the constructor of HostContentSettingsMap.
+ MIGRATED_BEFORE_SYNC,
+ // Have done migration both in HostContentSettingsMap construction and and
+ // after sync is finished. No migration will happen after this point.
+ MIGRATED_AFTER_SYNC,
+};
+
static_assert(
arraysize(kProviderNamesSourceMap) ==
HostContentSettingsMap::NUM_PROVIDER_TYPES,
@@ -118,11 +135,11 @@ content_settings::PatternPair GetPatternsFromScopingType(
content_settings::PatternPair patterns;
switch (scoping_type) {
- case WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE:
case WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE:
patterns.first = ContentSettingsPattern::FromURL(primary_url);
patterns.second = ContentSettingsPattern::Wildcard();
break;
+ case WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE:
case WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE:
patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url);
patterns.second = ContentSettingsPattern::Wildcard();
@@ -147,7 +164,8 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
used_from_thread_id_(base::PlatformThread::CurrentId()),
#endif
prefs_(prefs),
- is_off_the_record_(is_incognito_profile || is_guest_profile) {
+ is_off_the_record_(is_incognito_profile || is_guest_profile),
+ weak_ptr_factory_(this) {
DCHECK(!(is_incognito_profile && is_guest_profile));
content_settings::PolicyProvider* policy_provider =
@@ -172,7 +190,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
MigrateKeygenSettings();
-
+ MigrateDomainScopedSettings(false);
RecordExceptionMetrics();
}
@@ -183,6 +201,8 @@ void HostContentSettingsMap::RegisterProfilePrefs(
content_settings::ContentSettingsRegistry::GetInstance();
registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, 0);
+ registry->RegisterIntegerPref(prefs::kDomainToOriginMigrationStatus,
+ NOT_MIGRATED);
// Register the prefs for the content settings providers.
content_settings::DefaultProvider::RegisterProfilePrefs(registry);
@@ -214,12 +234,14 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider(
std::unique_ptr<content_settings::RuleIterator> rule_iterator(
provider->GetRuleIterator(content_type, std::string(), false));
- ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard();
- while (rule_iterator->HasNext()) {
- content_settings::Rule rule = rule_iterator->Next();
- if (rule.primary_pattern == wildcard &&
- rule.secondary_pattern == wildcard) {
- return content_settings::ValueToContentSetting(rule.value.get());
+ if (rule_iterator) {
+ ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard();
+ while (rule_iterator->HasNext()) {
+ content_settings::Rule rule = rule_iterator->Next();
+ if (rule.primary_pattern == wildcard &&
+ rule.secondary_pattern == wildcard) {
+ return content_settings::ValueToContentSetting(rule.value.get());
+ }
}
}
return CONTENT_SETTING_DEFAULT;
@@ -497,6 +519,93 @@ void HostContentSettingsMap::MigrateKeygenSettings() {
}
}
+void HostContentSettingsMap::MigrateDomainScopedSettings(bool after_sync) {
+ DomainToOriginMigrationStatus status =
+ static_cast<DomainToOriginMigrationStatus>(
+ prefs_->GetInteger(prefs::kDomainToOriginMigrationStatus));
+ if (status == MIGRATED_AFTER_SYNC)
+ return;
+ if (status == MIGRATED_BEFORE_SYNC && !after_sync)
+ return;
+ DCHECK(status != NOT_MIGRATED || !after_sync);
+
+ const ContentSettingsType kDomainScopedTypes[] = {
+ CONTENT_SETTINGS_TYPE_IMAGES,
+ CONTENT_SETTINGS_TYPE_PLUGINS,
+ CONTENT_SETTINGS_TYPE_JAVASCRIPT,
+ CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
+ CONTENT_SETTINGS_TYPE_POPUPS};
+ for (const ContentSettingsType& type : kDomainScopedTypes) {
+ if (!content_settings::ContentSettingsRegistry::GetInstance()->Get(type))
+ continue;
+ ContentSettingsForOneType settings;
+ GetSettingsForOneType(type, std::string(), &settings);
+
+ for (const ContentSettingPatternSource& setting_entry : settings) {
+ // Migrate user preference settings only.
+ if (setting_entry.source != "preference")
+ continue;
+ // Migrate ALLOW settings only.
+ if (setting_entry.setting != CONTENT_SETTING_ALLOW)
+ continue;
+ // Skip default settings.
+ if (setting_entry.primary_pattern == ContentSettingsPattern::Wildcard())
+ continue;
+
+ if (setting_entry.secondary_pattern !=
+ ContentSettingsPattern::Wildcard()) {
+ NOTREACHED();
+ continue;
+ }
+
+ ContentSettingsPattern origin_pattern;
+ if (!ContentSettingsPattern::MigrateFromDomainToOrigin(
+ setting_entry.primary_pattern, &origin_pattern)) {
+ continue;
+ }
+
+ if (!origin_pattern.IsValid())
+ continue;
+
+ GURL origin(origin_pattern.ToString());
+ DCHECK(origin.is_valid());
+
+ // Ensure that the current resolved content setting for this origin is
+ // allowed. Otherwise we may be overriding some narrower setting which is
+ // set to block.
+ ContentSetting origin_setting =
+ GetContentSetting(origin, origin, type, std::string());
+
+ // Remove the domain scoped pattern. If |origin_setting| is not
+ // CONTENT_SETTING_ALLOW it implies there is some narrower pattern in
+ // effect, so it's still safe to remove the domain-scoped pattern.
+ SetContentSettingCustomScope(setting_entry.primary_pattern,
+ setting_entry.secondary_pattern, type,
+ std::string(), CONTENT_SETTING_DEFAULT);
+
+ // If the current resolved content setting is allowed it's safe to set the
+ // origin-scoped pattern.
+ if (origin_setting == CONTENT_SETTING_ALLOW)
+ SetContentSettingCustomScope(
+ ContentSettingsPattern::FromURLNoWildcard(origin),
+ ContentSettingsPattern::Wildcard(), type, std::string(),
+ CONTENT_SETTING_ALLOW);
+ }
+ }
+
+ if (status == NOT_MIGRATED) {
+ prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus,
+ MIGRATED_BEFORE_SYNC);
+ } else if (status == MIGRATED_BEFORE_SYNC) {
+ prefs_->SetInteger(prefs::kDomainToOriginMigrationStatus,
+ MIGRATED_AFTER_SYNC);
+ }
+}
+
+base::WeakPtr<HostContentSettingsMap> HostContentSettingsMap::GetWeakPtr() {
+ return weak_ptr_factory_.GetWeakPtr();
+}
+
void HostContentSettingsMap::RecordExceptionMetrics() {
for (const content_settings::WebsiteSettingsInfo* info :
*content_settings::WebsiteSettingsRegistry::GetInstance()) {
@@ -514,10 +623,28 @@ void HostContentSettingsMap::RecordExceptionMetrics() {
continue;
}
- UMA_HISTOGRAM_ENUMERATION("ContentSettings.ExceptionScheme",
- setting_entry.primary_pattern.GetScheme(),
+ ContentSettingsPattern::SchemeType scheme =
+ setting_entry.primary_pattern.GetScheme();
+ UMA_HISTOGRAM_ENUMERATION("ContentSettings.ExceptionScheme", scheme,
ContentSettingsPattern::SCHEME_MAX);
+ if (scheme == ContentSettingsPattern::SCHEME_FILE) {
+ UMA_HISTOGRAM_BOOLEAN("ContentSettings.ExceptionSchemeFile.HasPath",
+ setting_entry.primary_pattern.HasPath());
+ size_t num_values;
+ int histogram_value =
+ ContentSettingTypeToHistogramValue(content_type, &num_values);
+ if (setting_entry.primary_pattern.HasPath()) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "ContentSettings.ExceptionSchemeFile.Type.WithPath",
+ histogram_value, num_values);
+ } else {
+ UMA_HISTOGRAM_ENUMERATION(
+ "ContentSettings.ExceptionSchemeFile.Type.WithoutPath",
+ histogram_value, num_values);
+ }
+ }
+
if (setting_entry.source == "preference")
++num_exceptions;
}
@@ -620,6 +747,28 @@ void HostContentSettingsMap::ClearSettingsForOneType(
FlushLossyWebsiteSettings();
}
+void HostContentSettingsMap::ClearSettingsForOneTypeWithPredicate(
+ ContentSettingsType content_type,
+ const base::Callback<bool(const ContentSettingsPattern& primary_pattern,
+ const ContentSettingsPattern& secondary_pattern)>&
+ pattern_predicate) {
+ if (pattern_predicate.is_null()) {
+ ClearSettingsForOneType(content_type);
+ return;
+ }
+
+ ContentSettingsForOneType settings;
+ GetSettingsForOneType(content_type, std::string(), &settings);
+ for (const ContentSettingPatternSource& setting : settings) {
+ if (pattern_predicate.Run(setting.primary_pattern,
+ setting.secondary_pattern)) {
+ SetWebsiteSettingCustomScope(setting.primary_pattern,
+ setting.secondary_pattern, content_type,
+ std::string(), nullptr);
+ }
+ }
+}
+
// TODO(raymes): Remove this function. Consider making it a property of
// ContentSettingsInfo or removing it altogether (it's unclear whether we should
// be restricting allowed default values at this layer).
@@ -664,7 +813,7 @@ void HostContentSettingsMap::OnContentSettingChanged(
HostContentSettingsMap::~HostContentSettingsMap() {
DCHECK(!prefs_);
- STLDeleteValues(&content_settings_providers_);
+ base::STLDeleteValues(&content_settings_providers_);
}
void HostContentSettingsMap::ShutdownOnUIThread() {
@@ -687,6 +836,9 @@ void HostContentSettingsMap::AddSettingsForOneType(
bool incognito) const {
std::unique_ptr<content_settings::RuleIterator> rule_iterator(
provider->GetRuleIterator(content_type, resource_identifier, incognito));
+ if (!rule_iterator)
+ return;
+
while (rule_iterator->HasNext()) {
const content_settings::Rule& rule = rule_iterator->Next();
ContentSetting setting_value = CONTENT_SETTING_DEFAULT;
@@ -851,15 +1003,17 @@ HostContentSettingsMap::GetContentSettingValueAndPatterns(
const GURL& secondary_url,
ContentSettingsPattern* primary_pattern,
ContentSettingsPattern* secondary_pattern) {
- while (rule_iterator->HasNext()) {
- const content_settings::Rule& rule = rule_iterator->Next();
- if (rule.primary_pattern.Matches(primary_url) &&
- rule.secondary_pattern.Matches(secondary_url)) {
- if (primary_pattern)
- *primary_pattern = rule.primary_pattern;
- if (secondary_pattern)
- *secondary_pattern = rule.secondary_pattern;
- return base::WrapUnique(rule.value.get()->DeepCopy());
+ if (rule_iterator) {
+ while (rule_iterator->HasNext()) {
+ const content_settings::Rule& rule = rule_iterator->Next();
+ if (rule.primary_pattern.Matches(primary_url) &&
+ rule.secondary_pattern.Matches(secondary_url)) {
+ if (primary_pattern)
+ *primary_pattern = rule.primary_pattern;
+ if (secondary_pattern)
+ *secondary_pattern = rule.secondary_pattern;
+ return base::WrapUnique(rule.value.get()->DeepCopy());
+ }
}
}
return std::unique_ptr<base::Value>();
diff --git a/chromium/components/content_settings/core/browser/host_content_settings_map.h b/chromium/components/content_settings/core/browser/host_content_settings_map.h
index 2a958d33b87..29af9c7c669 100644
--- a/chromium/components/content_settings/core/browser/host_content_settings_map.h
+++ b/chromium/components/content_settings/core/browser/host_content_settings_map.h
@@ -210,6 +210,14 @@ class HostContentSettingsMap : public content_settings::Observer,
// This should only be called on the UI thread.
void ClearSettingsForOneType(ContentSettingsType content_type);
+ // If |pattern_predicate| is null, this method is equivalent to the above.
+ // Otherwise, it only deletes exceptions matched by |pattern_predicate|.
+ void ClearSettingsForOneTypeWithPredicate(
+ ContentSettingsType content_type,
+ const base::Callback<bool(
+ const ContentSettingsPattern& primary_pattern,
+ const ContentSettingsPattern& secondary_pattern)>& pattern_predicate);
+
static bool IsDefaultSettingAllowedForType(ContentSetting setting,
ContentSettingsType content_type);
@@ -278,9 +286,27 @@ class HostContentSettingsMap : public content_settings::Observer,
// Passes ownership of |clock|.
void SetPrefClockForTesting(std::unique_ptr<base::Clock> clock);
+ // Migrate old domain scoped ALLOW settings to be origin scoped for
+ // ContentSettingsTypes which are domain scoped. Only narrow down ALLOW
+ // domain settings to origins so that this will not cause privacy/security
+ // issues.
+ //
+ // |after_sync| will be false when called upon construction of this object and
+ // true when called by the sync layer after sync is completed.
+ // TODO(lshang): https://crbug.com/621398 Remove this when clients have
+ // migrated (~M56).
+ void MigrateDomainScopedSettings(bool after_sync);
+
+ base::WeakPtr<HostContentSettingsMap> GetWeakPtr();
+
private:
friend class base::RefCountedThreadSafe<HostContentSettingsMap>;
- friend class HostContentSettingsMapTest_MigrateKeygenSettings_Test;
+
+ FRIEND_TEST_ALL_PREFIXES(HostContentSettingsMapTest,
+ DomainToOriginMigrationStatus);
+ FRIEND_TEST_ALL_PREFIXES(HostContentSettingsMapTest,
+ MigrateDomainScopedSettings);
+ FRIEND_TEST_ALL_PREFIXES(HostContentSettingsMapTest, MigrateKeygenSettings);
friend class content_settings::TestUtils;
@@ -387,6 +413,8 @@ class HostContentSettingsMap : public content_settings::Observer,
base::ObserverList<content_settings::Observer> observers_;
+ base::WeakPtrFactory<HostContentSettingsMap> weak_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(HostContentSettingsMap);
};
diff --git a/chromium/components/content_settings/core/browser/local_shared_objects_counter.h b/chromium/components/content_settings/core/browser/local_shared_objects_counter.h
deleted file mode 100644
index 800b5e39e44..00000000000
--- a/chromium/components/content_settings/core/browser/local_shared_objects_counter.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_LOCAL_SHARED_OBJECTS_COUNTER_H_
-#define COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_LOCAL_SHARED_OBJECTS_COUNTER_H_
-
-#include <stddef.h>
-
-#include "base/macros.h"
-
-class GURL;
-
-// An interface to retrieve counts of browser data objects.
-class LocalSharedObjectsCounter {
- public:
- LocalSharedObjectsCounter() {}
- virtual ~LocalSharedObjectsCounter() {}
-
- virtual size_t GetObjectCount() const = 0;
-
- virtual size_t GetObjectCountForDomain(const GURL& url) const = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(LocalSharedObjectsCounter);
-};
-
-#endif // COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_LOCAL_SHARED_OBJECTS_COUNTER_H_
diff --git a/chromium/components/content_settings/core/browser/plugins_field_trial.cc b/chromium/components/content_settings/core/browser/plugins_field_trial.cc
deleted file mode 100644
index 874002ddbe1..00000000000
--- a/chromium/components/content_settings/core/browser/plugins_field_trial.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/content_settings/core/browser/plugins_field_trial.h"
-
-namespace content_settings {
-
-// static
-ContentSetting PluginsFieldTrial::EffectiveContentSetting(
- ContentSettingsType type,
- ContentSetting setting) {
- if (type != CONTENT_SETTINGS_TYPE_PLUGINS)
- return setting;
-
- // For Plugins, ASK is obsolete. Show as BLOCK to reflect actual behavior.
- if (setting == ContentSetting::CONTENT_SETTING_ASK)
- return ContentSetting::CONTENT_SETTING_BLOCK;
-
- return setting;
-}
-
-} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/plugins_field_trial.h b/chromium/components/content_settings/core/browser/plugins_field_trial.h
deleted file mode 100644
index f486ee09d7a..00000000000
--- a/chromium/components/content_settings/core/browser/plugins_field_trial.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_H_
-#define COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_H_
-
-#include "base/macros.h"
-#include "components/content_settings/core/common/content_settings.h"
-#include "components/content_settings/core/common/content_settings_types.h"
-
-namespace content_settings {
-
-// This class manages the Plugins field trials.
-class PluginsFieldTrial {
- public:
- // Returns the effective content setting for plugins. Passes non-plugin
- // content settings through without modification.
- static ContentSetting EffectiveContentSetting(ContentSettingsType type,
- ContentSetting setting);
-
- private:
- DISALLOW_IMPLICIT_CONSTRUCTORS(PluginsFieldTrial);
-};
-
-} // namespace content_settings
-
-#endif // COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_H_
diff --git a/chromium/components/content_settings/core/browser/website_settings_info.h b/chromium/components/content_settings/core/browser/website_settings_info.h
index 762e32e828c..1f8176ad7b3 100644
--- a/chromium/components/content_settings/core/browser/website_settings_info.h
+++ b/chromium/components/content_settings/core/browser/website_settings_info.h
@@ -27,13 +27,13 @@ class WebsiteSettingsInfo {
enum LossyStatus { LOSSY, NOT_LOSSY };
enum ScopingType {
- // Settings scoped to the domain of the main frame only.
- TOP_LEVEL_DOMAIN_ONLY_SCOPE,
-
// Settings scoped to the domain of the requesting frame only. This should
// not generally be used.
REQUESTING_DOMAIN_ONLY_SCOPE,
+ // Settings scoped to the origin of the main frame only.
+ TOP_LEVEL_ORIGIN_ONLY_SCOPE,
+
// Settings scoped to the origin of the requesting frame only.
REQUESTING_ORIGIN_ONLY_SCOPE,
diff --git a/chromium/components/content_settings/core/browser/website_settings_registry.cc b/chromium/components/content_settings/core/browser/website_settings_registry.cc
index 553a0c72dd4..7fd4f40ab21 100644
--- a/chromium/components/content_settings/core/browser/website_settings_registry.cc
+++ b/chromium/components/content_settings/core/browser/website_settings_registry.cc
@@ -77,13 +77,16 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Register(
#elif defined(OS_ANDROID)
if (!(platform & PLATFORM_ANDROID))
return nullptr;
+ // Don't sync settings to mobile platforms. The UI is different to desktop and
+ // doesn't allow the settings to be managed in the same way. See
+ // crbug.com/642184.
+ sync_status = WebsiteSettingsInfo::UNSYNCABLE;
#elif defined(OS_IOS)
if (!(platform & PLATFORM_IOS))
return nullptr;
- // Only default settings for Cookies and Popups are used in iOS. Exceptions
- // and all the other content setting types are not used in iOS currently. So
- // make content settings unsyncable on iOS for now.
- // TODO(lshang): address this once we have proper content settings on iOS.
+ // Don't sync settings to mobile platforms. The UI is different to desktop and
+ // doesn't allow the settings to be managed in the same way. See
+ // crbug.com/642184.
sync_status = WebsiteSettingsInfo::UNSYNCABLE;
#else
#error "Unsupported platform"
@@ -116,7 +119,7 @@ void WebsiteSettingsRegistry::Init() {
Register(CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE,
"auto-select-certificate", nullptr, WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::NOT_LOSSY,
- WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE, ALL_PLATFORMS,
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
"ssl-cert-decisions", nullptr, WebsiteSettingsInfo::UNSYNCABLE,
@@ -126,7 +129,7 @@ void WebsiteSettingsRegistry::Init() {
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_APP_BANNER, "app-banner", nullptr,
WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY,
- WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
Register(CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, "site-engagement", nullptr,
@@ -139,6 +142,17 @@ void WebsiteSettingsRegistry::Init() {
WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE,
DESKTOP | PLATFORM_ANDROID,
WebsiteSettingsInfo::DONT_INHERIT_IN_INCOGNITO);
+ Register(CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT,
+ "prompt-no-decision-count", nullptr, WebsiteSettingsInfo::UNSYNCABLE,
+ WebsiteSettingsInfo::NOT_LOSSY,
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ DESKTOP | PLATFORM_ANDROID,
+ WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
+ Register(CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO, "important-site-info",
+ nullptr, WebsiteSettingsInfo::UNSYNCABLE, WebsiteSettingsInfo::LOSSY,
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ DESKTOP | PLATFORM_ANDROID,
+ WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
}
} // namespace content_settings
diff --git a/chromium/components/content_settings/core/browser/website_settings_registry_unittest.cc b/chromium/components/content_settings/core/browser/website_settings_registry_unittest.cc
index 223d810774f..aeb0a803c97 100644
--- a/chromium/components/content_settings/core/browser/website_settings_registry_unittest.cc
+++ b/chromium/components/content_settings/core/browser/website_settings_registry_unittest.cc
@@ -50,7 +50,7 @@ TEST_F(WebsiteSettingsRegistryTest, GetByName) {
registry()->Register(static_cast<ContentSettingsType>(10), "test", nullptr,
WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::LOSSY,
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
info = registry()->GetByName("test");
@@ -88,10 +88,10 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) {
// Register a new setting.
registry()->Register(static_cast<ContentSettingsType>(10), "test",
- base::WrapUnique(new base::FundamentalValue(999)),
+ base::MakeUnique<base::FundamentalValue>(999),
WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY,
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
info = registry()->Get(static_cast<ContentSettingsType>(10));
@@ -102,14 +102,14 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) {
int setting;
ASSERT_TRUE(info->initial_default_value()->GetAsInteger(&setting));
EXPECT_EQ(999, setting);
-#if defined(OS_IOS)
+#if defined(OS_ANDROID) || defined(OS_IOS)
EXPECT_EQ(PrefRegistry::LOSSY_PREF, info->GetPrefRegistrationFlags());
#else
EXPECT_EQ(PrefRegistry::LOSSY_PREF |
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF,
info->GetPrefRegistrationFlags());
#endif
- EXPECT_EQ(WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ EXPECT_EQ(WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
info->scoping_type());
EXPECT_EQ(WebsiteSettingsInfo::INHERIT_IN_INCOGNITO,
info->incognito_behavior());
@@ -117,10 +117,10 @@ TEST_F(WebsiteSettingsRegistryTest, Properties) {
TEST_F(WebsiteSettingsRegistryTest, Iteration) {
registry()->Register(static_cast<ContentSettingsType>(10), "test",
- base::WrapUnique(new base::FundamentalValue(999)),
+ base::MakeUnique<base::FundamentalValue>(999),
WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY,
- WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
+ WebsiteSettingsInfo::TOP_LEVEL_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
WebsiteSettingsInfo::INHERIT_IN_INCOGNITO);
diff --git a/chromium/components/content_settings/core/common/content_settings.cc b/chromium/components/content_settings/core/common/content_settings.cc
index e7a8dea8fb8..3a245e0133f 100644
--- a/chromium/components/content_settings/core/common/content_settings.cc
+++ b/chromium/components/content_settings/core/common/content_settings.cc
@@ -41,7 +41,7 @@ ContentSettingsType kHistogramOrder[] = {
CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
CONTENT_SETTINGS_TYPE_MIDI_SYSEX,
- CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
+ CONTENT_SETTINGS_TYPE_DEFAULT, // PUSH_MESSAGING (removed).
CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
CONTENT_SETTINGS_TYPE_DEFAULT, // METRO_SWITCH_TO_DESKTOP (deprecated).
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
@@ -56,6 +56,8 @@ ContentSettingsType kHistogramOrder[] = {
CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD,
CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC,
CONTENT_SETTINGS_TYPE_AUTOPLAY,
+ CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT,
+ CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO,
};
int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting,
@@ -70,7 +72,7 @@ int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting,
}
}
- DCHECK(ContainsKey(kMap, content_setting));
+ DCHECK(base::ContainsKey(kMap, content_setting));
*num_values = arraysize(kHistogramOrder);
return kMap[content_setting];
}
diff --git a/chromium/components/content_settings/core/common/content_settings_pattern.cc b/chromium/components/content_settings/core/common/content_settings_pattern.cc
index 6eeab8bc9a9..c86044ef639 100644
--- a/chromium/components/content_settings/core/common/content_settings_pattern.cc
+++ b/chromium/components/content_settings/core/common/content_settings_pattern.cc
@@ -42,7 +42,7 @@ std::string GetDefaultPort(const std::string& scheme) {
return std::string();
}
-// Returns true if |sub_domain| is a sub domain or equls |domain|. E.g.
+// Returns true if |sub_domain| is a sub domain or equals |domain|. E.g.
// "mail.google.com" is a sub domain of "google.com" but "evilhost.com" is not a
// subdomain of "host.com".
bool IsSubDomainOrEqual(const std::string& sub_domain,
@@ -452,6 +452,60 @@ ContentSettingsPattern ContentSettingsPattern::FromString(
}
// static
+bool ContentSettingsPattern::MigrateFromDomainToOrigin(
+ const ContentSettingsPattern& domain_pattern,
+ ContentSettingsPattern* origin_pattern) {
+ DCHECK(origin_pattern);
+
+ // Generated patterns with ::FromURL (which we want to migrate) must either
+ // have a scheme wildcard or be https.
+ if (domain_pattern.parts_.scheme != url::kHttpsScheme &&
+ !domain_pattern.parts_.is_scheme_wildcard) {
+ return false;
+ }
+
+ // Generated patterns using ::FromURL with the HTTPs scheme can not have a
+ // port wildcard.
+ if (domain_pattern.parts_.is_port_wildcard &&
+ domain_pattern.parts_.scheme == url::kHttpsScheme) {
+ return false;
+ }
+
+ // Patterns generated with ::FromURL will always have a domain wildcard. Those
+ // generated with ::FromURLNoWildcard don't.
+ if (!domain_pattern.parts_.has_domain_wildcard)
+ return false;
+
+ // Generated patterns with ::FromURL will always have a host.
+ if (domain_pattern.parts_.host.empty())
+ return false;
+
+ std::unique_ptr<ContentSettingsPattern::BuilderInterface> builder(
+ ContentSettingsPattern::CreateBuilder(false));
+
+ if (domain_pattern.parts_.is_scheme_wildcard)
+ builder->WithScheme(url::kHttpScheme);
+ else
+ builder->WithScheme(domain_pattern.parts_.scheme);
+
+ builder->WithHost(domain_pattern.parts_.host);
+
+ if (domain_pattern.parts_.is_port_wildcard) {
+ if (domain_pattern.parts_.scheme == url::kHttpsScheme) {
+ builder->WithPort(GetDefaultPort(url::kHttpsScheme));
+ } else {
+ builder->WithPort(GetDefaultPort(url::kHttpScheme));
+ }
+ } else {
+ builder->WithPort(domain_pattern.parts_.port);
+ }
+
+ *origin_pattern = builder->Build();
+
+ return true;
+}
+
+// static
void ContentSettingsPattern::SetNonWildcardDomainNonPortScheme(
const char* scheme) {
DCHECK(scheme);
@@ -560,6 +614,11 @@ ContentSettingsPattern::SchemeType ContentSettingsPattern::GetScheme() const {
return SCHEME_OTHER;
}
+bool ContentSettingsPattern::HasPath() const {
+ DCHECK_EQ(GetScheme(), SCHEME_FILE);
+ return !parts_.is_path_wildcard && !parts_.path.empty();
+}
+
ContentSettingsPattern::Relation ContentSettingsPattern::Compare(
const ContentSettingsPattern& other) const {
// Two invalid patterns are identical in the way they behave. They don't match
diff --git a/chromium/components/content_settings/core/common/content_settings_pattern.h b/chromium/components/content_settings/core/common/content_settings_pattern.h
index d0c59db530e..f0432f59930 100644
--- a/chromium/components/content_settings/core/common/content_settings_pattern.h
+++ b/chromium/components/content_settings/core/common/content_settings_pattern.h
@@ -142,6 +142,7 @@ class ContentSettingsPattern {
// Returns a pattern that matches the scheme and host of this URL, as well as
// all subdomains and ports.
+ // TODO(lshang): Remove this when crbug.com/604612 is done.
static ContentSettingsPattern FromURL(const GURL& url);
// Returns a pattern that matches exactly this URL.
@@ -158,6 +159,13 @@ class ContentSettingsPattern {
// - [a:b:c:d:e:f:g:h] (matches an exact IPv6 ip)
static ContentSettingsPattern FromString(const std::string& pattern_spec);
+ // Migrate domain scoped settings generated using FromURL() to be origin
+ // scoped. Return false if domain_pattern is not generated using FromURL().
+ // TODO(lshang): Remove this when migration is done. https://crbug.com/604612
+ static bool MigrateFromDomainToOrigin(
+ const ContentSettingsPattern& domain_pattern,
+ ContentSettingsPattern* origin_pattern);
+
// Sets the scheme that doesn't support domain wildcard and port.
// Needs to be called by the embedder before using ContentSettingsPattern.
// |scheme| can't be NULL, and the pointed string must remain alive until the
@@ -186,6 +194,10 @@ class ContentSettingsPattern {
// Returns scheme type of pattern.
ContentSettingsPattern::SchemeType GetScheme() const;
+ // True if this pattern has a non-empty path. Can only be used for patterns
+ // with file: schemes.
+ bool HasPath() const;
+
// Compares the pattern with a given |other| pattern and returns the
// |Relation| of the two patterns.
Relation Compare(const ContentSettingsPattern& other) const;
diff --git a/chromium/components/content_settings/core/common/content_settings_pattern_unittest.cc b/chromium/components/content_settings/core/common/content_settings_pattern_unittest.cc
index c8280b8fcfa..c2480858445 100644
--- a/chromium/components/content_settings/core/common/content_settings_pattern_unittest.cc
+++ b/chromium/components/content_settings/core/common/content_settings_pattern_unittest.cc
@@ -721,6 +721,95 @@ TEST(ContentSettingsPatternTest, CanonicalizePattern_Legacy) {
EXPECT_STREQ("", Pattern("\xC4\x87ira.*").ToString().c_str());
}
+TEST(ContentSettingsPatternTest, MigrateFromDomainToOrigin) {
+ ContentSettingsPattern origin_pattern;
+ // Http scheme patterns.
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("http://[*.]example.com"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("http://[*.]example.com:80"),
+ &origin_pattern));
+
+ // Https patterns with port wildcard.
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("https://www.google.com"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("https://[*.]google.com"),
+ &origin_pattern));
+
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("www.google.com"), &origin_pattern));
+
+ // Patterns with no domain wildcard.
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("*://www.google.com:8080"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("www.example.com:8080"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("www.google.com/*"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("google"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("https://www.google.com:443"),
+ &origin_pattern));
+
+ // Patterns with empty host.
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("*"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("[*.]"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("http://*"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("http://*:8080"), &origin_pattern));
+
+ // Other schemes and IP address patterns won't be migrated.
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("192.168.0.1"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("https://127.0.0.1"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("http://[::1]"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("[::1]"), &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("file:///foo/bar.html"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString(
+ "filesystem:http://www.google.com/temporary/"),
+ &origin_pattern));
+ EXPECT_FALSE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString(
+ "chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/"),
+ &origin_pattern));
+
+ // These are pattern styles which might be generated using FromURL().
+ EXPECT_TRUE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("[*.]example.com"), &origin_pattern));
+ EXPECT_EQ("http://example.com:80", origin_pattern.ToString());
+
+ EXPECT_TRUE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("[*.]google.com:80"),
+ &origin_pattern));
+ EXPECT_EQ("http://google.com:80", origin_pattern.ToString());
+
+ EXPECT_TRUE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("[*.]example.com:123"),
+ &origin_pattern));
+ EXPECT_EQ("http://example.com:123", origin_pattern.ToString());
+
+ EXPECT_TRUE(ContentSettingsPattern::MigrateFromDomainToOrigin(
+ ContentSettingsPattern::FromString("https://[*.]google.com:443"),
+ &origin_pattern));
+ EXPECT_EQ("https://google.com:443", origin_pattern.ToString());
+}
+
TEST(ContentSettingsPatternTest, Schemes) {
EXPECT_EQ(ContentSettingsPattern::SCHEME_HTTP,
Pattern("http://www.example.com").GetScheme());
@@ -738,3 +827,10 @@ TEST(ContentSettingsPatternTest, Schemes) {
EXPECT_EQ(ContentSettingsPattern::SCHEME_OTHER,
Pattern("filesystem:http://www.google.com/temporary/").GetScheme());
}
+
+TEST(ContentSettingsPatternTest, FileSchemeHasPath) {
+ EXPECT_FALSE(Pattern("file:///*").HasPath());
+ EXPECT_TRUE(Pattern("file:///foo").HasPath());
+ EXPECT_TRUE(Pattern("file:///foo/bar/").HasPath());
+ EXPECT_TRUE(Pattern("file:///foo/bar/test.html").HasPath());
+} \ No newline at end of file
diff --git a/chromium/components/content_settings/core/common/content_settings_types.h b/chromium/components/content_settings/core/common/content_settings_types.h
index dc8cf6f5b82..724297e4c32 100644
--- a/chromium/components/content_settings/core/common/content_settings_types.h
+++ b/chromium/components/content_settings/core/common/content_settings_types.h
@@ -35,7 +35,6 @@ enum ContentSettingsType {
CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
CONTENT_SETTINGS_TYPE_MIDI_SYSEX,
- CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
CONTENT_SETTINGS_TYPE_APP_BANNER,
@@ -46,6 +45,8 @@ enum ContentSettingsType {
CONTENT_SETTINGS_TYPE_KEYGEN,
CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC,
CONTENT_SETTINGS_TYPE_AUTOPLAY,
+ CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT,
+ CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO,
// WARNING: This enum is going to be removed soon. Do not depend on NUM_TYPES.
CONTENT_SETTINGS_NUM_TYPES_DO_NOT_USE,
diff --git a/chromium/components/content_settings/core/common/pref_names.cc b/chromium/components/content_settings/core/common/pref_names.cc
index ebcf7f0608e..36a7e628b32 100644
--- a/chromium/components/content_settings/core/common/pref_names.cc
+++ b/chromium/components/content_settings/core/common/pref_names.cc
@@ -18,6 +18,12 @@ const char kContentSettingsVersion[] = "profile.content_settings.pref_version";
const char kContentSettingsWindowLastTabIndex[] =
"content_settings_window.last_tab_index";
+// Integer that indicates the status of migrating domain scoped settings to
+// origin scoped settings.
+// TODO(lshang): Remove this when all migration is done. See crbug.com/621398.
+const char kDomainToOriginMigrationStatus[] =
+ "profile.content_settings.domain_to_origin_migration_status";
+
// Preferences that are exclusively used to store managed values for default
// content settings.
const char kManagedDefaultCookiesSetting[] =
diff --git a/chromium/components/content_settings/core/common/pref_names.h b/chromium/components/content_settings/core/common/pref_names.h
index aa1af1cf226..9ddbd4c882d 100644
--- a/chromium/components/content_settings/core/common/pref_names.h
+++ b/chromium/components/content_settings/core/common/pref_names.h
@@ -16,6 +16,7 @@ namespace prefs {
extern const char kBlockThirdPartyCookies[];
extern const char kContentSettingsVersion[];
extern const char kContentSettingsWindowLastTabIndex[];
+extern const char kDomainToOriginMigrationStatus[];
extern const char kManagedDefaultCookiesSetting[];
extern const char kManagedDefaultImagesSetting[];