1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/content/tests/widgets/test_contextmenu_nested.xul Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,136 @@ 1.4 +<?xml version="1.0"?> 1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> 1.6 +<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?> 1.7 + 1.8 +<window title="Nested Context Menu Tests" 1.9 + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 1.10 + 1.11 + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> 1.13 + <script type="application/javascript" src="popup_shared.js"></script> 1.14 + 1.15 +<menupopup id="outercontext"> 1.16 + <menuitem label="Context One"/> 1.17 + <menu id="outercontextmenu" label="Sub"> 1.18 + <menupopup id="innercontext"> 1.19 + <menuitem id="innercontextmenu" label="Sub Context One"/> 1.20 + </menupopup> 1.21 + </menu> 1.22 +</menupopup> 1.23 + 1.24 +<menupopup id="outermain"> 1.25 + <menuitem label="One"/> 1.26 + <menu id="outermenu" label="Sub"> 1.27 + <menupopup id="innermain"> 1.28 + <menuitem id="innermenu" label="Sub One" context="outercontext"/> 1.29 + </menupopup> 1.30 + </menu> 1.31 +</menupopup> 1.32 + 1.33 +<button label="Check"/> 1.34 + 1.35 +<vbox id="popuparea" popup="outermain" width="20" height="20"/> 1.36 + 1.37 +<script type="application/javascript"> 1.38 +<![CDATA[ 1.39 + 1.40 +SimpleTest.waitForExplicitFinish(); 1.41 + 1.42 +var popupTests = [ 1.43 +{ 1.44 + testname: "open outer popup", 1.45 + events: [ "popupshowing outermain", "popupshown outermain" ], 1.46 + test: function () synthesizeMouse($("popuparea"), 4, 4, {}), 1.47 + result: function (testname) { 1.48 + is($("outermain").triggerNode, $("popuparea"), testname); 1.49 + is(document.popupNode, $("popuparea"), testname + " document.popupNode"); 1.50 + } 1.51 +}, 1.52 +{ 1.53 + testname: "open inner popup", 1.54 + events: [ "DOMMenuItemActive outermenu", "popupshowing innermain", "popupshown innermain" ], 1.55 + test: function () { 1.56 + synthesizeMouse($("outermenu"), 4, 4, { type: "mousemove" }); 1.57 + synthesizeMouse($("outermenu"), 2, 2, { type: "mousemove" }); 1.58 + }, 1.59 + result: function (testname) { 1.60 + is($("outermain").triggerNode, $("popuparea"), testname + " outer"); 1.61 + is($("innermain").triggerNode, $("popuparea"), testname + " inner"); 1.62 + is($("outercontext").triggerNode, null, testname + " outer context"); 1.63 + is(document.popupNode, $("popuparea"), testname + " document.popupNode"); 1.64 + } 1.65 +}, 1.66 +{ 1.67 + testname: "open outer context", 1.68 + condition: function() { return (navigator.platform.indexOf("Mac") == -1); }, 1.69 + events: [ "popupshowing outercontext", "popupshown outercontext" ], 1.70 + test: function () synthesizeMouse($("innermenu"), 4, 4, { type: "contextmenu", button: 2 }), 1.71 + result: function (testname) { 1.72 + is($("outermain").triggerNode, $("popuparea"), testname + " outer"); 1.73 + is($("innermain").triggerNode, $("popuparea"), testname + " inner"); 1.74 + is($("outercontext").triggerNode, $("innermenu"), testname + " outer context"); 1.75 + is(document.popupNode, $("innermenu"), testname + " document.popupNode"); 1.76 + } 1.77 +}, 1.78 +{ 1.79 + testname: "open inner context", 1.80 + condition: function() { return (navigator.platform.indexOf("Mac") == -1); }, 1.81 + events: [ "DOMMenuItemActive outercontextmenu", "popupshowing innercontext", "popupshown innercontext" ], 1.82 + test: function () { 1.83 + synthesizeMouse($("outercontextmenu"), 4, 4, { type: "mousemove" }); 1.84 + setTimeout(function() { 1.85 + synthesizeMouse($("outercontextmenu"), 2, 2, { type: "mousemove" }); 1.86 + }, 1000); 1.87 + }, 1.88 + result: function (testname) { 1.89 + is($("outermain").triggerNode, $("popuparea"), testname + " outer"); 1.90 + is($("innermain").triggerNode, $("popuparea"), testname + " inner"); 1.91 + is($("outercontext").triggerNode, $("innermenu"), testname + " outer context"); 1.92 + is($("innercontext").triggerNode, $("innermenu"), testname + " inner context"); 1.93 + is(document.popupNode, $("innermenu"), testname + " document.popupNode"); 1.94 + } 1.95 +}, 1.96 +{ 1.97 + testname: "close context", 1.98 + condition: function() { return (navigator.platform.indexOf("Mac") == -1); }, 1.99 + events: [ "popuphiding innercontext", "popuphidden innercontext", 1.100 + "popuphiding outercontext", "popuphidden outercontext", 1.101 + "DOMMenuInactive innercontext", 1.102 + "DOMMenuItemInactive outercontextmenu", "DOMMenuItemInactive outercontextmenu", 1.103 + "DOMMenuInactive outercontext" ], 1.104 + test: function () $("outercontext").hidePopup(), 1.105 + result: function (testname) { 1.106 + is($("outermain").triggerNode, $("popuparea"), testname + " outer"); 1.107 + is($("innermain").triggerNode, $("popuparea"), testname + " inner"); 1.108 + is($("outercontext").triggerNode, null, testname + " outer context"); 1.109 + is($("innercontext").triggerNode, null, testname + " inner context"); 1.110 + is(document.popupNode, $("popuparea"), testname + " document.popupNode"); 1.111 + } 1.112 +}, 1.113 +{ 1.114 + testname: "hide menus", 1.115 + events: [ "popuphiding innermain", "popuphidden innermain", 1.116 + "popuphiding outermain", "popuphidden outermain", 1.117 + "DOMMenuInactive innermain", 1.118 + "DOMMenuItemInactive outermenu", "DOMMenuItemInactive outermenu", 1.119 + "DOMMenuInactive outermain" ], 1.120 + 1.121 + test: function () $("outermain").hidePopup(), 1.122 + result: function (testname) { 1.123 + is($("outermain").triggerNode, null, testname + " outer"); 1.124 + is($("innermain").triggerNode, null, testname + " inner"); 1.125 + is($("outercontext").triggerNode, null, testname + " outer context"); 1.126 + is($("innercontext").triggerNode, null, testname + " inner context"); 1.127 + is(document.popupNode, null, testname + " document.popupNode"); 1.128 + } 1.129 +} 1.130 +]; 1.131 + 1.132 +SimpleTest.waitForFocus(function runTest() startPopupTests(popupTests)); 1.133 + 1.134 +]]> 1.135 +</script> 1.136 + 1.137 +<body xmlns="http://www.w3.org/1999/xhtml"><p id="display"/></body> 1.138 + 1.139 +</window>