/toolkit/content/tests/widgets/test_contextmenu_nested.xul

http://github.com/zpao/v8monkey · Unknown · 134 lines · 120 code · 14 blank · 0 comment · 0 complexity · 01b24f9f215274121c77d83a89664fb9 MD5 · raw file

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