toolkit/content/tests/chrome/test_popup_keys.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="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
     5 <window title="Menu ignorekeys Test"
     6         onkeydown="keyDown()"
     7         onload="setTimeout(runTests, 0);"
     8         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    10   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>      
    11   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>      
    13 <!--
    14   This test checks that the ignorekeys attribute can be used on a menu to
    15   disable key navigation. The test is performed twice by opening the menu,
    16   simulating a cursor down key, and closing the popup. When keys are enabled,
    17   the first item on the menu should be highlighted, otherwise the first item
    18   should not be highlighted.
    19   -->
    21 <menupopup id="popup" onpopupshown="popupShown()" onpopuphidden="popupHidden()">
    22   <menuitem id="i1" label="One" onDOMAttrModified="attrModified(event)"/>
    23   <menuitem id="i2" label="Two"/>
    24   <menuitem id="i3" label="Three"/>
    25   <menuitem id="i4" label="Four"/>
    26 </menupopup>
    28 <script class="testbody" type="application/javascript">
    29 <![CDATA[
    31 SimpleTest.waitForExplicitFinish();
    33 var gIgnoreKeys = false;
    34 var gIgnoreAttrChange = false;
    36 function runTests()
    37 {
    38   var popup = $("popup");
    39   popup.enableKeyboardNavigator(false);
    40   is(popup.getAttribute("ignorekeys"), "true", "keys disabled");
    41   popup.enableKeyboardNavigator(true);
    42   is(popup.hasAttribute("ignorekeys"), false, "keys enabled");
    43   popup.openPopup(null, "after_start");
    44 }
    46 function popupShown()
    47 {
    48   synthesizeKey("VK_DOWN", { });
    49   if (gIgnoreKeys) {
    50     var popup = $("popup");
    51     setTimeout(function() { popup.hidePopup() }, 1000);
    52   }
    53 }
    55 function popupHidden()
    56 {
    57   if (gIgnoreKeys) {
    58     SimpleTest.finish();
    59   }
    60   else {
    61     // try the test again with ignorekeys set
    62     gIgnoreKeys = true;
    63     var popup = $("popup");
    64     popup.setAttribute("ignorekeys", "true");
    65     // clear this first to avoid confusion
    66     gIgnoreAttrChange = true;
    67     $("i1").removeAttribute("_moz-menuactive")
    68     gIgnoreAttrChange = false;
    69     popup.openPopup(null, "after_start");
    70   }
    71 }
    73 function attrModified(event)
    74 {
    75   if (gIgnoreAttrChange || event.attrName != "_moz-menuactive")
    76     return;
    78   // the attribute should not be changed when ignorekeys is enabled
    79   if (gIgnoreKeys) {
    80     ok(false, "move key with keys disabled");
    81   }
    82   else {
    83     is($("i1").getAttribute("_moz-menuactive"), "true", "move key with keys enabled");
    84     $("popup").hidePopup();
    85   }
    86 }
    88 function keyDown()
    89 {
    90   // when keys are enabled, the menu should have stopped propagation of the
    91   // event, so a bubbling listener for a keydown event should only occur
    92   // when keys are disabled.
    93   ok(gIgnoreKeys, "key listener fired with keys " +
    94                   (gIgnoreKeys ? "disabled" : "enabled"));
    95 }
    97 ]]>
    98 </script>
   100 <body xmlns="http://www.w3.org/1999/xhtml">
   101 <p id="display">
   102 </p>
   103 <div id="content" style="display: none">
   104 </div>
   105 <pre id="test">
   106 </pre>
   107 </body>
   109 </window>

mercurial