172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsencr.define('options', function() { 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var OptionsPage = options.OptionsPage; 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ///////////////////////////////////////////////////////////////////////////// 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // CertificateManagerTab class: 11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * blah 14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {!string} id The id of this tab. 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen function CertificateManagerTab(id) { 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.tree = $(id + '-tree'); 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen options.CertificatesTree.decorate(this.tree); 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.tree.addEventListener('change', 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.handleCertificatesTreeChange_.bind(this)); 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var tree = this.tree; 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.viewButton = $(id + '-view'); 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.viewButton.onclick = function(e) { 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var selected = tree.selectedItem; 28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen chrome.send('viewCertificate', [selected.data.id]); 29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.editButton = $(id + '-edit'); 32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.editButton !== null) { 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (id == 'serverCertsTab') { 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.editButton.onclick = function(e) { 35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var selected = tree.selectedItem; 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('editServerCertificate', [selected.data.id]); 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } else if (id == 'caCertsTab') { 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.editButton.onclick = function(e) { 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var data = tree.selectedItem.data; 41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CertificateEditCaTrustOverlay.show(data.id, data.name); 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupButton = $(id + '-backup'); 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.backupButton !== null) { 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupButton.onclick = function(e) { 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var selected = tree.selectedItem; 50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('exportPersonalCertificate', [selected.data.id]); 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupAllButton = $(id + '-backup-all'); 55731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.backupAllButton !== null) { 56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupAllButton.onclick = function(e) { 57731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('exportAllPersonalCertificates', []); 58731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 59731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 60731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.importButton = $(id + '-import'); 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.importButton !== null) { 63731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (id == 'personalCertsTab') { 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.importButton.onclick = function(e) { 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chrome.send('importPersonalCertificate', [false]); 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } else if (id == 'serverCertsTab') { 68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.importButton.onclick = function(e) { 69731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('importServerCertificate', []); 70731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 71731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } else if (id == 'caCertsTab') { 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.importButton.onclick = function(e) { 73731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('importCaCertificate', []); 74731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 75731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 76731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 77731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.importAndBindButton = $(id + '-import-and-bind'); 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (this.importAndBindButton !== null) { 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (id == 'personalCertsTab') { 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.importAndBindButton.onclick = function(e) { 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chrome.send('importPersonalCertificate', [true]); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 87731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.exportButton = $(id + '-export'); 88731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.exportButton !== null) { 89731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.exportButton.onclick = function(e) { 90731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var selected = tree.selectedItem; 91731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('exportCertificate', [selected.data.id]); 92731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 93731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 94731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 95731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.deleteButton = $(id + '-delete'); 96731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.deleteButton.onclick = function(e) { 97731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var data = tree.selectedItem.data; 98731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick AlertOverlay.show( 99731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick localStrings.getStringF(id + 'DeleteConfirm', data.name), 100731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick localStrings.getString(id + 'DeleteImpact'), 10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen localStrings.getString('ok'), 10221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen localStrings.getString('cancel'), 10321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen function() { chrome.send('deleteCertificate', [data.id]); }); 104731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 105bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 106bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 107bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen CertificateManagerTab.prototype = { 108bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 110bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Update button state. 111bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @private 112bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {!Object} data The data of the selected item. 113bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 114bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen updateButtonState: function(data) { 115bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var isCert = !!data && data.id.substr(0, 5) == 'cert-'; 116513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var readOnly = !!data && data.readonly; 117731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var hasChildren = this.tree.items.length > 0; 118bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.viewButton.disabled = !isCert; 119731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.editButton !== null) 120731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.editButton.disabled = !isCert; 121731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.backupButton !== null) 122731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupButton.disabled = !isCert; 123731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.backupAllButton !== null) 124731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.backupAllButton.disabled = !hasChildren; 125731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.exportButton !== null) 126731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.exportButton.disabled = !isCert; 127513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.deleteButton.disabled = !isCert || readOnly; 128bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 129bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Handles certificate tree selection change. 132bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @private 133bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {!Event} e The change event object. 134bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 135bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleCertificatesTreeChange_: function(e) { 136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var data = null; 137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (this.tree.selectedItem) { 138bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen data = this.tree.selectedItem.data; 139bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 141bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.updateButtonState(data); 142bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 143bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 144bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 145bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 146ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(xiyuan): Use notification from backend instead of polling. 147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TPM token check polling timer. 148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var tpmPollingTimer; 149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Initiate tpm token check if needed. 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function checkTpmToken() { 152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var importAndBindButton = $('personalCertsTab-import-and-bind'); 153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (importAndBindButton && importAndBindButton.disabled) 155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chrome.send('checkTpmTokenReady'); 156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Stop tpm polling timer. 159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function stopTpmTokenCheckPolling() { 160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (tpmPollingTimer) { 161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen window.clearTimeout(tpmPollingTimer); 162ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen tpmPollingTimer = undefined; 163ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 164ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ///////////////////////////////////////////////////////////////////////////// 167bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // CertificateManager class: 168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 169bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 170bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Encapsulated handling of ChromeOS accounts options page. 171bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @constructor 172bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 173bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen function CertificateManager(model) { 174dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen OptionsPage.call(this, 'certificates', 17572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen templateData.certificateManagerPageTabTitle, 176bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 'certificateManagerPage'); 177bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 178bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 179bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen cr.addSingletonGetter(CertificateManager); 180bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 181bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen CertificateManager.prototype = { 182bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen __proto__: OptionsPage.prototype, 183bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 184bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen initializePage: function() { 185bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen OptionsPage.prototype.initializePage.call(this); 186bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 187bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.personalTab = new CertificateManagerTab('personalCertsTab'); 188bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.serverTab = new CertificateManagerTab('serverCertsTab'); 189bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.caTab = new CertificateManagerTab('caCertsTab'); 190bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.otherTab = new CertificateManagerTab('otherCertsTab'); 191bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 192bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.addEventListener('visibleChange', this.handleVisibleChange_); 193bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 194bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 195bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen initalized_: false, 196bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 197bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 198bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Handler for OptionsPage's visible property change event. 199bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @private 200bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Event} e Property change event. 201bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 202bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleVisibleChange_: function(e) { 203bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (!this.initalized_ && this.visible) { 204bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.initalized_ = true; 205bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen chrome.send('populateCertificateManager'); 206bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cr.isChromeOS) { 209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Ensure TPM token check on visible and stop polling when hidden. 210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (this.visible) 211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen checkTpmToken(); 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen else 213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen stopTpmTokenCheckPolling(); 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 215bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 216bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 217bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 218bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // CertificateManagerHandler callbacks. 219bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen CertificateManager.onPopulateTree = function(args) { 220bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen $(args[0]).populate(args[1]); 221bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 222bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 223731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CertificateManager.exportPersonalAskPassword = function(args) { 224731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CertificateBackupOverlay.show(); 225731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }; 226731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 227731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CertificateManager.importPersonalAskPassword = function(args) { 228731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CertificateRestoreOverlay.show(); 229731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }; 230731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CertificateManager.onCheckTpmTokenReady = function(ready) { 232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var importAndBindButton = $('personalCertsTab-import-and-bind'); 233ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (importAndBindButton) { 234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen importAndBindButton.disabled = !ready; 235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 236ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Check again after 5 seconds if Tpm is not ready and certificate manager 237ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // is still visible. 238ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!ready && CertificateManager.getInstance().visible) 239ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen tpmPollingTimer = window.setTimeout(checkTpmToken, 5000); 240ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 241ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 242ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 243bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Export 244bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return { 245bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen CertificateManagerTab: CertificateManagerTab, 246bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen CertificateManager: CertificateManager 247bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 248bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 249bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}); 250