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

Unified Diff: chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js

Issue 2692213005: Reland: MD Settings: Fix the Network Prediction toggle box. (Closed)
Patch Set: Address comments 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
« no previous file with comments | « no previous file | chrome/browser/resources/settings/controls/settings_checkbox.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js
diff --git a/chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js b/chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js
index 248397e3f782e6efefb3e63c957bd43b129c1bc5..85614f97ac4030767af0eda69036eac424ff9c37 100644
--- a/chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js
+++ b/chrome/browser/resources/settings/controls/settings_boolean_control_behavior.js
@@ -22,7 +22,6 @@ var SettingsBooleanControlBehaviorImpl = {
type: Boolean,
value: false,
notify: true,
- observer: 'checkedChanged_',
reflectToAttribute: true,
},
@@ -55,6 +54,18 @@ var SettingsBooleanControlBehaviorImpl = {
type: String,
value: '',
},
+
+ /**
+ * For numeric prefs only, the integer value equivalent to the unchecked
+ * state. This is the value sent to prefs if the user unchecks the control.
+ * During initialization, the control is unchecked if and only if the pref
+ * value is equal to the this value. (Values 2, 3, 4, etc. all are checked.)
+ */
+ numericUncheckedValue: {
+ type: Number,
+ readOnly: true,
+ value: 0,
+ }
},
observers: [
@@ -63,6 +74,10 @@ var SettingsBooleanControlBehaviorImpl = {
notifyChangedByUserInteraction: function() {
this.fire('settings-boolean-control-change');
+
+ if (!this.pref || this.noSetPref)
+ return;
+ this.sendPrefChange();
},
/** Reset the checked state to match the current pref value. */
@@ -72,14 +87,13 @@ var SettingsBooleanControlBehaviorImpl = {
/** Update the pref to the current |checked| value. */
sendPrefChange: function() {
- /** @type {boolean} */ var newValue = this.getNewValue_(this.checked);
// Ensure that newValue is the correct type for the pref type, either
// a boolean or a number.
if (this.pref.type == chrome.settingsPrivate.PrefType.NUMBER) {
- this.set('pref.value', newValue ? 1 : 0);
+ this.set('pref.value', this.checked ? 1 : this.numericUncheckedValue);
return;
}
- this.set('pref.value', newValue);
+ this.set('pref.value', this.checked);
},
/**
@@ -92,21 +106,16 @@ var SettingsBooleanControlBehaviorImpl = {
},
/**
- * Polymer observer for checked.
- * @private
- */
- checkedChanged_: function() {
- if (!this.pref || this.noSetPref)
- return;
- this.sendPrefChange();
- },
-
- /**
* @param {*} value
* @return {boolean} The value as a boolean, inverted if |inverted| is true.
* @private
*/
getNewValue_: function(value) {
+ // For numeric prefs, the control is only false if the value is exactly
+ // equal to the unchecked-equivalent value.
+ if (this.pref.type == chrome.settingsPrivate.PrefType.NUMBER)
+ value = value != this.numericUncheckedValue;
+
return this.inverted ? !value : !!value;
},
« no previous file with comments | « no previous file | chrome/browser/resources/settings/controls/settings_checkbox.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698