1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test that the add node button and context menu items have the right state
// depending on the current selection.
const TEST_URL = URL_ROOT + "doc_inspector_add_node.html";
add_task(async function() {
const { inspector } = await openInspectorForURL(TEST_URL);
info("Select the DOCTYPE element");
let { nodes } = await inspector.walker.children(inspector.walker.rootNode);
await selectNode(nodes[0], inspector);
assertState(false, inspector, "The button and item are disabled on DOCTYPE");
info("Select the ::before pseudo-element");
const body = await getNodeFront("body", inspector);
({ nodes } = await inspector.walker.children(body));
await selectNode(nodes[0], inspector);
assertState(
false,
inspector,
"The button and item are disabled on a pseudo-element"
);
info("Select the svg element");
await selectNode("svg", inspector);
assertState(
false,
inspector,
"The button and item are disabled on a SVG element"
);
info("Select the div#foo element");
await selectNode("#foo", inspector);
assertState(
true,
inspector,
"The button and item are enabled on a DIV element"
);
info("Select the documentElement element (html)");
await selectNode("html", inspector);
assertState(
false,
inspector,
"The button and item are disabled on the documentElement"
);
info("Select the iframe element");
await selectNode("iframe", inspector);
assertState(
false,
inspector,
"The button and item are disabled on an IFRAME element"
);
});
function assertState(isEnabled, inspector, desc) {
const doc = inspector.panelDoc;
const btn = doc.querySelector("#inspector-element-add-button");
// Force an update of the context menu to make sure menu items are updated
// according to the current selection. This normally happens when the menu is
// opened, but for the sake of this test's simplicity, we directly call the
// private update function instead.
const allMenuItems = openContextMenuAndGetAllItems(inspector);
const menuItem = allMenuItems.find(item => item.id === "node-menu-add");
ok(menuItem, "The item is in the menu");
is(!menuItem.disabled, isEnabled, desc);
is(!btn.hasAttribute("disabled"), isEnabled, desc);
}
|