gecko-dev/devtools/client/framework/test/browser_toolbox_hosts.js
Lin Clark 06ca447288 Bug 1245667 - Use standard license boilerplate in framework js files. r=bgrins
MozReview-Commit-ID: 31xbv6rirPg

--HG--
extra : rebase_source : 1afbc68083aa0bdf6b7a674c39a0ac3e839756d6
2016-02-16 16:14:53 -08:00

140 lines
4.3 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
var {Toolbox} = require("devtools/client/framework/toolbox");
var {SIDE, BOTTOM, WINDOW} = Toolbox.HostType;
var toolbox, target;
const URL = "data:text/html;charset=utf8,test for opening toolbox in different hosts";
add_task(function* runTest() {
info("Create a test tab and open the toolbox");
let tab = yield addTab(URL);
target = TargetFactory.forTab(tab);
toolbox = yield gDevTools.showToolbox(target, "webconsole");
yield testBottomHost();
yield testSidebarHost();
yield testWindowHost();
yield testToolSelect();
yield testDestroy();
yield testRememberHost();
yield testPreviousHost();
yield toolbox.destroy();
toolbox = target = null;
gBrowser.removeCurrentTab();
});
function* testBottomHost() {
checkHostType(toolbox, BOTTOM);
// test UI presence
let nbox = gBrowser.getNotificationBox();
let iframe = document.getAnonymousElementByAttribute(nbox, "class", "devtools-toolbox-bottom-iframe");
ok(iframe, "toolbox bottom iframe exists");
checkToolboxLoaded(iframe);
}
function* testSidebarHost() {
yield toolbox.switchHost(SIDE);
checkHostType(toolbox, SIDE);
// test UI presence
let nbox = gBrowser.getNotificationBox();
let bottom = document.getAnonymousElementByAttribute(nbox, "class", "devtools-toolbox-bottom-iframe");
ok(!bottom, "toolbox bottom iframe doesn't exist");
let iframe = document.getAnonymousElementByAttribute(nbox, "class", "devtools-toolbox-side-iframe");
ok(iframe, "toolbox side iframe exists");
checkToolboxLoaded(iframe);
}
function* testWindowHost() {
yield toolbox.switchHost(WINDOW);
checkHostType(toolbox, WINDOW);
let nbox = gBrowser.getNotificationBox();
let sidebar = document.getAnonymousElementByAttribute(nbox, "class", "devtools-toolbox-side-iframe");
ok(!sidebar, "toolbox sidebar iframe doesn't exist");
let win = Services.wm.getMostRecentWindow("devtools:toolbox");
ok(win, "toolbox separate window exists");
let iframe = win.document.getElementById("toolbox-iframe");
checkToolboxLoaded(iframe);
}
function* testToolSelect() {
// make sure we can load a tool after switching hosts
yield toolbox.selectTool("inspector");
}
function* testDestroy() {
yield toolbox.destroy();
target = TargetFactory.forTab(gBrowser.selectedTab);
toolbox = yield gDevTools.showToolbox(target);
}
function* testRememberHost() {
// last host was the window - make sure it's the same when re-opening
is(toolbox.hostType, WINDOW, "host remembered");
let win = Services.wm.getMostRecentWindow("devtools:toolbox");
ok(win, "toolbox separate window exists");
}
function* testPreviousHost() {
// last host was the window - make sure it's the same when re-opening
is(toolbox.hostType, WINDOW, "host remembered");
info("Switching to side");
yield toolbox.switchHost(SIDE);
checkHostType(toolbox, SIDE, WINDOW);
info("Switching to bottom");
yield toolbox.switchHost(BOTTOM);
checkHostType(toolbox, BOTTOM, SIDE);
info("Switching from bottom to side");
yield toolbox.switchToPreviousHost();
checkHostType(toolbox, SIDE, BOTTOM);
info("Switching from side to bottom");
yield toolbox.switchToPreviousHost();
checkHostType(toolbox, BOTTOM, SIDE);
info("Switching to window");
yield toolbox.switchHost(WINDOW);
checkHostType(toolbox, WINDOW, BOTTOM);
info("Switching from window to bottom");
yield toolbox.switchToPreviousHost();
checkHostType(toolbox, BOTTOM, WINDOW);
info("Forcing the previous host to match the current (bottom)")
Services.prefs.setCharPref("devtools.toolbox.previousHost", BOTTOM);
info("Switching from bottom to side (since previous=current=bottom");
yield toolbox.switchToPreviousHost();
checkHostType(toolbox, SIDE, BOTTOM);
info("Forcing the previous host to match the current (side)")
Services.prefs.setCharPref("devtools.toolbox.previousHost", SIDE);
info("Switching from side to bottom (since previous=current=side");
yield toolbox.switchToPreviousHost();
checkHostType(toolbox, BOTTOM, SIDE);
}
function checkToolboxLoaded(iframe) {
let tabs = iframe.contentDocument.getElementById("toolbox-tabs");
ok(tabs, "toolbox UI has been loaded into iframe");
}