aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_scripts/main.coffee10
1 files changed, 7 insertions, 3 deletions
diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee
index dca9df7e..9f04d1c0 100644
--- a/background_scripts/main.coffee
+++ b/background_scripts/main.coffee
@@ -289,6 +289,7 @@ for icon in [ENABLED_ICON, DISABLED_ICON, PARTIAL_ICON]
Frames =
onConnect: (sender, port) ->
[tabId, frameId] = [sender.tab.id, sender.frameId]
+ port.onDisconnect.addListener -> Frames.unregisterFrame {tabId, frameId}
port.postMessage handler: "registerFrameId", chromeFrameId: frameId
# Return our onMessage handler for this port.
@@ -390,9 +391,12 @@ HintCoordinator =
# If an unregistering frame is participating in link-hints mode, then we need to tidy up after it.
unregisterFrame: (tabId, frameId) ->
- delete @tabState[tabId]?.ports?[frameId]
- # We fake "postHintDescriptors" for an unregistering frame.
- @postHintDescriptors tabId, frameId, hintDescriptors: [] if @tabState[tabId]?.frameIds
+ if @tabState[tabId]?
+ if @tabState[tabId].ports?[frameId]?
+ delete @tabState[tabId].ports[frameId]
+ if @tabState[tabId].frameIds? and frameId in @tabState[tabId].frameIds
+ # We fake an empty "postHintDescriptors" because the frame has gone away.
+ @postHintDescriptors tabId, frameId, hintDescriptors: []
# Port handler mapping
portHandlers =