diff options
| -rw-r--r-- | content_scripts/ui_component.coffee | 6 | ||||
| -rw-r--r-- | tests/dom_tests/phantom_runner.coffee | 29 |
2 files changed, 21 insertions, 14 deletions
diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee index 24982fa7..4e26f26a 100644 --- a/content_scripts/ui_component.coffee +++ b/content_scripts/ui_component.coffee @@ -15,7 +15,6 @@ class UIComponent extend @iframeElement, className: className seamless: "seamless" - src: chrome.runtime.getURL iframeUrl shadowWrapper = document.createElement "div" # PhantomJS doesn't support createShadowRoot, so guard against its non-existance. @shadowDOM = shadowWrapper.createShadowRoot?() ? shadowWrapper @@ -28,9 +27,12 @@ class UIComponent @hide false # Open a port and pass it to the iframe via window.postMessage. We use an AsyncDataFetcher to handle - # requests which arrive before the frame (and its message handlers) have completed initialization. See + # requests which arrive before the iframe (and its message handlers) have completed initialization. See # #1679. @iframePort = new AsyncDataFetcher (setIframePort) => + # We set the iframe source here (and not above) to avoid a potential race condition vis-a-vis the "load" + # event (because this callback runs on "nextTick"). + @iframeElement.src = chrome.runtime.getURL iframeUrl @iframeElement.addEventListener "load", => # Get vimiumSecret so the iframe can determine that our message isn't the page impersonating us. chrome.storage.local.get "vimiumSecret", ({ vimiumSecret }) => diff --git a/tests/dom_tests/phantom_runner.coffee b/tests/dom_tests/phantom_runner.coffee index 93218724..e0382a35 100644 --- a/tests/dom_tests/phantom_runner.coffee +++ b/tests/dom_tests/phantom_runner.coffee @@ -37,15 +37,20 @@ page.open testfile, (status) -> console.log 'Unable to load tests.' phantom.exit 1 - testsFailed = page.evaluate -> - Tests.run() - return Tests.testsFailed - - if system.args[1] == '--coverage' - data = page.evaluate -> JSON.stringify _$jscoverage - fs.write dirname + 'dom_tests_coverage.json', data, 'w' - - if testsFailed > 0 - phantom.exit 1 - else - phantom.exit 0 + runTests = -> + testsFailed = page.evaluate -> + Tests.run() + return Tests.testsFailed + + if system.args[1] == '--coverage' + data = page.evaluate -> JSON.stringify _$jscoverage + fs.write dirname + 'dom_tests_coverage.json', data, 'w' + + if testsFailed > 0 + phantom.exit 1 + else + phantom.exit 0 + + # We add a short delay to allow asynchronous initialization (that is, initialization which happens on + # "nextTick") to complete. + setTimeout runTests, 10 |
