toolkit/content/tests/widgets/test_contextmenu_nested.xul

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:7baad0d25383
1 <?xml version="1.0"?>
2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
3 <?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
4
5 <window title="Nested Context Menu Tests"
6 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
7
8 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
9 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
10 <script type="application/javascript" src="popup_shared.js"></script>
11
12 <menupopup id="outercontext">
13 <menuitem label="Context One"/>
14 <menu id="outercontextmenu" label="Sub">
15 <menupopup id="innercontext">
16 <menuitem id="innercontextmenu" label="Sub Context One"/>
17 </menupopup>
18 </menu>
19 </menupopup>
20
21 <menupopup id="outermain">
22 <menuitem label="One"/>
23 <menu id="outermenu" label="Sub">
24 <menupopup id="innermain">
25 <menuitem id="innermenu" label="Sub One" context="outercontext"/>
26 </menupopup>
27 </menu>
28 </menupopup>
29
30 <button label="Check"/>
31
32 <vbox id="popuparea" popup="outermain" width="20" height="20"/>
33
34 <script type="application/javascript">
35 <![CDATA[
36
37 SimpleTest.waitForExplicitFinish();
38
39 var popupTests = [
40 {
41 testname: "open outer popup",
42 events: [ "popupshowing outermain", "popupshown outermain" ],
43 test: function () synthesizeMouse($("popuparea"), 4, 4, {}),
44 result: function (testname) {
45 is($("outermain").triggerNode, $("popuparea"), testname);
46 is(document.popupNode, $("popuparea"), testname + " document.popupNode");
47 }
48 },
49 {
50 testname: "open inner popup",
51 events: [ "DOMMenuItemActive outermenu", "popupshowing innermain", "popupshown innermain" ],
52 test: function () {
53 synthesizeMouse($("outermenu"), 4, 4, { type: "mousemove" });
54 synthesizeMouse($("outermenu"), 2, 2, { type: "mousemove" });
55 },
56 result: function (testname) {
57 is($("outermain").triggerNode, $("popuparea"), testname + " outer");
58 is($("innermain").triggerNode, $("popuparea"), testname + " inner");
59 is($("outercontext").triggerNode, null, testname + " outer context");
60 is(document.popupNode, $("popuparea"), testname + " document.popupNode");
61 }
62 },
63 {
64 testname: "open outer context",
65 condition: function() { return (navigator.platform.indexOf("Mac") == -1); },
66 events: [ "popupshowing outercontext", "popupshown outercontext" ],
67 test: function () synthesizeMouse($("innermenu"), 4, 4, { type: "contextmenu", button: 2 }),
68 result: function (testname) {
69 is($("outermain").triggerNode, $("popuparea"), testname + " outer");
70 is($("innermain").triggerNode, $("popuparea"), testname + " inner");
71 is($("outercontext").triggerNode, $("innermenu"), testname + " outer context");
72 is(document.popupNode, $("innermenu"), testname + " document.popupNode");
73 }
74 },
75 {
76 testname: "open inner context",
77 condition: function() { return (navigator.platform.indexOf("Mac") == -1); },
78 events: [ "DOMMenuItemActive outercontextmenu", "popupshowing innercontext", "popupshown innercontext" ],
79 test: function () {
80 synthesizeMouse($("outercontextmenu"), 4, 4, { type: "mousemove" });
81 setTimeout(function() {
82 synthesizeMouse($("outercontextmenu"), 2, 2, { type: "mousemove" });
83 }, 1000);
84 },
85 result: function (testname) {
86 is($("outermain").triggerNode, $("popuparea"), testname + " outer");
87 is($("innermain").triggerNode, $("popuparea"), testname + " inner");
88 is($("outercontext").triggerNode, $("innermenu"), testname + " outer context");
89 is($("innercontext").triggerNode, $("innermenu"), testname + " inner context");
90 is(document.popupNode, $("innermenu"), testname + " document.popupNode");
91 }
92 },
93 {
94 testname: "close context",
95 condition: function() { return (navigator.platform.indexOf("Mac") == -1); },
96 events: [ "popuphiding innercontext", "popuphidden innercontext",
97 "popuphiding outercontext", "popuphidden outercontext",
98 "DOMMenuInactive innercontext",
99 "DOMMenuItemInactive outercontextmenu", "DOMMenuItemInactive outercontextmenu",
100 "DOMMenuInactive outercontext" ],
101 test: function () $("outercontext").hidePopup(),
102 result: function (testname) {
103 is($("outermain").triggerNode, $("popuparea"), testname + " outer");
104 is($("innermain").triggerNode, $("popuparea"), testname + " inner");
105 is($("outercontext").triggerNode, null, testname + " outer context");
106 is($("innercontext").triggerNode, null, testname + " inner context");
107 is(document.popupNode, $("popuparea"), testname + " document.popupNode");
108 }
109 },
110 {
111 testname: "hide menus",
112 events: [ "popuphiding innermain", "popuphidden innermain",
113 "popuphiding outermain", "popuphidden outermain",
114 "DOMMenuInactive innermain",
115 "DOMMenuItemInactive outermenu", "DOMMenuItemInactive outermenu",
116 "DOMMenuInactive outermain" ],
117
118 test: function () $("outermain").hidePopup(),
119 result: function (testname) {
120 is($("outermain").triggerNode, null, testname + " outer");
121 is($("innermain").triggerNode, null, testname + " inner");
122 is($("outercontext").triggerNode, null, testname + " outer context");
123 is($("innercontext").triggerNode, null, testname + " inner context");
124 is(document.popupNode, null, testname + " document.popupNode");
125 }
126 }
127 ];
128
129 SimpleTest.waitForFocus(function runTest() startPopupTests(popupTests));
130
131 ]]>
132 </script>
133
134 <body xmlns="http://www.w3.org/1999/xhtml"><p id="display"/></body>
135
136 </window>

mercurial