diff -r 000000000000 -r 6474c204b198 browser/devtools/layoutview/test/head.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/layoutview/test/head.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,87 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +Cu.import("resource://gre/modules/Task.jsm"); + +let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); +const {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {}); +let TargetFactory = devtools.TargetFactory; + +Services.prefs.setBoolPref("devtools.inspector.sidebarOpen", true); +Services.prefs.setIntPref("devtools.toolbox.footer.height", 350); +gDevTools.testing = true; +SimpleTest.registerCleanupFunction(() => { + Services.prefs.clearUserPref("devtools.inspector.sidebarOpen"); + Services.prefs.clearUserPref("devtools.toolbox.footer.height"); + gDevTools.testing = false; +}); + +// All tests are async in general +waitForExplicitFinish(); + +function loadTab(url) { + let deferred = promise.defer(); + + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", function onload() { + gBrowser.selectedBrowser.removeEventListener("load", onload, true); + waitForFocus(function() { + deferred.resolve(content); + }, content); + }, true); + + content.location = url; + + return deferred.promise; +} + +function selectNode(aNode) { + info("selecting node"); + let onSelect = inspector.once("layoutview-updated"); + inspector.selection.setNode(aNode, "test"); + return onSelect.then(() => { + let view = inspector.sidebar.getWindowForTab("layoutview"); + ok(!!view.layoutview, "LayoutView document is alive."); + + return view; + }); +} + +function waitForUpdate() { + return inspector.once("layoutview-updated"); +} + +function asyncTest(testfunc) { + return Task.async(function*() { + let initialTab = gBrowser.selectedTab; + + yield testfunc(); + + // Remove all tabs except for the initial tab. This is basically + // gBrowser.removeAllTabsBut without the animation + let tabs = gBrowser.visibleTabs; + gBrowser.selectedTab = initialTab; + for (let i = tabs.length - 1; i >= 0; i--) { + if (tabs[i] != initialTab) + gBrowser.removeTab(tabs[i]); + } + + // Reset the sidebar back to the default + Services.prefs.setCharPref("devtools.inspector.activeSidebar", "ruleview"); + + finish(); + }); +} + +var TESTS = []; + +function addTest(message, func) { + TESTS.push([message, Task.async(func)]) +} + +var runTests = Task.async(function*() { + for (let [message, test] of TESTS) { + info(message); + yield test(); + } +});