Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / resources / options / settings_dialog.js
blob01b2562de4994b934810612989e38e29032f92c2
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
3 // found in the LICENSE file.
5 /**
6  * @fileoverview Base class for dialogs that require saving preferences on
7  *     confirm and resetting preference inputs on cancel.
8  */
10 cr.define('options', function() {
11   /** @const */ var Page = cr.ui.pageManager.Page;
12   /** @const */ var PageManager = cr.ui.pageManager.PageManager;
14   /**
15    * Base class for settings dialogs.
16    * @constructor
17    * @param {string} name See Page constructor.
18    * @param {string} title See Page constructor.
19    * @param {string} pageDivName See Page constructor.
20    * @param {HTMLButtonElement} okButton The confirmation button element.
21    * @param {HTMLButtonElement} cancelButton The cancellation button element.
22    * @extends {cr.ui.pageManager.Page}
23    */
24   function SettingsDialog(name, title, pageDivName, okButton, cancelButton) {
25     Page.call(this, name, title, pageDivName);
26     this.okButton = okButton;
27     this.cancelButton = cancelButton;
28   }
30   SettingsDialog.prototype = {
31     __proto__: Page.prototype,
33     /** @override */
34     initializePage: function() {
35       this.okButton.onclick = this.handleConfirm.bind(this);
36       this.cancelButton.onclick = this.handleCancel.bind(this);
37     },
39     /**
40      * Handles the confirm button by saving the dialog preferences.
41      */
42     handleConfirm: function() {
43       PageManager.closeOverlay();
45       var prefs = Preferences.getInstance();
46       var els = this.pageDiv.querySelectorAll('[dialog-pref]');
47       for (var i = 0; i < els.length; i++) {
48         if (els[i].pref)
49           prefs.commitPref(els[i].pref, els[i].metric);
50       }
51     },
53     /**
54      * Handles the cancel button by closing the overlay.
55      */
56     handleCancel: function() {
57       PageManager.closeOverlay();
59       var prefs = Preferences.getInstance();
60       var els = this.pageDiv.querySelectorAll('[dialog-pref]');
61       for (var i = 0; i < els.length; i++) {
62         if (els[i].pref)
63           prefs.rollbackPref(els[i].pref);
64       }
65     },
66   };
68   return {
69     SettingsDialog: SettingsDialog
70   };
71 });