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

Unified Diff: chrome/browser/resources/options/pref_ui.js

Issue 393023006: Add settings for keyboard auto-repeat to options page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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/options/pref_ui.js
diff --git a/chrome/browser/resources/options/pref_ui.js b/chrome/browser/resources/options/pref_ui.js
index d8ea25649857e754ef16d7b12806f72a421fd232..98152ee15114d43318bb478a27841174c84286a1 100644
--- a/chrome/browser/resources/options/pref_ui.js
+++ b/chrome/browser/resources/options/pref_ui.js
@@ -81,12 +81,14 @@ cr.define('options', function() {
},
/**
- * Update the input element's state when the associated pref changes.
+ * Handles changes to the pref. If a custom change handler does not suppress
+ * it, a default handler is invoked that update the input element's state.
* @param {Event} event Pref change event.
* @private
*/
updateStateFromPref_: function(event) {
- this.value = event.value.value;
+ if (!this.customPrefChangeHandler(event))
+ this.value = event.value.value;
},
/**
@@ -107,6 +109,17 @@ cr.define('options', function() {
customChangeHandler: function(event) {
return false;
},
+
+ /**
+ * Custom change handler that is invoked first when the preference
+ * associated with the input element changes. If it returns false, a default
+ * handler is invoked next that updates the input element. If it returns
+ * true, the default handler is suppressed.
+ * @param {Event} event Input element change event.
+ */
+ customPrefChangeHandler: function(event) {
+ return false;
+ },
};
/**
@@ -184,6 +197,8 @@ cr.define('options', function() {
* @private
*/
updateStateFromPref_: function(event) {
+ if (this.customPrefChangeHandler(event))
+ return;
var value = Boolean(event.value.value);
this.checked = this.inverted_pref ? !value : value;
},
@@ -264,7 +279,8 @@ cr.define('options', function() {
* @private
*/
updateStateFromPref_: function(event) {
- this.checked = this.value == String(event.value.value);
+ if (!this.customPrefChangeHandler(event))
+ this.checked = this.value == String(event.value.value);
},
};
@@ -330,11 +346,15 @@ cr.define('options', function() {
},
/**
- * Update the slider position when the associated pref changes.
+ * Handles changes to the pref associated with the slider. If a custom
+ * change handler does not suppress it, a default handler is invoked that
+ * updates the slider position.
* @param {Event} event Pref change event.
* @private
*/
updateStateFromPref_: function(event) {
+ if (this.customPrefChangeHandler(event))
+ return;
var value = event.value.value;
this.value = this.valueMap ? this.valueMap.indexOf(value) : value;
},
@@ -394,6 +414,9 @@ cr.define('options', function() {
* @private
*/
updateStateFromPref_: function(event) {
+ if (this.customPrefChangeHandler(event))
+ return;
+
// Make sure the value is a string, because the value is stored as a
// string in the HTMLOptionElement.
value = String(event.value.value);

Powered by Google App Engine
This is Rietveld 408576698