diff options
| author | Stephen Blott | 2016-04-05 06:41:56 +0100 |
|---|---|---|
| committer | Stephen Blott | 2016-04-05 06:53:48 +0100 |
| commit | 17a24b4b3df24c5b3a354dd195e2f4fe3e4bfb54 (patch) | |
| tree | 5090f77535d7b8bb1f2b8d68d2c0dd01ebab17e7 /background_scripts/main.coffee | |
| parent | 84bea357c879090a833b096c00be5c4318d48c4f (diff) | |
| download | vimium-17a24b4b3df24c5b3a354dd195e2f4fe3e4bfb54.tar.bz2 | |
Unregister frame on "unload".
It seems we cannot rely on the port being disconnected to unregister a
frame. So we need to unregister it on "unload".
Diffstat (limited to 'background_scripts/main.coffee')
| -rw-r--r-- | background_scripts/main.coffee | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 8b1e61ce..6dd3906f 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -292,12 +292,6 @@ Frames = [tabId, frameId] = [sender.tab.id, sender.frameId] port.postMessage handler: "registerFrameId", chromeFrameId: frameId - port.onDisconnect.addListener listener = -> - if tabId of frameIdsForTab - frameIdsForTab[tabId] = (fId for fId in frameIdsForTab[tabId] when fId != frameId) - if tabId of portsForTab - delete portsForTab[tabId][frameId] - # Return our onMessage handler for this port. (request, port) => this[request.handler] {request, tabId, frameId, port} @@ -306,6 +300,12 @@ Frames = frameIdsForTab[tabId].push frameId unless frameId in frameIdsForTab[tabId] ?= [] (portsForTab[tabId] ?= {})[frameId] = port + unregsterFrame: ({tabId, frameId}) -> + if tabId of frameIdsForTab + frameIdsForTab[tabId] = (fId for fId in frameIdsForTab[tabId] when fId != frameId) + if tabId of portsForTab + delete portsForTab[tabId][frameId] + isEnabledForUrl: ({request, tabId, port}) -> urlForTab[tabId] = request.url if request.frameIsFocused enabledState = Exclusions.isEnabledForUrl request.url |
