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 }); 118