diff --git a/resources/static/dialog/controllers/dialog_controller.js b/resources/static/dialog/controllers/dialog_controller.js index e2c7f3b9729aa2f3211e01d11eb6517df41d50d8..fce5176da52e6f42b8ee899bfc64951ae4c24c05 100644 --- a/resources/static/dialog/controllers/dialog_controller.js +++ b/resources/static/dialog/controllers/dialog_controller.js @@ -124,6 +124,7 @@ bid.Storage.setStagedOnBehalfOf(""); self.doCancel(); } + window.teardownChannel(); }); }, diff --git a/resources/static/dialog/resources/channel.js b/resources/static/dialog/resources/channel.js index d98f44680cc76dcbf8887d0579b779ba7909256d..5e51e0e21ef80a63d1090851193e4bcf613ed194 100644 --- a/resources/static/dialog/resources/channel.js +++ b/resources/static/dialog/resources/channel.js @@ -110,6 +110,16 @@ setupIFrameChannel(controller); } + function close() { + var frameWindow = getRelayWindow(); + + if (frameWindow) { + frameWindow.BrowserID.Relay.unregisterClient(); + } + else { + throw "relay frame not found"; + } + } function init(options) { onCompleteCallback = undefined; @@ -139,7 +149,12 @@ * @param {object} options - contains: * * options.getVerifiedEmail {function} - function to /get */ - open: open + open: open, + + /** + * Close the channel + */ + close: close }; } @@ -148,4 +163,5 @@ * window.setupChannel; */ window.setupChannel = open; + window.teardownChannel = close; }()); diff --git a/resources/static/relay/relay.js b/resources/static/relay/relay.js index 2c434508d6f866eb6c97929c892d3b5dcadaccf1..73dd22d89f1a0e50cd2cd2a6cdfea23749d02a24 100644 --- a/resources/static/relay/relay.js +++ b/resources/static/relay/relay.js @@ -124,6 +124,10 @@ forwardCall(); } + function unregisterClient() { + registeredMethods = null; + } + function getVerboseMessage(code) { var msgs = { "canceled": "user canceled selection", @@ -157,7 +161,8 @@ * Register a client to use the relay * @method registerClient */ - registerClient: registerClient + registerClient: registerClient, + unregisterClient: unregisterClient }; }());