diff options
Diffstat (limited to 'addon-sdk/source/test/page-mod/helpers.js')
-rw-r--r-- | addon-sdk/source/test/page-mod/helpers.js | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/addon-sdk/source/test/page-mod/helpers.js b/addon-sdk/source/test/page-mod/helpers.js deleted file mode 100644 index 3aa3deb0d..000000000 --- a/addon-sdk/source/test/page-mod/helpers.js +++ /dev/null @@ -1,117 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const { Cc, Ci } = require("chrome"); -const { setTimeout } = require("sdk/timers"); -const { Loader } = require("sdk/test/loader"); -const { openTab, getBrowserForTab, closeTab } = require("sdk/tabs/utils"); -const { getMostRecentBrowserWindow } = require("sdk/window/utils"); -const { merge } = require("sdk/util/object"); -const httpd = require("../lib/httpd"); -const { cleanUI } = require("sdk/test/utils"); - -const PORT = 8099; -const PATH = '/test-contentScriptWhen.html'; - -function createLoader () { - let options = merge({}, require('@loader/options'), - { id: "testloader", prefixURI: require('../fixtures').url() }); - return Loader(module, null, options); -} -exports.createLoader = createLoader; - -function openNewTab(url) { - return openTab(getMostRecentBrowserWindow(), url, { - inBackground: false - }); -} -exports.openNewTab = openNewTab; - -// an evil function enables the creation of tests -// that depend on delicate event timing. do not use. -function testPageMod(assert, done, testURL, pageModOptions, - testCallback, timeout) { - let loader = createLoader(); - let { PageMod } = loader.require("sdk/page-mod"); - let pageMods = pageModOptions.map(opts => new PageMod(opts)); - let newTab = openNewTab(testURL); - let b = getBrowserForTab(newTab); - - function onPageLoad() { - b.removeEventListener("load", onPageLoad, true); - // Delay callback execute as page-mod content scripts may be executed on - // load event. So page-mod actions may not be already done. - // If we delay even more contentScriptWhen:'end', we may want to modify - // this code again. - setTimeout(testCallback, timeout, - b.contentWindow.wrappedJSObject, // TODO: remove this CPOW - function () { - pageMods.forEach(mod => mod.destroy()); - // XXX leaks reported if we don't close the tab? - closeTab(newTab); - loader.unload(); - done(); - } - ); - } - b.addEventListener("load", onPageLoad, true); - - return pageMods; -} -exports.testPageMod = testPageMod; - -/** - * helper function that creates a PageMod and calls back the appropriate handler - * based on the value of document.readyState at the time contentScript is attached - */ -exports.handleReadyState = function(url, contentScriptWhen, callbacks) { - const loader = Loader(module); - const { PageMod } = loader.require('sdk/page-mod'); - - let pagemod = PageMod({ - include: url, - attachTo: ['existing', 'top'], - contentScriptWhen: contentScriptWhen, - contentScript: "self.postMessage(document.readyState)", - onAttach: worker => { - let { tab } = worker; - worker.on('message', readyState => { - // generate event name from `readyState`, e.g. `"loading"` becomes `onLoading`. - let type = 'on' + readyState[0].toUpperCase() + readyState.substr(1); - - if (type in callbacks) - callbacks[type](tab); - - pagemod.destroy(); - loader.unload(); - }) - } - }); -} - -// serves a slow page which takes 1.5 seconds to load, -// 0.5 seconds in each readyState: uninitialized, loading, interactive. -function contentScriptWhenServer() { - const URL = 'http://localhost:' + PORT + PATH; - - const HTML = `/* polyglot js - <script src="${URL}"></script> - delay both the "DOMContentLoaded" - <script async src="${URL}"></script> - and "load" events */`; - - let srv = httpd.startServerAsync(PORT); - - srv.registerPathHandler(PATH, (_, response) => { - response.processAsync(); - response.setHeader('Content-Type', 'text/html', false); - setTimeout(_ => response.finish(), 500); - response.write(HTML); - }) - - srv.URL = URL; - return srv; -} -exports.contentScriptWhenServer = contentScriptWhenServer; |