diff options
Diffstat (limited to 'devtools/client/styleeditor/test/head.js')
-rw-r--r-- | devtools/client/styleeditor/test/head.js | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/devtools/client/styleeditor/test/head.js b/devtools/client/styleeditor/test/head.js new file mode 100644 index 000000000..c7abaa435 --- /dev/null +++ b/devtools/client/styleeditor/test/head.js @@ -0,0 +1,121 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* All top-level definitions here are exports. */ +/* eslint no-unused-vars: [2, {"vars": "local"}] */ + +"use strict"; + +/* import-globals-from ../../inspector/shared/test/head.js */ +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/devtools/client/inspector/shared/test/head.js", this); + +const TEST_BASE = "chrome://mochitests/content/browser/devtools/client/styleeditor/test/"; +const TEST_BASE_HTTP = "http://example.com/browser/devtools/client/styleeditor/test/"; +const TEST_BASE_HTTPS = "https://example.com/browser/devtools/client/styleeditor/test/"; +const TEST_HOST = "mochi.test:8888"; + +/** + * Add a new test tab in the browser and load the given url. + * @param {String} url The url to be loaded in the new tab + * @param {Window} win The window to add the tab to (default: current window). + * @return a promise that resolves to the tab object when the url is loaded + */ +var addTab = function (url, win) { + info("Adding a new tab with URL: '" + url + "'"); + let def = defer(); + + let targetWindow = win || window; + let targetBrowser = targetWindow.gBrowser; + + let tab = targetBrowser.selectedTab = targetBrowser.addTab(url); + BrowserTestUtils.browserLoaded(targetBrowser.selectedBrowser) + .then(function () { + info("URL '" + url + "' loading complete"); + def.resolve(tab); + }); + + return def.promise; +}; + +/** + * Navigate the currently selected tab to a new URL and wait for it to load. + * @param {String} url The url to be loaded in the current tab. + * @return a promise that resolves when the page has fully loaded. + */ +var navigateTo = Task.async(function* (url) { + info(`Navigating to ${url}`); + let browser = gBrowser.selectedBrowser; + + let navigating = defer(); + browser.addEventListener("load", function onload() { + browser.removeEventListener("load", onload, true); + navigating.resolve(); + }, true); + + browser.loadURI(url); + + yield navigating.promise; +}); + +var navigateToAndWaitForStyleSheets = Task.async(function* (url, ui) { + let onReset = ui.once("stylesheets-reset"); + yield navigateTo(url); + yield onReset; +}); + +var reloadPageAndWaitForStyleSheets = Task.async(function* (ui) { + info("Reloading the page."); + + let onReset = ui.once("stylesheets-reset"); + let browser = gBrowser.selectedBrowser; + yield ContentTask.spawn(browser, null, "() => content.location.reload()"); + yield onReset; +}); + +/** + * Open the style editor for the current tab. + */ +var openStyleEditor = Task.async(function* (tab) { + if (!tab) { + tab = gBrowser.selectedTab; + } + let target = TargetFactory.forTab(tab); + let toolbox = yield gDevTools.showToolbox(target, "styleeditor"); + let panel = toolbox.getPanel("styleeditor"); + let ui = panel.UI; + + return { toolbox, panel, ui }; +}); + +/** + * Creates a new tab in specified window navigates it to the given URL and + * opens style editor in it. + */ +var openStyleEditorForURL = Task.async(function* (url, win) { + let tab = yield addTab(url, win); + let result = yield openStyleEditor(tab); + result.tab = tab; + return result; +}); + +/** + * Send an async message to the frame script and get back the requested + * computed style property. + * + * @param {String} selector + * The selector used to obtain the element. + * @param {String} pseudo + * pseudo id to query, or null. + * @param {String} name + * name of the property. + */ +var getComputedStyleProperty = function* (args) { + return yield ContentTask.spawn(gBrowser.selectedBrowser, args, + function ({selector, pseudo, name}) { + let element = content.document.querySelector(selector); + let style = content.getComputedStyle(element, pseudo); + return style.getPropertyValue(name); + } + ); +}; |