From d056a21b34871b5e43ed07e829726fcf586ffd7e Mon Sep 17 00:00:00 2001 From: Brian Clifton Date: Mon, 9 Dec 2019 14:12:18 -0700 Subject: [PATCH] Add listener for brave://settings/privacy to ensure P3A enabled value is in sync For example, if you had two windows with brave://settings/privacy open Fixes https://github.com/brave/brave-browser/issues/7289 This is something I missed while implementing https://github.com/brave/brave-core/pull/3242 --- .../brave_personalization_options.js | 3 +++ browser/ui/webui/settings/brave_privacy_handler.cc | 13 +++++++++++++ browser/ui/webui/settings/brave_privacy_handler.h | 1 + 3 files changed, 17 insertions(+) diff --git a/browser/resources/settings/brave_privacy_page/brave_personalization_options.js b/browser/resources/settings/brave_privacy_page/brave_personalization_options.js index 591799e23aee..05be5caf99b2 100644 --- a/browser/resources/settings/brave_privacy_page/brave_personalization_options.js +++ b/browser/resources/settings/brave_privacy_page/brave_personalization_options.js @@ -57,6 +57,9 @@ Polymer({ this.addWebUIListener('remote-debugging-enabled-changed', (enabled) => { this.remoteDebuggingEnabled_ = enabled }) + this.addWebUIListener('p3a-enabled-changed', (enabled) => { + this.p3aEnabled_ = enabled + }) }, /** diff --git a/browser/ui/webui/settings/brave_privacy_handler.cc b/browser/ui/webui/settings/brave_privacy_handler.cc index 2f74a813619d..49693ec4da1e 100644 --- a/browser/ui/webui/settings/brave_privacy_handler.cc +++ b/browser/ui/webui/settings/brave_privacy_handler.cc @@ -30,6 +30,10 @@ BravePrivacyHandler::BravePrivacyHandler() { kRemoteDebuggingEnabled, base::Bind(&BravePrivacyHandler::OnRemoteDebuggingEnabledChanged, base::Unretained(this))); + local_state_change_registrar_.Add( + brave::kP3AEnabled, + base::Bind(&BravePrivacyHandler::OnP3AEnabledChanged, + base::Unretained(this))); } BravePrivacyHandler::~BravePrivacyHandler() { @@ -119,6 +123,15 @@ void BravePrivacyHandler::GetP3AEnabled(const base::ListValue* args) { ResolveJavascriptCallback(args->GetList()[0].Clone(), base::Value(enabled)); } +void BravePrivacyHandler::OnP3AEnabledChanged() { + if (IsJavascriptAllowed()) { + PrefService* local_state = g_browser_process->local_state(); + bool enabled = local_state->GetBoolean(brave::kP3AEnabled); + + FireWebUIListener("p3a-enabled-changed", base::Value(enabled)); + } +} + void BravePrivacyHandler::SetRemoteDebuggingEnabled( const base::ListValue* args) { CHECK_EQ(args->GetSize(), 1U); diff --git a/browser/ui/webui/settings/brave_privacy_handler.h b/browser/ui/webui/settings/brave_privacy_handler.h index 9376f6ad7934..c148d52523b2 100644 --- a/browser/ui/webui/settings/brave_privacy_handler.h +++ b/browser/ui/webui/settings/brave_privacy_handler.h @@ -33,6 +33,7 @@ class BravePrivacyHandler : public settings::SettingsPageUIHandler { void SetP3AEnabled(const base::ListValue* args); void GetP3AEnabled(const base::ListValue* args); + void OnP3AEnabledChanged(); void SetRemoteDebuggingEnabled(const base::ListValue* args); void GetRemoteDebuggingEnabled(const base::ListValue* args);