test_keys.xhtml (3846B)
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" 4 type="text/css"?> 5 6 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 7 xmlns:html="http://www.w3.org/1999/xhtml" 8 title="Accessible XUL access keys and shortcut keys tests"> 9 10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> 11 12 <script type="application/javascript" 13 src="../common.js" /> 14 <script type="application/javascript" 15 src="../events.js" /> 16 17 <script type="application/javascript"> 18 <![CDATA[ 19 SimpleTest.requestCompleteLog(); // To help diagnose bug 1845221 20 21 function openMenu(aMenuID, aMenuitemID) 22 { 23 this.menuNode = getNode(aMenuID); 24 this.menuitemNode = getNode(aMenuitemID); 25 26 this.eventSeq = [ 27 new invokerChecker(EVENT_FOCUS, this.menuNode) 28 ]; 29 30 this.invoke = function openMenu_invoke() 31 { 32 // Show menu. 33 this.menuNode.open = true; 34 } 35 36 this.finalCheck = function openMenu_finalCheck() 37 { 38 var menu = getAccessible(aMenuID); 39 is(menu.accessKey, (MAC ? "u" : "Alt+u"), 40 "Wrong accesskey on " + prettyName(this.menuitemNode)); 41 42 var menuitem = getAccessible(aMenuitemID); 43 is(menuitem.accessKey, "p", 44 "Wrong accesskey on " + prettyName(this.menuitemNode)); 45 is(menuitem.keyboardShortcut, (MAC ? "⌃l" : "Ctrl+l"), 46 "Wrong keyboard shortcut on " + prettyName(this.menuitemNode)); 47 } 48 49 this.getID = function openMenu_getID() 50 { 51 return "menuitem accesskey and shortcut test " + 52 prettyName(this.menuItemNode); 53 } 54 } 55 56 var gQueue = null; 57 function doTest() 58 { 59 // HTML element should get accessKey from associated XUL label. 60 let input = getAccessible("input"); 61 is(input.accessKey, (MAC ? "⌃⌥i" : "Alt+Shift+i"), 62 "Wrong accessKey on input"); 63 64 // Test accessKey on HTML element inside shadow DOM. 65 let shadowButton = getAccessible( 66 document.getElementById("buttonShadow").shadowRoot.firstElementChild); 67 is(shadowButton.accessKey, (MAC ? "⌃⌥t" : "Alt+Shift+t"), 68 "Wrong accessKey on shadow button"); 69 70 gQueue = new eventQueue(); 71 gQueue.push(new openMenu("menu", "menuitem")); 72 gQueue.invoke(); // Will call SimpleTest.finish(); 73 } 74 75 SimpleTest.waitForExplicitFinish(); 76 addA11yLoadEvent(doTest); 77 ]]> 78 </script> 79 80 <hbox flex="1" style="overflow: auto;"> 81 <body xmlns="http://www.w3.org/1999/xhtml"> 82 <a target="_blank" rel="opener" 83 href="https://bugzilla.mozilla.org/show_bug.cgi?id=672092" 84 title="Reorganize access key and keyboard shortcut handling code"> 85 Mozilla Bug 672092 86 </a><br/> 87 <p id="display"></p> 88 <div id="content" style="display: none"> 89 </div> 90 <pre id="test"> 91 </pre> 92 </body> 93 94 <vbox flex="1"> 95 <label control="input" accesskey="i">input</label> 96 <html:input id="input"/> 97 98 <html:div id="buttonShadow"/> 99 <script> 100 <![CDATA[ 101 let host = document.getElementById("buttonShadow"); 102 let shadow = host.attachShadow({mode: "open"}); 103 let button = document.createElement("button"); 104 button.setAttribute("accesskey", "t"); 105 shadow.append(button); 106 ]]> 107 </script> 108 109 <keyset> 110 <key key="l" modifiers="control" id="key1"/> 111 </keyset> 112 113 <menubar> 114 <menu label="menu" id="menu" accesskey="u"> 115 <menupopup> 116 <menuitem accesskey="p" key="key1" label="item1" id="menuitem"/> 117 </menupopup> 118 </menu> 119 </menubar> 120 121 <vbox id="debug"/> 122 </vbox> 123 </hbox> 124 125 </window>