Home | History | Annotate | Download | only in options
      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