- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / options / certificate_backup_overlay.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 cr.define('options', function() {
6   /** @const */ var OptionsPage = options.OptionsPage;
7
8   /**
9    * CertificateBackupOverlay class
10    * Encapsulated handling of the 'enter backup password' overlay page.
11    * @class
12    */
13   function CertificateBackupOverlay() {
14     OptionsPage.call(this, 'certificateBackupOverlay',
15                      '',
16                      'certificateBackupOverlay');
17   }
18
19   cr.addSingletonGetter(CertificateBackupOverlay);
20
21   CertificateBackupOverlay.prototype = {
22     __proto__: OptionsPage.prototype,
23
24     /**
25      * Initializes the page.
26      */
27     initializePage: function() {
28       OptionsPage.prototype.initializePage.call(this);
29
30       var self = this;
31       $('certificateBackupCancelButton').onclick = function(event) {
32         self.cancelBackup_();
33       };
34       $('certificateBackupOkButton').onclick = function(event) {
35         self.finishBackup_();
36       };
37       var onBackupPasswordInput = function(event) {
38         self.comparePasswords_();
39       };
40       $('certificateBackupPassword').oninput = onBackupPasswordInput;
41       $('certificateBackupPassword2').oninput = onBackupPasswordInput;
42
43       self.clearInputFields_();
44     },
45
46     /**
47      * Clears any uncommitted input, and dismisses the overlay.
48      * @private
49      */
50     dismissOverlay_: function() {
51       this.clearInputFields_();
52       OptionsPage.closeOverlay();
53     },
54
55     /**
56      * Attempt the Backup operation.
57      * The overlay will be left up with inputs disabled until the backend
58      * finishes and dismisses it.
59      * @private
60      */
61     finishBackup_: function() {
62       chrome.send('exportPersonalCertificatePasswordSelected',
63                   [$('certificateBackupPassword').value]);
64       $('certificateBackupCancelButton').disabled = true;
65       $('certificateBackupOkButton').disabled = true;
66       $('certificateBackupPassword').disabled = true;
67       $('certificateBackupPassword2').disabled = true;
68     },
69
70     /**
71      * Cancel the Backup operation.
72      * @private
73      */
74     cancelBackup_: function() {
75       chrome.send('cancelImportExportCertificate');
76       this.dismissOverlay_();
77     },
78
79     /**
80      * Compares the password fields and sets the button state appropriately.
81      * @private
82      */
83     comparePasswords_: function() {
84       var password1 = $('certificateBackupPassword').value;
85       var password2 = $('certificateBackupPassword2').value;
86       $('certificateBackupOkButton').disabled =
87           !password1 || password1 != password2;
88     },
89
90     /**
91      * Clears the value of each input field.
92      * @private
93      */
94     clearInputFields_: function() {
95       $('certificateBackupPassword').value = '';
96       $('certificateBackupPassword2').value = '';
97       $('certificateBackupPassword').disabled = false;
98       $('certificateBackupPassword2').disabled = false;
99       $('certificateBackupCancelButton').disabled = false;
100       $('certificateBackupOkButton').disabled = true;
101     },
102   };
103
104   CertificateBackupOverlay.show = function() {
105     CertificateBackupOverlay.getInstance().clearInputFields_();
106     OptionsPage.navigateToPage('certificateBackupOverlay');
107   };
108
109   CertificateBackupOverlay.dismiss = function() {
110     CertificateBackupOverlay.getInstance().dismissOverlay_();
111   };
112
113   // Export
114   return {
115     CertificateBackupOverlay: CertificateBackupOverlay
116   };
117 });