toolkit/content/tests/chrome/window_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.

michael@0 1 <?xml version="1.0"?>
michael@0 2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
michael@0 3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
michael@0 4
michael@0 5 <window title="Key Tests"
michael@0 6 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
michael@0 7
michael@0 8 <script type="application/javascript"
michael@0 9 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
michael@0 10 <script type="application/javascript"
michael@0 11 src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
michael@0 12
michael@0 13 <script>
michael@0 14 <![CDATA[
michael@0 15
michael@0 16 SimpleTest.waitForExplicitFinish();
michael@0 17
michael@0 18 var gExpected = null;
michael@0 19
michael@0 20 var keysToTest = [
michael@0 21 ["k-v", "V", { } ],
michael@0 22 ["", "V", { shiftKey: true } ],
michael@0 23 ["k-v-scy", "V", { ctrlKey: true } ],
michael@0 24 ["", "V", { altKey: true } ],
michael@0 25 ["", "V", { metaKey: true } ],
michael@0 26 ["", "V", { osKey: true } ],
michael@0 27 ["k-v-scy", "V", { shiftKey: true, ctrlKey: true } ],
michael@0 28 ["", "V", { shiftKey: true, ctrlKey: true, altKey: true } ],
michael@0 29 ["k-e-y", "E", { } ],
michael@0 30 ["", "E", { shiftKey: true } ],
michael@0 31 ["", "E", { ctrlKey: true } ],
michael@0 32 ["", "E", { altKey: true } ],
michael@0 33 ["", "E", { metaKey: true } ],
michael@0 34 ["", "E", { osKey: true } ],
michael@0 35 ["k-d-a", "D", { altKey: true } ],
michael@0 36 ["k-8-m", "8", { metaKey: true } ],
michael@0 37 ["", "8", { metaKey: true, osKey: true } ],
michael@0 38 ["k-a-o", "A", { osKey: true } ],
michael@0 39 ["", "A", { osKey: true, metaKey: true } ],
michael@0 40 ["k-b-myo", "B", { osKey: true } ],
michael@0 41 ["k-b-myo", "B", { osKey: true, metaKey: true } ],
michael@0 42 ["k-f-oym", "F", { metaKey: true } ],
michael@0 43 ["k-f-oym", "F", { metaKey: true, osKey: true } ],
michael@0 44 ["k-c-scaym", "C", { metaKey: true } ],
michael@0 45 ["k-c-scaym", "C", { shiftKey: true, ctrlKey: true, altKey: true, metaKey: true } ],
michael@0 46 ["", "V", { shiftKey: true, ctrlKey: true, altKey: true } ],
michael@0 47 ["k-h-l", "H", { accelKey: true } ],
michael@0 48 // ["k-j-s", "J", { accessKey: true } ],
michael@0 49 ["", "T", { } ],
michael@0 50 ["scommand", "Y", { } ],
michael@0 51 ["", "U", { } ],
michael@0 52 ];
michael@0 53
michael@0 54 function runTest()
michael@0 55 {
michael@0 56 iterateKeys(true, "normal");
michael@0 57
michael@0 58 var keyset = document.getElementById("keyset");
michael@0 59 keyset.setAttribute("disabled", "true");
michael@0 60 iterateKeys(false, "disabled");
michael@0 61
michael@0 62 var keyset = document.getElementById("keyset");
michael@0 63 keyset.removeAttribute("disabled");
michael@0 64 iterateKeys(true, "reenabled");
michael@0 65
michael@0 66 keyset.parentNode.removeChild(keyset);
michael@0 67 iterateKeys(false, "removed");
michael@0 68
michael@0 69 document.documentElement.appendChild(keyset);
michael@0 70 iterateKeys(true, "appended");
michael@0 71
michael@0 72 var accelText = function(menuitem) menuitem.getAttribute("acceltext").toLowerCase();
michael@0 73
michael@0 74 $("menubutton").open = true;
michael@0 75
michael@0 76 // now check if a menu updates its accelerator text when a key attribute is changed
michael@0 77 var menuitem1 = $("menuitem1");
michael@0 78 ok(accelText(menuitem1).indexOf("d") >= 0, "menuitem1 accelText before");
michael@0 79 if (navigator.platform.indexOf("Win") != -1) {
michael@0 80 ok(accelText(menuitem1).indexOf("alt") >= 0, "menuitem1 accelText modifier before");
michael@0 81 }
michael@0 82
michael@0 83 menuitem1.setAttribute("key", "k-s-c");
michael@0 84 ok(accelText(menuitem1).indexOf("s") >= 0, "menuitem1 accelText after");
michael@0 85 if (navigator.platform.indexOf("Win") != -1) {
michael@0 86 ok(accelText(menuitem1).indexOf("ctrl") >= 0, "menuitem1 accelText modifier after");
michael@0 87 }
michael@0 88
michael@0 89 menuitem1.setAttribute("acceltext", "custom");
michael@0 90 is(accelText(menuitem1), "custom", "menuitem1 accelText set custom");
michael@0 91 menuitem1.removeAttribute("acceltext");
michael@0 92 ok(accelText(menuitem1).indexOf("s") >= 0, "menuitem1 accelText remove");
michael@0 93 if (navigator.platform.indexOf("Win") != -1) {
michael@0 94 ok(accelText(menuitem1).indexOf("ctrl") >= 0, "menuitem1 accelText modifier remove");
michael@0 95 }
michael@0 96
michael@0 97 var menuitem2 = $("menuitem2");
michael@0 98 is(accelText(menuitem2), "", "menuitem2 accelText before");
michael@0 99 menuitem2.setAttribute("key", "k-s-c");
michael@0 100 ok(accelText(menuitem2).indexOf("s") >= 0, "menuitem2 accelText before");
michael@0 101 if (navigator.platform.indexOf("Win") != -1) {
michael@0 102 ok(accelText(menuitem2).indexOf("ctrl") >= 0, "menuitem2 accelText modifier before");
michael@0 103 }
michael@0 104
michael@0 105 menuitem2.setAttribute("key", "k-h-l");
michael@0 106 ok(accelText(menuitem2).indexOf("h") >= 0, "menuitem2 accelText after");
michael@0 107 if (navigator.platform.indexOf("Win") != -1) {
michael@0 108 ok(accelText(menuitem2).indexOf("ctrl") >= 0, "menuitem2 accelText modifier after");
michael@0 109 }
michael@0 110
michael@0 111 menuitem2.removeAttribute("key");
michael@0 112 is(accelText(menuitem2), "", "menuitem2 accelText after remove");
michael@0 113
michael@0 114 $("menubutton").open = false;
michael@0 115
michael@0 116 window.close();
michael@0 117 window.opener.wrappedJSObject.SimpleTest.finish();
michael@0 118 }
michael@0 119
michael@0 120 function iterateKeys(enabled, testid)
michael@0 121 {
michael@0 122 for (var k = 0; k < keysToTest.length; k++) {
michael@0 123 gExpected = keysToTest[k];
michael@0 124 var expectedKey = gExpected[0];
michael@0 125 if (!gExpected[2].accessKey || navigator.platform.indexOf("Mac") == -1) {
michael@0 126 synthesizeKey(gExpected[1], gExpected[2]);
michael@0 127 ok((enabled && expectedKey) || expectedKey == "k-d-a" ?
michael@0 128 !gExpected : gExpected, testid + " key step " + (k + 1));
michael@0 129 }
michael@0 130 }
michael@0 131 }
michael@0 132
michael@0 133 function checkKey(event)
michael@0 134 {
michael@0 135 // the first element of the gExpected array holds the id of the <key> element
michael@0 136 // that was expected. If this is empty, a handler wasn't expected to be called
michael@0 137 if (gExpected[0])
michael@0 138 is(event.originalTarget.id, gExpected[0], "key " + gExpected[1]);
michael@0 139 else
michael@0 140 is("key " + event.originalTarget.id + " was activated", "", "key " + gExpected[1]);
michael@0 141 gExpected = null;
michael@0 142 }
michael@0 143
michael@0 144 function is(l, r, n) { window.opener.wrappedJSObject.SimpleTest.is(l,r,n); }
michael@0 145 function ok(v, n) { window.opener.wrappedJSObject.SimpleTest.ok(v,n); }
michael@0 146
michael@0 147 SimpleTest.waitForFocus(runTest);
michael@0 148
michael@0 149 ]]>
michael@0 150 </script>
michael@0 151
michael@0 152 <command id="scommand" oncommand="checkKey(event)"/>
michael@0 153 <command id="scommand-disabled" disabled="true"/>
michael@0 154
michael@0 155 <keyset id="keyset">
michael@0 156 <key id="k-v" key="v" oncommand="checkKey(event)"/>
michael@0 157 <key id="k-v-scy" key="v" modifiers="shift any control" oncommand="checkKey(event)"/>
michael@0 158 <key id="k-e-y" key="e" modifiers="any" oncommand="checkKey(event)"/>
michael@0 159 <key id="k-8-m" key="8" modifiers="meta" oncommand="checkKey(event)"/>
michael@0 160 <key id="k-a-o" key="a" modifiers="os" oncommand="checkKey(event)"/>
michael@0 161 <key id="k-b-myo" key="b" modifiers="meta any os" oncommand="checkKey(event)"/>
michael@0 162 <key id="k-f-oym" key="f" modifiers="os any meta" oncommand="checkKey(event)"/>
michael@0 163 <key id="k-c-scaym" key="c" modifiers="shift control alt any meta" oncommand="checkKey(event)"/>
michael@0 164 <key id="k-h-l" key="h" modifiers="accel" oncommand="checkKey(event)"/>
michael@0 165 <key id="k-j-s" key="j" modifiers="access" oncommand="checkKey(event)"/>
michael@0 166 <key id="k-t-y" disabled="true" key="t" oncommand="checkKey(event)"/>
michael@0 167 <key id="k-y" key="y" command="scommand"/>
michael@0 168 <key id="k-u" key="u" command="scommand-disabled"/>
michael@0 169 </keyset>
michael@0 170
michael@0 171 <keyset id="keyset2">
michael@0 172 <key id="k-d-a" key="d" modifiers="alt" oncommand="checkKey(event)"/>
michael@0 173 <key id="k-s-c" key="s" modifiers="control" oncommand="checkKey(event)"/>
michael@0 174 </keyset>
michael@0 175
michael@0 176 <button id="menubutton" label="Menu" type="menu">
michael@0 177 <menupopup>
michael@0 178 <menuitem id="menuitem1" label="Item 1" key="k-d-a"/>
michael@0 179 <menuitem id="menuitem2" label="Item 2"/>
michael@0 180 </menupopup>
michael@0 181 </button>
michael@0 182
michael@0 183 <body xmlns="http://www.w3.org/1999/xhtml">
michael@0 184 <p id="display">
michael@0 185 </p>
michael@0 186 <div id="content" style="display: none">
michael@0 187 </div>
michael@0 188 <pre id="test">
michael@0 189 </pre>
michael@0 190 </body>
michael@0 191
michael@0 192 </window>

mercurial