toolkit/content/tests/widgets/test_contextmenu_nested.xul

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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"?>
     5 <window title="Nested Context Menu Tests"
     6         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     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>
    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>
    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>
    30 <button label="Check"/>
    32 <vbox id="popuparea" popup="outermain" width="20" height="20"/>
    34 <script type="application/javascript">
    35 <![CDATA[
    37 SimpleTest.waitForExplicitFinish();
    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" ],
   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 ];
   129 SimpleTest.waitForFocus(function runTest() startPopupTests(popupTests));
   131 ]]>
   132 </script>
   134 <body xmlns="http://www.w3.org/1999/xhtml"><p id="display"/></body>
   136 </window>

mercurial