michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function test() michael@0: { michael@0: waitForExplicitFinish(); michael@0: ignoreAllUncaughtExceptions(); michael@0: michael@0: let nodes = [ michael@0: {nodeId: "i1111", result: "i1 i11 i111 i1111"}, michael@0: {nodeId: "i22", result: "i2 i22 i221"}, michael@0: {nodeId: "i2111", result: "i2 i21 i211 i2111"}, michael@0: {nodeId: "i21", result: "i2 i21 i211 i2111"}, michael@0: {nodeId: "i22211", result: "i2 i22 i222 i2221 i22211"}, michael@0: {nodeId: "i22", result: "i2 i22 i222 i2221 i22211"}, michael@0: ]; michael@0: michael@0: let doc; michael@0: let nodes; michael@0: let cursor; michael@0: let inspector; michael@0: let target; michael@0: let panel; michael@0: let container; michael@0: michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.selectedBrowser.addEventListener("load", function onload() { michael@0: gBrowser.selectedBrowser.removeEventListener("load", onload, true); michael@0: doc = content.document; michael@0: waitForFocus(setupTest, content); michael@0: }, true); michael@0: michael@0: content.location = "http://mochi.test:8888/browser/browser/devtools/inspector/test/browser_inspector_breadcrumbs.html"; michael@0: michael@0: function setupTest() michael@0: { michael@0: for (let i = 0; i < nodes.length; i++) { michael@0: let node = doc.getElementById(nodes[i].nodeId); michael@0: nodes[i].node = node; michael@0: ok(nodes[i].node, "node " + nodes[i].nodeId + " found"); michael@0: } michael@0: michael@0: openInspector(runTests); michael@0: } michael@0: michael@0: function runTests(aInspector) michael@0: { michael@0: inspector = aInspector; michael@0: target = TargetFactory.forTab(gBrowser.selectedTab); michael@0: panel = gDevTools.getToolbox(target).getPanel("inspector"); michael@0: container = panel.panelDoc.getElementById("inspector-breadcrumbs"); michael@0: cursor = 0; michael@0: inspector.on("breadcrumbs-updated", nodeSelected); michael@0: executeSoon(function() { michael@0: inspector.selection.setNode(nodes[0].node); michael@0: }); michael@0: } michael@0: michael@0: function nodeSelected() michael@0: { michael@0: performTest(); michael@0: cursor++; michael@0: michael@0: if (cursor >= nodes.length) { michael@0: inspector.off("breadcrumbs-updated", nodeSelected); michael@0: // breadcrumbs-updated is an event that is fired before the rest of the michael@0: // inspector is updated, so there'll be hanging connections if we finish michael@0: // up before waiting for everything to end. michael@0: inspector.once("inspector-updated", finishUp); michael@0: } else { michael@0: let node = nodes[cursor].node; michael@0: inspector.selection.setNode(node); michael@0: } michael@0: } michael@0: michael@0: function performTest() michael@0: { michael@0: let buttonsLabelIds = nodes[cursor].result.split(" "); michael@0: michael@0: // html > body > … michael@0: is(container.childNodes.length, buttonsLabelIds.length + 2, "Node " + cursor + ": Items count"); michael@0: michael@0: for (let i = 2; i < container.childNodes.length; i++) { michael@0: let expectedId = "#" + buttonsLabelIds[i - 2]; michael@0: let button = container.childNodes[i]; michael@0: let labelId = button.querySelector(".breadcrumbs-widget-item-id"); michael@0: is(labelId.textContent, expectedId, "Node " + cursor + ": button " + i + " matches"); michael@0: } michael@0: michael@0: let checkedButton = container.querySelector("button[checked]"); michael@0: let labelId = checkedButton.querySelector(".breadcrumbs-widget-item-id"); michael@0: let id = inspector.selection.node.id; michael@0: is(labelId.textContent, "#" + id, "Node " + cursor + ": selection matches"); michael@0: } michael@0: michael@0: function finishUp() { michael@0: doc = nodes = inspector = null; michael@0: gBrowser.removeCurrentTab(); michael@0: finish(); michael@0: } michael@0: }