Commit cce1b27b authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Display cookie blocking toggle as extension controlled

Display an extension icon if third-party cookie blocking is controlled
through an extension.

Also use a link to the new cookie settings UI if the privacy settings
redesign is enabled.

Bug: 1065392
Change-Id: I1917908a24dfe6ca711d85960689b1328fafdb16
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2128489
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarElly Fong-Jones <ellyjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#755175}
parent 5ab5d943
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
// found in the LICENSE file. // found in the LICENSE file.
window.addEventListener('load', function() { window.addEventListener('load', function() {
let cookieSettingsUrl;
cr.addWebUIListener('theme-changed', themeData => { cr.addWebUIListener('theme-changed', themeData => {
document.documentElement.setAttribute( document.documentElement.setAttribute(
'hascustombackground', themeData.hasCustomBackground); 'hascustombackground', themeData.hasCustomBackground);
...@@ -16,6 +18,7 @@ window.addEventListener('load', function() { ...@@ -16,6 +18,7 @@ window.addEventListener('load', function() {
$('cookie-controls-tooltip-icon').iconClass = dict.icon; $('cookie-controls-tooltip-icon').iconClass = dict.icon;
$('cookie-controls-toggle').disabled = dict.enforced; $('cookie-controls-toggle').disabled = dict.enforced;
$('cookie-controls-toggle').checked = dict.checked; $('cookie-controls-toggle').checked = dict.checked;
cookieSettingsUrl = dict.cookieSettingsUrl;
}); });
$('cookie-controls-toggle').addEventListener('change', event => { $('cookie-controls-toggle').addEventListener('change', event => {
chrome.send('cookieControlsToggleChanged', [event.detail]); chrome.send('cookieControlsToggleChanged', [event.detail]);
...@@ -27,7 +30,7 @@ window.addEventListener('load', function() { ...@@ -27,7 +30,7 @@ window.addEventListener('load', function() {
} }
}); });
$('cookie-controls-tooltip-icon').onclick = () => { $('cookie-controls-tooltip-icon').onclick = () => {
window.location.href = 'chrome://settings/content/cookies'; window.location.href = cookieSettingsUrl;
}; };
chrome.send('observeCookieControlsSettingsChanges'); chrome.send('observeCookieControlsSettingsChanges');
}); });
......
...@@ -51,6 +51,8 @@ std::ostream& operator<<(std::ostream& os, ...@@ -51,6 +51,8 @@ std::ostream& operator<<(std::ostream& os,
return os << "kNoEnforcement"; return os << "kNoEnforcement";
case CookieControlsEnforcement::kEnforcedByCookieSetting: case CookieControlsEnforcement::kEnforcedByCookieSetting:
return os << "kEnforcedByCookieSetting"; return os << "kEnforcedByCookieSetting";
case CookieControlsEnforcement::kEnforcedByExtension:
return os << "kEnforcedByExtension";
case CookieControlsEnforcement::kEnforcedByPolicy: case CookieControlsEnforcement::kEnforcedByPolicy:
return os << "kEnforcedByPolicy"; return os << "kEnforcedByPolicy";
} }
......
...@@ -77,8 +77,11 @@ bool CookieControlsService::ShouldEnforceCookieControls() { ...@@ -77,8 +77,11 @@ bool CookieControlsService::ShouldEnforceCookieControls() {
CookieControlsEnforcement CookieControlsEnforcement
CookieControlsService::GetCookieControlsEnforcement() { CookieControlsService::GetCookieControlsEnforcement() {
if (profile_->GetPrefs()->IsManagedPreference(prefs::kBlockThirdPartyCookies)) auto* pref = profile_->GetPrefs()->FindPreference(prefs::kCookieControlsMode);
if (pref->IsManaged())
return CookieControlsEnforcement::kEnforcedByPolicy; return CookieControlsEnforcement::kEnforcedByPolicy;
if (pref->IsExtensionControlled())
return CookieControlsEnforcement::kEnforcedByExtension;
if (profile_->GetPrefs()->GetBoolean(prefs::kBlockThirdPartyCookies)) if (profile_->GetPrefs()->GetBoolean(prefs::kBlockThirdPartyCookies))
return CookieControlsEnforcement::kEnforcedByCookieSetting; return CookieControlsEnforcement::kEnforcedByCookieSetting;
return CookieControlsEnforcement::kNoEnforcement; return CookieControlsEnforcement::kNoEnforcement;
......
...@@ -28,7 +28,8 @@ class PolicyChangeRegistrar; ...@@ -28,7 +28,8 @@ class PolicyChangeRegistrar;
enum class CookieControlsEnforcement { enum class CookieControlsEnforcement {
kNoEnforcement = 0, kNoEnforcement = 0,
kEnforcedByPolicy = 1, kEnforcedByPolicy = 1,
kEnforcedByCookieSetting = 2, kEnforcedByExtension = 2,
kEnforcedByCookieSetting = 3,
kMaxValue = kEnforcedByCookieSetting, kMaxValue = kEnforcedByCookieSetting,
}; };
......
...@@ -7,14 +7,17 @@ ...@@ -7,14 +7,17 @@
#include <utility> #include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/feature_list.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/cookie_controls/cookie_controls_service.h" #include "chrome/browser/ui/cookie_controls/cookie_controls_service.h"
#include "chrome/browser/ui/cookie_controls/cookie_controls_service_factory.h" #include "chrome/browser/ui/cookie_controls/cookie_controls_service_factory.h"
#include "chrome/common/chrome_features.h"
namespace { namespace {
static const char* kSettingsIcon = "cr:settings_icon";
static const char* kPolicyIcon = "cr20:domain"; static const char* kPolicyIcon = "cr20:domain";
static const char* kExtensionIcon = "cr:extension";
static const char* kSettingsIcon = "cr:settings_icon";
} // namespace } // namespace
CookieControlsHandler::CookieControlsHandler(Profile* profile) CookieControlsHandler::CookieControlsHandler(Profile* profile)
...@@ -55,7 +58,7 @@ void CookieControlsHandler::HandleCookieControlsToggleChanged( ...@@ -55,7 +58,7 @@ void CookieControlsHandler::HandleCookieControlsToggleChanged(
void CookieControlsHandler::HandleObserveCookieControlsSettingsChanges( void CookieControlsHandler::HandleObserveCookieControlsSettingsChanges(
const base::ListValue* args) { const base::ListValue* args) {
AllowJavascript(); AllowJavascript();
OnThirdPartyCookieBlockingPrefChanged(); SendCookieControlsUIChanges();
} }
const char* CookieControlsHandler::GetEnforcementIcon(Profile* profile) { const char* CookieControlsHandler::GetEnforcementIcon(Profile* profile) {
...@@ -64,6 +67,8 @@ const char* CookieControlsHandler::GetEnforcementIcon(Profile* profile) { ...@@ -64,6 +67,8 @@ const char* CookieControlsHandler::GetEnforcementIcon(Profile* profile) {
switch (service->GetCookieControlsEnforcement()) { switch (service->GetCookieControlsEnforcement()) {
case CookieControlsEnforcement::kEnforcedByPolicy: case CookieControlsEnforcement::kEnforcedByPolicy:
return kPolicyIcon; return kPolicyIcon;
case CookieControlsEnforcement::kEnforcedByExtension:
return kExtensionIcon;
case CookieControlsEnforcement::kEnforcedByCookieSetting: case CookieControlsEnforcement::kEnforcedByCookieSetting:
return kSettingsIcon; return kSettingsIcon;
case CookieControlsEnforcement::kNoEnforcement: case CookieControlsEnforcement::kNoEnforcement:
...@@ -85,5 +90,10 @@ void CookieControlsHandler::SendCookieControlsUIChanges() { ...@@ -85,5 +90,10 @@ void CookieControlsHandler::SendCookieControlsUIChanges() {
dict.SetBoolKey("enforced", service_->ShouldEnforceCookieControls()); dict.SetBoolKey("enforced", service_->ShouldEnforceCookieControls());
dict.SetBoolKey("checked", service_->GetToggleCheckedValue()); dict.SetBoolKey("checked", service_->GetToggleCheckedValue());
dict.SetStringKey("icon", CookieControlsHandler::GetEnforcementIcon(profile)); dict.SetStringKey("icon", CookieControlsHandler::GetEnforcementIcon(profile));
bool use_new_cookie_page =
base::FeatureList::IsEnabled(features::kPrivacySettingsRedesign);
dict.SetString("cookieSettingsUrl",
use_new_cookie_page ? "chrome://settings/cookies"
: "chrome://settings/content/cookies");
FireWebUIListener("cookie-controls-changed", dict); FireWebUIListener("cookie-controls-changed", dict);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment