1 // Copyright (c) 2010 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 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 $('certificateBackupPassword').oninput = 38 $('certificateBackupPassword2').oninput = function(event) { 39 self.comparePasswords_(); 40 } 41 42 self.clearInputFields_(); 43 }, 44 45 /** 46 * Clears any uncommitted input, and dismisses the overlay. 47 * @private 48 */ 49 dismissOverlay_: function() { 50 this.clearInputFields_(); 51 OptionsPage.closeOverlay(); 52 }, 53 54 /** 55 * Attempt the Backup operation. 56 * The overlay will be left up with inputs disabled until the backend 57 * finishes and dismisses it. 58 * @private 59 */ 60 finishBackup_: function() { 61 chrome.send('exportPersonalCertificatePasswordSelected', 62 [$('certificateBackupPassword').value]); 63 $('certificateBackupCancelButton').disabled = true; 64 $('certificateBackupOkButton').disabled = true; 65 $('certificateBackupPassword').disabled = true; 66 $('certificateBackupPassword2').disabled = true; 67 }, 68 69 /** 70 * Cancel the Backup operation. 71 * @private 72 */ 73 cancelBackup_: function() { 74 chrome.send('cancelImportExportCertificate'); 75 this.dismissOverlay_(); 76 }, 77 78 /** 79 * Compares the password fields and sets the button state appropriately. 80 * @private 81 */ 82 comparePasswords_: function() { 83 var password1 = $('certificateBackupPassword').value; 84 var password2 = $('certificateBackupPassword2').value; 85 $('certificateBackupOkButton').disabled = 86 !password1 || password1 != password2; 87 }, 88 89 /** 90 * Clears the value of each input field. 91 * @private 92 */ 93 clearInputFields_: function() { 94 $('certificateBackupPassword').value = ''; 95 $('certificateBackupPassword2').value = ''; 96 $('certificateBackupPassword').disabled = false; 97 $('certificateBackupPassword2').disabled = false; 98 $('certificateBackupCancelButton').disabled = false; 99 $('certificateBackupOkButton').disabled = true; 100 }, 101 }; 102 103 CertificateBackupOverlay.show = function() { 104 CertificateBackupOverlay.getInstance().clearInputFields_(); 105 OptionsPage.navigateToPage('certificateBackupOverlay'); 106 }; 107 108 CertificateBackupOverlay.dismiss = function() { 109 CertificateBackupOverlay.getInstance().dismissOverlay_(); 110 }; 111 112 // Export 113 return { 114 CertificateBackupOverlay: CertificateBackupOverlay 115 }; 116 }); 117