Index: chrome/browser/resources/settings/checkbox/checkbox.js |
diff --git a/chrome/browser/resources/settings/checkbox/checkbox.js b/chrome/browser/resources/settings/checkbox/checkbox.js |
index 6e0860cf00b7b85554b4f9d0faabd3654c8daf14..40d9fde0632ede8fe6e5bf8171671c083dfc4bcf 100644 |
--- a/chrome/browser/resources/settings/checkbox/checkbox.js |
+++ b/chrome/browser/resources/settings/checkbox/checkbox.js |
@@ -23,7 +23,18 @@ Polymer({ |
*/ |
pref: { |
type: Object, |
- notify: true, |
+ notify: true |
+ }, |
+ |
+ inverted: { |
+ type: Boolean, |
+ value: false |
+ }, |
+ |
+ checked: { |
+ type: Boolean, |
+ value: false, |
+ observer: 'checkedChanged_' |
}, |
label: { |
@@ -37,8 +48,32 @@ Polymer({ |
}, |
}, |
+ observers: [ |
+ 'prefValueChanged_(pref.value)' |
+ ], |
+ |
/** @override */ |
ready: function() { |
this.$.events.forward(this.$.checkbox, ['change']); |
}, |
+ |
+ /** @private */ |
+ prefValueChanged_: function(prefValue) { |
+ // prefValue is initially undefined when Polymer initializes pref. |
+ if (prefValue !== undefined) { |
+ this.checked = this.getNewValue_(prefValue); |
+ } |
+ }, |
+ |
+ /** @private */ |
+ checkedChanged_: function() { |
+ if (this.pref) { |
+ this.pref.value = this.getNewValue_(this.checked); |
+ } |
+ }, |
+ |
+ /** @private */ |
+ getNewValue_: function(val) { |
+ return this.inverted ? !val : val; |
+ } |
}); |