Index: chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js |
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js |
index 14fb032f83cf5b9def5da5c34278b132d9a30647..7614bd555b375efb1888d31847d6210394df43b5 100644 |
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js |
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js |
@@ -48,6 +48,40 @@ Polymer({ |
value: settings.CertificateType, |
readonly: true, |
}, |
+ |
+ /** @private */ |
+ showCaTrustEditDialog_: Boolean, |
+ |
+ /** @private */ |
+ showDeleteConfirmationDialog_: Boolean, |
+ |
+ /** @private */ |
+ showPasswordEncryptionDialog_: Boolean, |
+ |
+ /** @private */ |
+ showPasswordDecryptionDialog_: Boolean, |
+ |
+ /** @private */ |
+ showErrorDialog_: Boolean, |
+ |
+ /** |
+ * The model to be passed to dialogs that refer to a given certificate. |
+ * @private {?CertificateSubnode} |
+ */ |
+ dialogModel_: Object, |
+ |
+ /** |
+ * The certificate type to be passed to dialogs that refer to a given |
+ * certificate. |
+ * @private {?settings.CertificateType} |
+ */ |
+ dialogModelCertificateType_: String, |
+ |
+ /** |
+ * The model to be passed to the error dialog. |
+ * @private {null|!CertificatesError|!CertificatesImportError} |
+ */ |
+ errorDialogModel_: Object, |
}, |
/** @override */ |
@@ -65,4 +99,62 @@ Polymer({ |
isTabSelected_: function(selectedIndex, tabIndex) { |
return selectedIndex == tabIndex; |
}, |
+ |
+ /** @override */ |
+ ready: function() { |
+ this.addEventListener(settings.CertificateActionEvent, function(event) { |
+ this.dialogModel_ = event.detail.subnode; |
+ this.dialogModelCertificateType_ = event.detail.certificateType; |
+ if (event.detail.action == settings.CertificateAction.EDIT) { |
+ this.openDialog_( |
+ 'settings-ca-trust-edit-dialog', |
+ 'showCaTrustEditDialog_'); |
+ } else if (event.detail.action == settings.CertificateAction.DELETE) { |
+ this.openDialog_( |
+ 'settings-certificate-delete-confirmation-dialog', |
+ 'showDeleteConfirmationDialog_'); |
+ } else if (event.detail.action == |
+ settings.CertificateAction.EXPORT_PERSONAL) { |
+ this.openDialog_( |
+ 'settings-certificate-password-encryption-dialog', |
+ 'showPasswordEncryptionDialog_'); |
+ } else if (event.detail.action == |
+ settings.CertificateAction.IMPORT_PERSONAL) { |
+ this.openDialog_( |
+ 'settings-certificate-password-decryption-dialog', |
+ 'showPasswordDecryptionDialog_'); |
+ } else if (event.detail.action == settings.CertificateAction.IMPORT_CA) { |
+ // TODO(dpapad): Implement this. |
+ } |
+ event.stopPropagation(); |
+ }.bind(this)); |
+ }, |
+ |
+ /** |
+ * Opens a dialog and registers listeners for |
+ * 1) Removing the dialog from the DOM once is closed. |
+ * 2) Showing an error dialog if necessary. |
+ * The listeners are destroyed when the dialog is removed (because of |
+ * 'restamp'); |
+ * |
+ * @param {string} dialogTagName The tag name of the dialog to be shown. |
+ * @param {string} domIfBooleanName The name of the boolean variable |
+ * corresponding to the dialog. |
+ * @private |
+ */ |
+ openDialog_: function(dialogTagName, domIfBooleanName) { |
+ this.set(domIfBooleanName, true); |
+ this.async(function() { |
+ var dialog = this.$$(dialogTagName); |
+ dialog.addEventListener('iron-overlay-closed', function() { |
+ this.set(domIfBooleanName, false); |
+ }.bind(this)); |
+ dialog.addEventListener('certificates-error', function(event) { |
+ this.errorDialogModel_ = event.detail; |
+ this.openDialog_( |
+ 'settings-certificates-error-dialog', |
+ 'showErrorDialog_'); |
+ }.bind(this)); |
+ }.bind(this)); |
+ }, |
}); |