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

Side by Side Diff: chrome/browser/resources/options/pref_ui.js

Issue 1061263004: Fixes wrong inheritance of PrefSelect. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 cr.define('options', function() { 5 cr.define('options', function() {
6 var Preferences = options.Preferences; 6 var Preferences = options.Preferences;
7 7
8 /** 8 /**
9 * Allows an element to be disabled for several reasons. 9 * Allows an element to be disabled for several reasons.
10 * The element is disabled if at least one reason is true, and the reasons 10 * The element is disabled if at least one reason is true, and the reasons
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 }; 383 };
384 384
385 ///////////////////////////////////////////////////////////////////////////// 385 /////////////////////////////////////////////////////////////////////////////
386 // PrefSelect class: 386 // PrefSelect class:
387 387
388 // Define a constructor that uses a select element as its underlying element. 388 // Define a constructor that uses a select element as its underlying element.
389 var PrefSelect = cr.ui.define('select'); 389 var PrefSelect = cr.ui.define('select');
390 390
391 PrefSelect.prototype = { 391 PrefSelect.prototype = {
392 // Set up the prototype chain 392 // Set up the prototype chain
393 __proto__: PrefInputElement.prototype, 393 __proto__: HTMLSelectElement.prototype,
Dan Beam 2015/04/20 15:06:26 keep in mind that settings is being rewritten acti
arv (Not doing code reviews) 2015/04/24 14:22:45 With ES6 you can do traits. function PrefTrait(su
Yuki 2015/04/27 09:22:38 Looks cool to me. I defer this re-design task to
394
395 /**
396 * Initialization function for the cr.ui framework.
397 */
398 decorate: PrefInputElement.prototype.decorate,
399
400 /**
401 * Handle changes to the input element's state made by the user. If a custom
402 * change handler does not suppress it, a default handler is invoked that
403 * updates the associated pref.
404 * @param {Event} event Change event.
405 * @protected
406 */
407 handleChange: PrefInputElement.prototype.handleChange,
394 408
395 /** 409 /**
396 * Update the associated pref when when the user selects an item. 410 * Update the associated pref when when the user selects an item.
397 * @override 411 * @override
398 */ 412 */
399 updatePrefFromState: function() { 413 updatePrefFromState: function() {
400 var value = this.options[this.selectedIndex].value; 414 var value = this.options[this.selectedIndex].value;
401 switch (this.dataType) { 415 switch (this.dataType) {
402 case 'number': 416 case 'number':
403 Preferences.setIntegerPref(this.pref, value, 417 Preferences.setIntegerPref(this.pref, value,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 if (!found) 456 if (!found)
443 this.selectedIndex = 0; 457 this.selectedIndex = 0;
444 458
445 // The "onchange" event automatically fires when the user makes a manual 459 // The "onchange" event automatically fires when the user makes a manual
446 // change. It should never be fired for a programmatic change. However, 460 // change. It should never be fired for a programmatic change. However,
447 // these two lines were here already and it is hard to tell who may be 461 // these two lines were here already and it is hard to tell who may be
448 // relying on them. 462 // relying on them.
449 if (this.onchange) 463 if (this.onchange)
450 this.onchange(event); 464 this.onchange(event);
451 }, 465 },
466
467 /**
468 * See |updateDisabledState| above.
469 */
470 setDisabled: PrefInputElement.prototype.setDisabled,
471
472 /**
473 * Custom change handler that is invoked first when the user makes changes
arv (Not doing code reviews) 2015/04/24 14:22:45 Are these comments just copied from PrefInputEleme
Dan Beam 2015/04/24 21:48:29 or [just] @override
Yuki 2015/04/27 09:22:38 Done.
474 * to the input element's state. If it returns false, a default handler is
475 * invoked next that updates the associated pref. If it returns true, the
476 * default handler is suppressed (i.e., this works like stopPropagation or
477 * cancelBubble).
478 * @param {Event} event Input element change event.
479 */
480 customChangeHandler: PrefInputElement.prototype.customChangeHandler,
481
482 /**
483 * Custom change handler that is invoked first when the preference
484 * associated with the input element changes. If it returns false, a default
485 * handler is invoked next that updates the input element. If it returns
486 * true, the default handler is suppressed.
487 * @param {Event} event Input element change event.
488 */
489 customPrefChangeHandler: PrefInputElement.prototype.customPrefChangeHandler,
452 }; 490 };
453 491
492 /**
493 * The name of the associated preference.
494 */
495 cr.defineProperty(PrefSelect, 'pref', cr.PropertyKind.ATTR);
496
497 /**
498 * The data type of the associated preference, only relevant for derived
499 * classes that support different data types.
500 */
501 cr.defineProperty(PrefSelect, 'dataType', cr.PropertyKind.ATTR);
502
503 /**
504 * Whether this input element is part of a dialog. If so, changes take effect
505 * in the settings UI immediately but are only actually committed when the
506 * user confirms the dialog. If the user cancels the dialog instead, the
507 * changes are rolled back in the settings UI and never committed.
508 */
509 cr.defineProperty(PrefSelect, 'dialogPref', cr.PropertyKind.BOOL_ATTR);
510
511 /**
512 * Whether the associated preference is controlled by a source other than the
513 * user's setting (can be 'policy', 'extension', 'recommended' or unset).
514 */
515 cr.defineProperty(PrefSelect, 'controlledBy', cr.PropertyKind.ATTR);
516
517 /**
518 * The user metric string.
519 */
520 cr.defineProperty(PrefSelect, 'metric', cr.PropertyKind.ATTR);
521
454 ///////////////////////////////////////////////////////////////////////////// 522 /////////////////////////////////////////////////////////////////////////////
455 // PrefTextField class: 523 // PrefTextField class:
456 524
457 // Define a constructor that uses an input element as its underlying element. 525 // Define a constructor that uses an input element as its underlying element.
458 var PrefTextField = cr.ui.define('input'); 526 var PrefTextField = cr.ui.define('input');
459 527
460 PrefTextField.prototype = { 528 PrefTextField.prototype = {
461 // Set up the prototype chain 529 // Set up the prototype chain
462 __proto__: PrefInputElement.prototype, 530 __proto__: PrefInputElement.prototype,
463 531
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 PrefInputElement: PrefInputElement, 653 PrefInputElement: PrefInputElement,
586 PrefNumber: PrefNumber, 654 PrefNumber: PrefNumber,
587 PrefRadio: PrefRadio, 655 PrefRadio: PrefRadio,
588 PrefRange: PrefRange, 656 PrefRange: PrefRange,
589 PrefSelect: PrefSelect, 657 PrefSelect: PrefSelect,
590 PrefTextField: PrefTextField, 658 PrefTextField: PrefTextField,
591 PrefPortNumber: PrefPortNumber, 659 PrefPortNumber: PrefPortNumber,
592 PrefButton: PrefButton 660 PrefButton: PrefButton
593 }; 661 };
594 }); 662 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698