| Index: chrome/browser/resources/shared/js/cr.js
|
| diff --git a/chrome/browser/resources/shared/js/cr.js b/chrome/browser/resources/shared/js/cr.js
|
| index 90df206f7d9a5c3404558fb188d6edab66dc24b4..93c83b2e0d69be0434c8fbf8875afcad20428ae1 100644
|
| --- a/chrome/browser/resources/shared/js/cr.js
|
| +++ b/chrome/browser/resources/shared/js/cr.js
|
| @@ -130,11 +130,9 @@ const cr = (function() {
|
| * property.
|
| * @param {string} name
|
| * @param {cr.PropertyKind} kind
|
| - * @param {*} defaultValue The default value. This is only used for the ATTR
|
| - * kind.
|
| * @return {function():*} The getter for the property.
|
| */
|
| - function getGetter(name, kind, defaultValue) {
|
| + function getGetter(name, kind) {
|
| switch (kind) {
|
| case PropertyKind.JS:
|
| var privateName = name + '_';
|
| @@ -142,21 +140,10 @@ const cr = (function() {
|
| return this[privateName];
|
| };
|
| case PropertyKind.ATTR:
|
| - // For attr with default value we return the default value if the
|
| - // element is missing the attribute.
|
| - if (defaultValue == undefined) {
|
| - return function() {
|
| - return this.getAttribute(name);
|
| - };
|
| - } else {
|
| - return function() {
|
| - // WebKit uses null for non existant attributes.
|
| - var value = this.getAttribute(name);
|
| - return value !== null ? value : defaultValue;
|
| - };
|
| - }
|
| + return function() {
|
| + return this.getAttribute(name);
|
| + };
|
| case PropertyKind.BOOL_ATTR:
|
| - // Boolean attributes don't support default values.
|
| return function() {
|
| return this.hasAttribute(name);
|
| };
|
| @@ -170,9 +157,11 @@ const cr = (function() {
|
| * for.
|
| * @param {cr.PropertyKind} kind The kind of property we are getting the
|
| * setter for.
|
| + * @param {function(*):void} opt_setHook A function to run after the property
|
| + * is set, but before the propertyChange event is fired.
|
| * @return {function(*):void} The function to use as a setter.
|
| */
|
| - function getSetter(name, kind) {
|
| + function getSetter(name, kind, opt_setHook) {
|
| switch (kind) {
|
| case PropertyKind.JS:
|
| var privateName = name + '_';
|
| @@ -180,6 +169,8 @@ const cr = (function() {
|
| var oldValue = this[privateName];
|
| if (value !== oldValue) {
|
| this[privateName] = value;
|
| + if (opt_setHook)
|
| + opt_setHook.call(this, value, oldValue);
|
| dispatchPropertyChange(this, name, value, oldValue);
|
| }
|
| };
|
| @@ -189,6 +180,8 @@ const cr = (function() {
|
| var oldValue = this[name];
|
| if (value !== oldValue) {
|
| this.setAttribute(name, value);
|
| + if (opt_setHook)
|
| + opt_setHook.call(this, value, oldValue);
|
| dispatchPropertyChange(this, name, value, oldValue);
|
| }
|
| };
|
| @@ -201,6 +194,8 @@ const cr = (function() {
|
| this.setAttribute(name, name);
|
| else
|
| this.removeAttribute(name);
|
| + if (opt_setHook)
|
| + opt_setHook.call(this, value, oldValue);
|
| dispatchPropertyChange(this, name, value, oldValue);
|
| }
|
| };
|
| @@ -213,25 +208,21 @@ const cr = (function() {
|
| * @param {!Object} obj The object to define the property for.
|
| * @param {string} name The name of the property.
|
| * @param {cr.PropertyKind=} opt_kind What kind of underlying storage to use.
|
| - * @param {*} opt_default The default value.
|
| + * @param {function(*):void} opt_setHook A function to run after the
|
| + * property is set, but before the propertyChange event is fired.
|
| */
|
| - function defineProperty(obj, name, opt_kind, opt_default) {
|
| + function defineProperty(obj, name, opt_kind, opt_setHook) {
|
| if (typeof obj == 'function')
|
| obj = obj.prototype;
|
|
|
| var kind = opt_kind || PropertyKind.JS;
|
|
|
| if (!obj.__lookupGetter__(name)) {
|
| - // For js properties we set the default value on the prototype.
|
| - if (kind == PropertyKind.JS && arguments.length > 3) {
|
| - var privateName = name + '_';
|
| - obj[privateName] = opt_default;
|
| - }
|
| - obj.__defineGetter__(name, getGetter(name, kind, opt_default));
|
| + obj.__defineGetter__(name, getGetter(name, kind));
|
| }
|
|
|
| if (!obj.__lookupSetter__(name)) {
|
| - obj.__defineSetter__(name, getSetter(name, kind));
|
| + obj.__defineSetter__(name, getSetter(name, kind, opt_setHook));
|
| }
|
| }
|
|
|
|
|