2013-08-01 01:53:31 -07:00
|
|
|
/* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
2010-07-30 04:30:55 -07:00
|
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
2012-05-21 04:12:37 -07:00
|
|
|
/* 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/. */
|
2010-07-30 04:30:55 -07:00
|
|
|
|
|
|
|
let doc;
|
|
|
|
let div1;
|
|
|
|
let div2;
|
|
|
|
let iframe1;
|
|
|
|
let iframe2;
|
2014-01-09 03:36:06 -08:00
|
|
|
let inspector;
|
2010-07-30 04:30:55 -07:00
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function createDocument() {
|
2010-07-30 04:30:55 -07:00
|
|
|
doc.title = "Inspector iframe Tests";
|
|
|
|
|
|
|
|
iframe1 = doc.createElement('iframe');
|
|
|
|
|
|
|
|
iframe1.addEventListener("load", function () {
|
|
|
|
iframe1.removeEventListener("load", arguments.callee, false);
|
|
|
|
|
|
|
|
div1 = iframe1.contentDocument.createElement('div');
|
|
|
|
div1.textContent = 'little div';
|
|
|
|
iframe1.contentDocument.body.appendChild(div1);
|
|
|
|
|
|
|
|
iframe2 = iframe1.contentDocument.createElement('iframe');
|
|
|
|
|
|
|
|
iframe2.addEventListener('load', function () {
|
|
|
|
iframe2.removeEventListener("load", arguments.callee, false);
|
|
|
|
|
|
|
|
div2 = iframe2.contentDocument.createElement('div');
|
|
|
|
div2.textContent = 'nested div';
|
|
|
|
iframe2.contentDocument.body.appendChild(div2);
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
// Open the inspector, start the picker mode, and start the tests
|
|
|
|
openInspector(aInspector => {
|
|
|
|
inspector = aInspector;
|
|
|
|
inspector.toolbox.startPicker().then(runTests);
|
|
|
|
});
|
2010-07-30 04:30:55 -07:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
iframe2.src = 'data:text/html,nested iframe';
|
|
|
|
iframe1.contentDocument.body.appendChild(iframe2);
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
iframe1.src = 'data:text/html,little iframe';
|
|
|
|
doc.body.appendChild(iframe1);
|
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function moveMouseOver(aElement, cb) {
|
2011-06-16 11:24:20 -07:00
|
|
|
EventUtils.synthesizeMouse(aElement, 2, 2, {type: "mousemove"},
|
|
|
|
aElement.ownerDocument.defaultView);
|
2014-01-09 03:36:06 -08:00
|
|
|
inspector.toolbox.once("picker-node-hovered", () => {
|
|
|
|
executeSoon(cb);
|
|
|
|
});
|
2011-06-16 11:24:20 -07:00
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function runTests() {
|
|
|
|
testDiv1Highlighter();
|
2010-07-30 04:30:55 -07:00
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function testDiv1Highlighter() {
|
|
|
|
moveMouseOver(div1, () => {
|
|
|
|
getHighlighterOutline().setAttribute("disable-transitions", "true");
|
|
|
|
is(getHighlitNode(), div1, "highlighter matches selection");
|
|
|
|
testDiv2Highlighter();
|
2011-11-18 03:08:51 -08:00
|
|
|
});
|
2010-07-30 04:30:55 -07:00
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function testDiv2Highlighter() {
|
|
|
|
moveMouseOver(div2, () => {
|
|
|
|
is(getHighlitNode(), div2, "highlighter matches selection");
|
|
|
|
selectRoot();
|
|
|
|
});
|
2013-07-23 14:42:12 -07:00
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function selectRoot() {
|
2013-07-23 14:42:12 -07:00
|
|
|
// Select the root document element to clear the breadcrumbs.
|
2014-01-09 03:36:06 -08:00
|
|
|
inspector.selection.setNode(doc.documentElement);
|
|
|
|
inspector.once("inspector-updated", selectIframe);
|
2013-07-23 14:42:12 -07:00
|
|
|
}
|
|
|
|
|
2014-01-09 03:36:06 -08:00
|
|
|
function selectIframe() {
|
2013-07-23 14:42:12 -07:00
|
|
|
// Directly select an element in an iframe (without navigating to it
|
|
|
|
// with mousemoves).
|
2014-01-09 03:36:06 -08:00
|
|
|
inspector.selection.setNode(div2);
|
|
|
|
inspector.once("inspector-updated", () => {
|
|
|
|
let breadcrumbs = inspector.breadcrumbs;
|
2013-07-23 14:42:12 -07:00
|
|
|
is(breadcrumbs.nodeHierarchy.length, 9, "Should have 9 items");
|
2014-01-09 03:36:06 -08:00
|
|
|
finishUp();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function finishUp() {
|
|
|
|
inspector.toolbox.stopPicker().then(() => {
|
|
|
|
doc = div1 = div2 = iframe1 = iframe2 = inspector = null;
|
|
|
|
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
|
|
|
gDevTools.closeToolbox(target);
|
|
|
|
gBrowser.removeCurrentTab();
|
2013-07-23 14:42:12 -07:00
|
|
|
finish();
|
|
|
|
});
|
2010-07-30 04:30:55 -07:00
|
|
|
}
|
|
|
|
|
2011-06-27 04:29:06 -07:00
|
|
|
function test() {
|
2010-07-30 04:30:55 -07:00
|
|
|
waitForExplicitFinish();
|
2011-06-27 04:29:06 -07:00
|
|
|
|
2010-07-30 04:30:55 -07:00
|
|
|
gBrowser.selectedTab = gBrowser.addTab();
|
|
|
|
gBrowser.selectedBrowser.addEventListener("load", function() {
|
|
|
|
gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
|
|
|
|
doc = content.document;
|
2011-06-27 04:29:06 -07:00
|
|
|
gBrowser.selectedBrowser.focus();
|
|
|
|
createDocument();
|
2010-07-30 04:30:55 -07:00
|
|
|
}, true);
|
2010-09-03 11:34:09 -07:00
|
|
|
|
2010-07-30 04:30:55 -07:00
|
|
|
content.location = "data:text/html,iframe tests for inspector";
|
|
|
|
}
|