| Index: chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
|
| diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
|
| index 82b261fd8cd1e92346d04facebc4549300248a05..f13138a08f5e34a58f2f64a43202b8c1796a1c9f 100644
|
| --- a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
|
| +++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
|
| @@ -64,10 +64,11 @@ Polymer({
|
|
|
| /**
|
| * Handles a rejected Promise returned from |browserProxy_|.
|
| + * @param {!HTMLElement} anchor
|
| * @param {*} error Expects {!CertificatesError|!CertificatesImportError}.
|
| * @private
|
| */
|
| - onRejected_: function(error) {
|
| + onRejected_: function(anchor, error) {
|
| if (error === null) {
|
| // Nothing to do here. Null indicates that the user clicked "cancel" on
|
| // a native file chooser dialog.
|
| @@ -76,58 +77,69 @@ Polymer({
|
|
|
| // Otherwise propagate the error to the parents, such that a dialog
|
| // displaying the error will be shown.
|
| - this.fire('certificates-error', error);
|
| + this.fire('certificates-error', {error: error, anchor: anchor});
|
| },
|
|
|
|
|
| /**
|
| * @param {?NewCertificateSubNode} subnode
|
| + * @param {!HTMLElement} anchor
|
| * @private
|
| */
|
| - dispatchImportActionEvent_: function(subnode) {
|
| + dispatchImportActionEvent_: function(subnode, anchor) {
|
| this.fire(
|
| settings.CertificateActionEvent,
|
| /** @type {!CertificateActionEventDetail} */ ({
|
| action: CertificateAction.IMPORT,
|
| subnode: subnode,
|
| certificateType: this.certificateType,
|
| + anchor: anchor,
|
| }));
|
| },
|
|
|
| - /** @private */
|
| - onImportTap_: function() {
|
| - this.handleImport_(false);
|
| + /**
|
| + * @param {!Event} e
|
| + * @private
|
| + */
|
| + onImportTap_: function(e) {
|
| + this.handleImport_(false, /** @type {!HTMLElement} */ (
|
| + Polymer.dom(e).localTarget));
|
| },
|
|
|
| // <if expr="chromeos">
|
| - /** @private */
|
| - onImportAndBindTap_: function() {
|
| - this.handleImport_(true);
|
| + /**
|
| + * @private
|
| + * @param {!Event} e
|
| + */
|
| + onImportAndBindTap_: function(e) {
|
| + this.handleImport_(true, /** @type {!HTMLElement} */ (
|
| + Polymer.dom(e).localTarget));
|
| },
|
| // </if>
|
|
|
| /**
|
| * @param {boolean} useHardwareBacked
|
| + * @param {!HTMLElement} anchor
|
| * @private
|
| */
|
| - handleImport_: function(useHardwareBacked) {
|
| + handleImport_: function(useHardwareBacked, anchor) {
|
| var browserProxy = settings.CertificatesBrowserProxyImpl.getInstance();
|
| if (this.certificateType == CertificateType.PERSONAL) {
|
| browserProxy.importPersonalCertificate(useHardwareBacked).then(
|
| function(showPasswordPrompt) {
|
| if (showPasswordPrompt)
|
| - this.dispatchImportActionEvent_(null);
|
| + this.dispatchImportActionEvent_(null, anchor);
|
| }.bind(this),
|
| - this.onRejected_.bind(this));
|
| + this.onRejected_.bind(this, anchor));
|
| } else if (this.certificateType == CertificateType.CA) {
|
| browserProxy.importCaCertificate().then(
|
| function(certificateName) {
|
| - this.dispatchImportActionEvent_({name: certificateName});
|
| + this.dispatchImportActionEvent_({name: certificateName}, anchor);
|
| }.bind(this),
|
| - this.onRejected_.bind(this));
|
| + this.onRejected_.bind(this, anchor));
|
| } else if (this.certificateType == CertificateType.SERVER) {
|
| browserProxy.importServerCertificate().catch(
|
| - this.onRejected_.bind(this));
|
| + this.onRejected_.bind(this, anchor));
|
| } else {
|
| assertNotReached();
|
| }
|
|
|