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

Side by Side Diff: chrome/browser/resources/shared/js/cr.js

Issue 8341081: Add icon-visibility attribute to cr.ui.Tree. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use simple regex. Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 const cr = (function() { 5 const cr = (function() {
6 6
7 /** 7 /**
8 * Whether we are using a Mac or not. 8 * Whether we are using a Mac or not.
9 * @type {boolean} 9 * @type {boolean}
10 */ 10 */
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 */ 127 */
128 function dispatchPropertyChange(target, propertyName, newValue, oldValue) { 128 function dispatchPropertyChange(target, propertyName, newValue, oldValue) {
129 var e = new CrEvent(propertyName + 'Change'); 129 var e = new CrEvent(propertyName + 'Change');
130 e.propertyName = propertyName; 130 e.propertyName = propertyName;
131 e.newValue = newValue; 131 e.newValue = newValue;
132 e.oldValue = oldValue; 132 e.oldValue = oldValue;
133 target.dispatchEvent(e); 133 target.dispatchEvent(e);
134 } 134 }
135 135
136 /** 136 /**
137 * Converts a camelCase javascript property name to a hyphenated-lower-case
138 * attribute name.
139 * @param {string} jsName The javascript camelCase property name.
140 * @return {string} The equivalent hyphenated-lower-case attribute name.
141 */
142 function getAttributeName(jsName) {
143 return jsName.replace(/([A-Z])/g, '-$1').toLowerCase();
144 }
145
146 /**
137 * The kind of property to define in {@code defineProperty}. 147 * The kind of property to define in {@code defineProperty}.
138 * @enum {number} 148 * @enum {number}
139 */ 149 */
140 const PropertyKind = { 150 const PropertyKind = {
141 /** 151 /**
142 * Plain old JS property where the backing data is stored as a "private" 152 * Plain old JS property where the backing data is stored as a "private"
143 * field on the object. 153 * field on the object.
144 */ 154 */
145 JS: 'js', 155 JS: 'js',
146 156
(...skipping 17 matching lines...) Expand all
164 * @return {function():*} The getter for the property. 174 * @return {function():*} The getter for the property.
165 */ 175 */
166 function getGetter(name, kind) { 176 function getGetter(name, kind) {
167 switch (kind) { 177 switch (kind) {
168 case PropertyKind.JS: 178 case PropertyKind.JS:
169 var privateName = name + '_'; 179 var privateName = name + '_';
170 return function() { 180 return function() {
171 return this[privateName]; 181 return this[privateName];
172 }; 182 };
173 case PropertyKind.ATTR: 183 case PropertyKind.ATTR:
184 var attributeName = getAttributeName(name);
174 return function() { 185 return function() {
175 return this.getAttribute(name); 186 return this.getAttribute(attributeName);
176 }; 187 };
177 case PropertyKind.BOOL_ATTR: 188 case PropertyKind.BOOL_ATTR:
189 var attributeName = getAttributeName(name);
178 return function() { 190 return function() {
179 return this.hasAttribute(name); 191 return this.hasAttribute(attributeName);
180 }; 192 };
181 } 193 }
182 } 194 }
183 195
184 /** 196 /**
185 * Helper function for defineProperty that returns the setter of the right 197 * Helper function for defineProperty that returns the setter of the right
186 * kind. 198 * kind.
187 * @param {string} name The name of the property we are defining the setter 199 * @param {string} name The name of the property we are defining the setter
188 * for. 200 * for.
189 * @param {cr.PropertyKind} kind The kind of property we are getting the 201 * @param {cr.PropertyKind} kind The kind of property we are getting the
(...skipping 10 matching lines...) Expand all
200 var oldValue = this[privateName]; 212 var oldValue = this[privateName];
201 if (value !== oldValue) { 213 if (value !== oldValue) {
202 this[privateName] = value; 214 this[privateName] = value;
203 if (opt_setHook) 215 if (opt_setHook)
204 opt_setHook.call(this, value, oldValue); 216 opt_setHook.call(this, value, oldValue);
205 dispatchPropertyChange(this, name, value, oldValue); 217 dispatchPropertyChange(this, name, value, oldValue);
206 } 218 }
207 }; 219 };
208 220
209 case PropertyKind.ATTR: 221 case PropertyKind.ATTR:
222 var attributeName = getAttributeName(name);
210 return function(value) { 223 return function(value) {
211 var oldValue = this[name]; 224 var oldValue = this[attributeName];
212 if (value !== oldValue) { 225 if (value !== oldValue) {
213 if (value == undefined) 226 if (value == undefined)
214 this.removeAttribute(name); 227 this.removeAttribute(attributeName);
215 else 228 else
216 this.setAttribute(name, value); 229 this.setAttribute(attributeName, value);
217 if (opt_setHook) 230 if (opt_setHook)
218 opt_setHook.call(this, value, oldValue); 231 opt_setHook.call(this, value, oldValue);
219 dispatchPropertyChange(this, name, value, oldValue); 232 dispatchPropertyChange(this, name, value, oldValue);
220 } 233 }
221 }; 234 };
222 235
223 case PropertyKind.BOOL_ATTR: 236 case PropertyKind.BOOL_ATTR:
237 var attributeName = getAttributeName(name);
224 return function(value) { 238 return function(value) {
225 var oldValue = this[name]; 239 var oldValue = this[attributeName];
226 if (value !== oldValue) { 240 if (value !== oldValue) {
227 if (value) 241 if (value)
228 this.setAttribute(name, name); 242 this.setAttribute(attributeName, name);
229 else 243 else
230 this.removeAttribute(name); 244 this.removeAttribute(attributeName);
231 if (opt_setHook) 245 if (opt_setHook)
232 opt_setHook.call(this, value, oldValue); 246 opt_setHook.call(this, value, oldValue);
233 dispatchPropertyChange(this, name, value, oldValue); 247 dispatchPropertyChange(this, name, value, oldValue);
234 } 248 }
235 }; 249 };
236 } 250 }
237 } 251 }
238 252
239 /** 253 /**
240 * Defines a property on an object. When the setter changes the value a 254 * Defines a property on an object. When the setter changes the value a
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 * The document that we are currently using. 386 * The document that we are currently using.
373 * @type {!Document} 387 * @type {!Document}
374 */ 388 */
375 get doc() { 389 get doc() {
376 return doc; 390 return doc;
377 }, 391 },
378 withDoc: withDoc, 392 withDoc: withDoc,
379 Event: CrEvent 393 Event: CrEvent
380 }; 394 };
381 })(); 395 })();
OLDNEW
« no previous file with comments | « chrome/browser/resources/shared/css/tree.css ('k') | chrome/browser/resources/shared/js/cr/ui/tree.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698