diff options
| author | Stephen Blott | 2016-03-26 16:20:44 +0000 |
|---|---|---|
| committer | Stephen Blott | 2016-03-26 16:29:20 +0000 |
| commit | fa67b115ce1a20e64da5b8eaa67e2979fad8f89d (patch) | |
| tree | 0ed121e5d9c2a0cdd47af6578089f50de77d5fab | |
| parent | b09a7524502e7df993bd1d5eb906553348130591 (diff) | |
| download | vimium-fa67b115ce1a20e64da5b8eaa67e2979fad8f89d.tar.bz2 | |
Ensure correct sendResponse() is called.
With several frames, only one frame can call sendResponse(), whichever
one happens to call it first.
getScrollPosition, is the only handler for which we care about the
response. Here, we make sure that sendResponse() will *only* be called
in the top frame - where we want it called.
This fixes a possible race condition in global marks.
Additionally, although it's not the primary intention here, this also
avoids calling sendResponse() unnecessarily in cases where we don't use
the response.
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 8acea3fc..564966bf 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -146,7 +146,8 @@ initializePreDomReady = -> requestHandlers = toggleHelpDialog: (request) -> if frameId == request.frameId then HelpDialog.toggle request.dialogHtml focusFrame: (request) -> if (frameId == request.frameId) then focusThisFrame request - getScrollPosition: -> if frameId == 0 then scrollX: window.scrollX, scrollY: window.scrollY + getScrollPosition: (ignoredA, ignoredB, sendResponse) -> + sendResponse scrollX: window.scrollX, scrollY: window.scrollY if frameId == 0 setScrollPosition: setScrollPosition # A frame has received the focus. We don't care here (the Vomnibar/UI-component handles this). frameFocused: -> @@ -158,7 +159,7 @@ initializePreDomReady = -> # These requests are intended for the background page, but they're delivered to the options page too. unless request.handler and not request.name if isEnabledForUrl or request.name in ["checkEnabledAfterURLChange", "runInTopFrame"] - sendResponse requestHandlers[request.name] request, sender + requestHandlers[request.name] request, sender, sendResponse false # Ensure that the sendResponse callback is freed. # Wrapper to install event listeners. Syntactic sugar. |
