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