diff options
Diffstat (limited to 'pages/ui_component_server.coffee')
| -rw-r--r-- | pages/ui_component_server.coffee | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/pages/ui_component_server.coffee b/pages/ui_component_server.coffee index 4210a60e..9f72dd92 100644 --- a/pages/ui_component_server.coffee +++ b/pages/ui_component_server.coffee @@ -2,14 +2,12 @@ # Fetch the Vimium secret, register the port received from the parent window, and stop listening for messages # on the window object. vimiumSecret is accessible only within the current instance of Vimium. So a # malicious host page trying to register its own port can do no better than guessing. -registerPort = (event) -> +window.addEventListener "message", registerPort = (event) -> chrome.storage.local.get "vimiumSecret", ({vimiumSecret: secret}) -> return unless event.source == window.parent and event.data == secret UIComponentServer.portOpen event.ports[0] window.removeEventListener "message", registerPort -window.addEventListener "message", registerPort - UIComponentServer = ownerPagePort: null handleMessage: null @@ -23,6 +21,9 @@ UIComponentServer = postMessage: (message) -> @ownerPagePort?.postMessage message + hide: -> + @postMessage "hide" + # We require both that the DOM is ready and that the port has been opened before the UI component is ready. # These events can happen in either order. We count them, and notify the content script when we've seen # both. @@ -34,7 +35,11 @@ UIComponentServer = else 1 - -> @postMessage "uiComponentIsReady" if ++uiComponentIsReadyCount == 2 + -> + if ++uiComponentIsReadyCount == 2 + @postMessage {name: "setIframeFrameId", iframeFrameId: window.frameId} if window.frameId? + @postMessage "uiComponentIsReady" root = exports ? window root.UIComponentServer = UIComponentServer +root.isVimiumUIComponent = true |
