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