Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Unified Diff: chrome/browser/resources/settings/privacy_page/privacy_page.js

Issue 2684853003: MD Settings: change how tap is handled on custom toggle rows (Closed)
Patch Set: if the compiler ain't happy, ain't nobody happy Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/settings/privacy_page/privacy_page.js
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.js b/chrome/browser/resources/settings/privacy_page/privacy_page.js
index 8e0c4b029c5ad5253e57388a4c64b732355b14aa..017e38db5f96f78b1a6845c9bf43cd617398e331 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.js
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.js
@@ -31,14 +31,26 @@ Polymer({
pageVisibility: Object,
// <if expr="_google_chrome and not chromeos">
- /** @type {MetricsReporting} */
- metricsReporting_: Object,
+ /** @private {chrome.settingsPrivate.PrefObject} */
+ metricsReportingPref_: {
+ type: Object,
+ value: function() {
+ // TODO(dbeam): this is basically only to appease PrefControlBehavior.
+ // Maybe add a no-validate attribute instead? This makes little sense.
+ return /** @type {chrome.settingsPrivate.PrefObject} */({});
+ },
+ },
showRestart_: Boolean,
// </if>
- /** @private */
- safeBrowsingExtendedReportingEnabled_: Boolean,
+ /** @private {chrome.settingsPrivate.PrefObject} */
+ safeBrowsingExtendedReportingPref_: {
+ type: Object,
+ value: function() {
+ return /** @type {chrome.settingsPrivate.PrefObject} */({});
+ },
+ },
/** @private */
showClearBrowsingDataDialog_: Boolean,
@@ -47,19 +59,19 @@ Polymer({
ready: function() {
this.ContentSettingsTypes = settings.ContentSettingsTypes;
-// <if expr="_google_chrome and not chromeos">
- var boundSetMetricsReporting = this.setMetricsReporting_.bind(this);
- this.addWebUIListener('metrics-reporting-change', boundSetMetricsReporting);
-
var browserProxy = settings.PrivacyPageBrowserProxyImpl.getInstance();
- browserProxy.getMetricsReporting().then(boundSetMetricsReporting);
+
+// <if expr="_google_chrome and not chromeos">
+ var setMetricsReportingPref = this.setMetricsReportingPref_.bind(this);
+ this.addWebUIListener('metrics-reporting-change', setMetricsReportingPref);
+ browserProxy.getMetricsReporting().then(setMetricsReportingPref);
// </if>
- var boundSetSber = this.setSafeBrowsingExtendedReporting_.bind(this);
- this.addWebUIListener('safe-browsing-extended-reporting-change',
- boundSetSber);
- settings.PrivacyPageBrowserProxyImpl.getInstance()
- .getSafeBrowsingExtendedReporting().then(boundSetSber);
+ var setSber = this.setSafeBrowsingExtendedReporting_.bind(this);
+ this.addWebUIListener('safe-browsing-extended-reporting-change', setSber);
+ browserProxy.getSafeBrowsingExtendedReporting().then(setSber);
+
+ this.listen(this, 'iron-change', 'onIronChange_');
dpapad 2017/02/09 19:51:45 I recall an issue we discovered in the past, were
Dan Beam 2017/02/09 20:48:45 that bug talks about settings-*checkbox*, not sett
dpapad 2017/02/09 23:53:02 The related code linked in the bug is inside https
},
/** @protected */
@@ -111,48 +123,75 @@ Polymer({
'https://support.google.com/chrome/?p=settings_manage_exceptions');
},
+ /**
+ * @param {Event} e
+ * @private
+ */
+ onIronChange_: function(e) {
dpapad 2017/02/09 19:51:45 Can we not add dedicated listeners to each button?
Dan Beam 2017/02/09 20:48:45 you can but it doesn't buy much because you still
dpapad 2017/02/09 23:53:02 I am curious. Polymer.dom(e).localTarget gives you
Dan Beam 2017/02/09 23:57:53 because the localTarget is actually the paper-togg
+ if (e.path.indexOf(this.$.safeBrowsingExtendedReportingControl) >= 0) {
+ var browserProxy = settings.PrivacyPageBrowserProxyImpl.getInstance();
dpapad 2017/02/09 19:51:45 Nit: PrivacyPageBrowserProxyImpl.getInstance() is
Dan Beam 2017/02/09 20:48:45 Done.
+ var enabled = this.$.safeBrowsingExtendedReportingControl.checked;
+ browserProxy.setSafeBrowsingExtendedReportingEnabled(enabled);
// <if expr="_google_chrome and not chromeos">
- /** @private */
- onMetricsReportingControlTap_: function() {
- var browserProxy = settings.PrivacyPageBrowserProxyImpl.getInstance();
- var enabled = this.$.metricsReportingControl.checked;
- browserProxy.setMetricsReportingEnabled(enabled);
+ } else if (e.path.indexOf(this.$.metricsReportingControl) >= 0) {
+ var browserProxy = settings.PrivacyPageBrowserProxyImpl.getInstance();
+ var enabled = this.$.metricsReportingControl.checked;
+ browserProxy.setMetricsReportingEnabled(enabled);
+// </if>
+ }
},
+// <if expr="_google_chrome and not chromeos">
/**
* @param {!MetricsReporting} metricsReporting
* @private
*/
- setMetricsReporting_: function(metricsReporting) {
+ setMetricsReportingPref_: function(metricsReporting) {
+ var hadPreviousPref = this.metricsReportingPref_.value !== undefined;
+ var pref = {
+ key: '',
+ type: chrome.settingsPrivate.PrefType.BOOLEAN,
+ value: metricsReporting.enabled,
+ };
+ if (metricsReporting.managed) {
+ pref.enforcement = chrome.settingsPrivate.Enforcement.ENFORCED;
+ pref.controlledBy = chrome.settingsPrivate.ControlledBy.USER_POLICY;
+ }
+
+ this.unlisten(this, 'iron-change', 'onIronChange_');
+ this.metricsReportingPref_ = pref;
+ this.listen(this, 'iron-change', 'onIronChange_');
+
// TODO(dbeam): remember whether metrics reporting was enabled when Chrome
// started.
- if (metricsReporting.managed) {
+ if (metricsReporting.managed)
this.showRestart_ = false;
- } else if (this.metricsReporting_ &&
- metricsReporting.enabled != this.metricsReporting_.enabled) {
+ else if (hadPreviousPref)
this.showRestart_ = true;
- }
- this.metricsReporting_ = metricsReporting;
},
- /** @private */
- onRestartTap_: function() {
+ /**
+ * @param {Event} e
+ * @private
+ */
+ onRestartTap_: function(e) {
+ e.stopPropagation();
settings.LifetimeBrowserProxyImpl.getInstance().restart();
},
// </if>
- /** @private */
- onSafeBrowsingExtendedReportingControlTap_: function() {
- var browserProxy = settings.PrivacyPageBrowserProxyImpl.getInstance();
- var enabled = this.$.safeBrowsingExtendedReportingControl.checked;
- browserProxy.setSafeBrowsingExtendedReportingEnabled(enabled);
- },
-
- /** @param {boolean} enabled Whether reporting is enabled or not.
- * @private
- */
+ /**
+ * @param {boolean} enabled Whether reporting is enabled or not.
+ * @private
+ */
setSafeBrowsingExtendedReporting_: function(enabled) {
- this.safeBrowsingExtendedReportingEnabled_ = enabled;
+ this.unlisten(this, 'iron-change', 'onIronChange_');
dpapad 2017/02/09 19:51:45 This probably needs a comment explaining why are w
Dan Beam 2017/02/09 20:48:45 Done.
+ this.safeBrowsingExtendedReportingPref_ = {
+ key: '',
+ type: chrome.settingsPrivate.PrefType.BOOLEAN,
+ value: enabled,
+ };
+ this.listen(this, 'iron-change', 'onIronChange_');
},
/**

Powered by Google App Engine
This is Rietveld 408576698