Chromium Code Reviews| 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_'); |
| }, |
| /** |