15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('options', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var OptionsPage = options.OptionsPage;
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  var Page = cr.ui.pageManager.Page;
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  var PageManager = cr.ui.pageManager.PageManager;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /////////////////////////////////////////////////////////////////////////////
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CertificateManagerTab class:
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * blah
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!string} id The id of this tab.
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch   * @param {boolean} isKiosk True if dialog is shown during CrOS kiosk launch.
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   * @constructor
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  function CertificateManagerTab(id, isKiosk) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.tree = $(id + '-tree');
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    options.CertificatesTree.decorate(this.tree);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.tree.addEventListener('change',
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.handleCertificatesTreeChange_.bind(this));
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var tree = this.tree;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.viewButton = $(id + '-view');
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.viewButton.onclick = function(e) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var selected = tree.selectedItem;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      chrome.send('viewCertificate', [selected.data.id]);
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    };
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.editButton = $(id + '-edit');
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.editButton !== null) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (id == 'serverCertsTab') {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.editButton.onclick = function(e) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          var selected = tree.selectedItem;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          chrome.send('editServerCertificate', [selected.data.id]);
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      } else if (id == 'caCertsTab') {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.editButton.onclick = function(e) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          var data = tree.selectedItem.data;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          CertificateEditCaTrustOverlay.show(data.id, data.name);
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.backupButton = $(id + '-backup');
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.backupButton !== null) {
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      if (id == 'personalCertsTab' && isKiosk) {
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.backupButton.hidden = true;
53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      } else {
54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.backupButton.onclick = function(e) {
55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          var selected = tree.selectedItem;
56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          chrome.send('exportPersonalCertificate', [selected.data.id]);
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.backupAllButton = $(id + '-backup-all');
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.backupAllButton !== null) {
63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      if (id == 'personalCertsTab' && isKiosk) {
64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.backupAllButton.hidden = true;
65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      } else {
66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.backupAllButton.onclick = function(e) {
67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          chrome.send('exportAllPersonalCertificates');
685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.importButton = $(id + '-import');
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.importButton !== null) {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (id == 'personalCertsTab') {
75effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        if (isKiosk) {
76effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          this.importButton.hidden = true;
77effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        } else {
78effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          this.importButton.onclick = function(e) {
79effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch            chrome.send('importPersonalCertificate', [false]);
805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)          };
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      } else if (id == 'serverCertsTab') {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.importButton.onclick = function(e) {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          chrome.send('importServerCertificate');
855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      } else if (id == 'caCertsTab') {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.importButton.onclick = function(e) {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          chrome.send('importCaCertificate');
895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.importAndBindButton = $(id + '-import-and-bind');
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.importAndBindButton !== null) {
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (id == 'personalCertsTab') {
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.importAndBindButton.onclick = function(e) {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          chrome.send('importPersonalCertificate', [true]);
985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.exportButton = $(id + '-export');
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (this.exportButton !== null) {
104effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      if (id == 'personalCertsTab' && isKiosk) {
105effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.exportButton.hidden = true;
106effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      } else {
107effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        this.exportButton.onclick = function(e) {
108effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          var selected = tree.selectedItem;
109effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          chrome.send('exportCertificate', [selected.data.id]);
1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        };
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.deleteButton = $(id + '-delete');
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.deleteButton.onclick = function(e) {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var data = tree.selectedItem.data;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      AlertOverlay.show(
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          loadTimeData.getStringF(id + 'DeleteConfirm', data.name),
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          loadTimeData.getString(id + 'DeleteImpact'),
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          loadTimeData.getString('ok'),
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          loadTimeData.getString('cancel'),
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          function() {
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            tree.selectedItem = null;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            chrome.send('deleteCertificate', [data.id]);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          });
1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    };
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CertificateManagerTab.prototype = {
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Update button state.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param {!Object} data The data of the selected item.
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    updateButtonState: function(data) {
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var isCert = !!data && data.isCert;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var readOnly = !!data && data.readonly;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var extractable = !!data && data.extractable;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var hasChildren = this.tree.items.length > 0;
140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      var isPolicy = !!data && data.policy;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.viewButton.disabled = !isCert;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (this.editButton !== null)
143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)        this.editButton.disabled = !isCert || isPolicy;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (this.backupButton !== null)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.backupButton.disabled = !isCert || !extractable;
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (this.backupAllButton !== null)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.backupAllButton.disabled = !hasChildren;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (this.exportButton !== null)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.exportButton.disabled = !isCert;
150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      this.deleteButton.disabled = !isCert || readOnly || isPolicy;
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Handles certificate tree selection change.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param {!Event} e The change event object.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleCertificatesTreeChange_: function(e) {
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var data = null;
1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      if (this.tree.selectedItem)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        data = this.tree.selectedItem.data;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.updateButtonState(data);
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /////////////////////////////////////////////////////////////////////////////
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CertificateManager class:
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Encapsulated handling of ChromeOS accounts options page.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   * @extends {cr.ui.pageManager.Page}
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function CertificateManager(model) {
1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    Page.call(this, 'certificates',
1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)              loadTimeData.getString('certificateManagerPageTabTitle'),
1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)              'certificateManagerPage');
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cr.addSingletonGetter(CertificateManager);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CertificateManager.prototype = {
1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    __proto__: Page.prototype,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    /** @override */
187effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    initializePage: function(isKiosk) {
1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      Page.prototype.initializePage.call(this);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
190effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      this.personalTab = new CertificateManagerTab('personalCertsTab',
191effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                                   !!isKiosk);
192effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      this.serverTab = new CertificateManagerTab('serverCertsTab', !!isKiosk);
193effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      this.caTab = new CertificateManagerTab('caCertsTab', !!isKiosk);
194effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      this.otherTab = new CertificateManagerTab('otherCertsTab', !!isKiosk);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.addEventListener('visibleChange', this.handleVisibleChange_);
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('certificate-confirm').onclick = function() {
1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        PageManager.closeOverlay();
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      };
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    initalized_: false,
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)     * Handler for Page's visible property change event.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param {Event} e Property change event.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleVisibleChange_: function(e) {
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (!this.initalized_ && this.visible) {
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.initalized_ = true;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        OptionsPage.showTab($('personal-certs-nav-tab'));
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        chrome.send('populateCertificateManager');
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CertificateManagerHandler callbacks.
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CertificateManager.onPopulateTree = function(args) {
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $(args[0]).populate(args[1]);
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CertificateManager.exportPersonalAskPassword = function(args) {
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CertificateBackupOverlay.show();
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CertificateManager.importPersonalAskPassword = function(args) {
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CertificateRestoreOverlay.show();
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  CertificateManager.onModelReady = function(userDbAvailable,
233a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                             tpmAvailable) {
234a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if (!userDbAvailable)
235a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      return;
236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if (tpmAvailable)
2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      $('personalCertsTab-import-and-bind').disabled = false;
2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    $('personalCertsTab-import').disabled = false;
2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    $('serverCertsTab-import').disabled = false;
2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    $('caCertsTab-import').disabled = false;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CertificateManagerTab: CertificateManagerTab,
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CertificateManager: CertificateManager
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
249