accessible/tests/mochitest/jsat/test_output.html

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 <!DOCTYPE HTML>
michael@0 2 <html>
michael@0 3 <!--
michael@0 4 https://bugzilla.mozilla.org/show_bug.cgi?id=753984
michael@0 5 -->
michael@0 6 <head>
michael@0 7 <title>[AccessFu] utterance order test</title>
michael@0 8 <meta charset="utf-8">
michael@0 9 <link rel="stylesheet" type="text/css"
michael@0 10 href="chrome://mochikit/content/tests/SimpleTest/test.css" />
michael@0 11 <script type="application/javascript"
michael@0 12 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
michael@0 13 <script type="application/javascript"
michael@0 14 src="../common.js"></script>
michael@0 15 <script type="application/javascript"
michael@0 16 src="./output.js"></script>
michael@0 17 <script type="application/javascript">
michael@0 18
michael@0 19 function doTest() {
michael@0 20 // Test the following accOrElmOrID (with optional old accOrElmOrID).
michael@0 21 // Note: each accOrElmOrID entry maps to a unique object utterance
michael@0 22 // generator function within the UtteranceGenerator.
michael@0 23 var tests = [{
michael@0 24 accOrElmOrID: "anchor",
michael@0 25 expectedUtterance: [["link", "title"], ["title", "link"]],
michael@0 26 expectedBraille: [["lnk", "title"], ["title", "lnk"]]
michael@0 27 }, {
michael@0 28 accOrElmOrID: "anchor_titleandtext",
michael@0 29 expectedUtterance: [["link", "goes to the tests -", "Tests"],
michael@0 30 ["Tests", "- goes to the tests", "link"]],
michael@0 31 expectedBraille: [["lnk", "goes to the tests -", "Tests"],
michael@0 32 ["Tests", "- goes to the tests", "lnk"]],
michael@0 33 }, {
michael@0 34 accOrElmOrID: "anchor_duplicatedtitleandtext",
michael@0 35 expectedUtterance: [["link", "Tests"], ["Tests", "link"]],
michael@0 36 expectedBraille: [["lnk", "Tests"], ["Tests", "lnk"]]
michael@0 37 }, {
michael@0 38 accOrElmOrID: "anchor_arialabelandtext",
michael@0 39 expectedUtterance: [["link", "goes to the tests - Tests"],
michael@0 40 ["Tests - goes to the tests", "link"]],
michael@0 41 expectedBraille: [["lnk", "goes to the tests - Tests"],
michael@0 42 ["Tests - goes to the tests", "lnk"]],
michael@0 43 }, {
michael@0 44 accOrElmOrID: "textarea",
michael@0 45 expectedUtterance: [[
michael@0 46 "text area", "This is the text area text."
michael@0 47 ], [
michael@0 48 "This is the text area text.", "text area"
michael@0 49 ],],
michael@0 50 expectedBraille: [[
michael@0 51 "txtarea", "This is the text area text."
michael@0 52 ], [
michael@0 53 "This is the text area text.", "txtarea"
michael@0 54 ],],
michael@0 55 }, {
michael@0 56 accOrElmOrID: "heading",
michael@0 57 expectedUtterance: [
michael@0 58 ["heading level 1", "Test heading"],
michael@0 59 ["Test heading", "heading level 1"]
michael@0 60 ],
michael@0 61 expectedBraille: [
michael@0 62 ["heading", "Test heading"],
michael@0 63 ["Test heading", "heading"]
michael@0 64 ]
michael@0 65 }, {
michael@0 66 accOrElmOrID: "list",
michael@0 67 expectedUtterance: [
michael@0 68 ["list 1 item", "First item", "1.", "list one"],
michael@0 69 ["1.", "list one", "First item", "list 1 item"]
michael@0 70 ],
michael@0 71 expectedBraille: [
michael@0 72 ["list", "list one"],
michael@0 73 ["list one", "list"]
michael@0 74 ]
michael@0 75 }, {
michael@0 76 accOrElmOrID: "dlist",
michael@0 77 expectedUtterance: [
michael@0 78 ["definition list 0.5 items", "dd one"],
michael@0 79 ["dd one", "definition list 0.5 items"]
michael@0 80 ],
michael@0 81 expectedBraille: [
michael@0 82 ["definition list", "dd one"],
michael@0 83 ["dd one", "definition list"]
michael@0 84 ]
michael@0 85 }, {
michael@0 86 accOrElmOrID: "li_one",
michael@0 87 expectedUtterance: [
michael@0 88 ["list 1 item", "First item", "1.", "list one"],
michael@0 89 ["1.", "list one", "First item", "list 1 item"]
michael@0 90 ],
michael@0 91 expectedBraille: [
michael@0 92 ["1.", "list one"],
michael@0 93 ["1.", "list one"]
michael@0 94 ]
michael@0 95 }, {
michael@0 96 accOrElmOrID: "cell",
michael@0 97 expectedUtterance: [[
michael@0 98 "table with 1 column and 1 row", "Fruits and vegetables",
michael@0 99 "Column 1 Row 1", "list 4 items", "First item", "link", "Apples",
michael@0 100 "link", "Bananas", "link", "Peaches", "Last item", "link", "Plums"
michael@0 101 ], [
michael@0 102 "Apples", "link", "First item", "Bananas", "link", "Peaches",
michael@0 103 "link", "Plums", "link", "Last item", "list 4 items",
michael@0 104 "Column 1 Row 1", "Fruits and vegetables",
michael@0 105 "table with 1 column and 1 row"
michael@0 106 ]],
michael@0 107 expectedBraille: [[
michael@0 108 "c1r1", "list", "lnk", "Apples", "lnk", "Bananas", "lnk",
michael@0 109 "Peaches", "lnk", "Plums"
michael@0 110 ], [
michael@0 111 "Apples", "lnk", "Bananas", "lnk", "Peaches", "lnk", "Plums",
michael@0 112 "lnk", "list", "c1r1"
michael@0 113 ]]
michael@0 114 }, {
michael@0 115 accOrElmOrID: "date",
michael@0 116 expectedUtterance: [["date entry", "2011-09-29"], ["2011-09-29", "date entry"]],
michael@0 117 expectedBraille: [["date entry", "2011-09-29"], ["2011-09-29", "date entry"]]
michael@0 118 }, {
michael@0 119 accOrElmOrID: "email",
michael@0 120 expectedUtterance: [
michael@0 121 ["e-mail entry", "test@example.com"],
michael@0 122 ["test@example.com", "e-mail entry"]
michael@0 123 ],
michael@0 124 expectedBraille: [
michael@0 125 ["e-mail entry", "test@example.com"],
michael@0 126 ["test@example.com", "e-mail entry"]
michael@0 127 ]
michael@0 128 }, {
michael@0 129 accOrElmOrID: "search",
michael@0 130 expectedUtterance: [
michael@0 131 ["search entry", "This is a search"],
michael@0 132 ["This is a search", "search entry"]
michael@0 133 ],
michael@0 134 expectedBraille: [
michael@0 135 ["search entry", "This is a search"],
michael@0 136 ["This is a search", "search entry"]
michael@0 137 ]
michael@0 138 }, {
michael@0 139 accOrElmOrID: "tel",
michael@0 140 expectedUtterance: [
michael@0 141 ["telephone entry", "555-5555"], ["555-5555", "telephone entry"]
michael@0 142 ],
michael@0 143 expectedBraille: [
michael@0 144 ["telephone entry", "555-5555"], ["555-5555", "telephone entry"]
michael@0 145 ]
michael@0 146 }, {
michael@0 147 accOrElmOrID: "url",
michael@0 148 expectedUtterance: [
michael@0 149 ["URL entry", "http://example.com"],
michael@0 150 ["http://example.com", "URL entry"]
michael@0 151 ],
michael@0 152 expectedBraille: [
michael@0 153 ["URL entry", "http://example.com"],
michael@0 154 ["http://example.com", "URL entry"]
michael@0 155 ]
michael@0 156 }, {
michael@0 157 accOrElmOrID: "textInput",
michael@0 158 expectedUtterance: [["entry", "This is text."], ["This is text.", "entry"]],
michael@0 159 expectedBraille: [["entry", "This is text."], ["This is text.", "entry"]]
michael@0 160 }, {
michael@0 161 // Test pivot to list from li_one.
michael@0 162 accOrElmOrID: "list",
michael@0 163 oldAccOrElmOrID: "li_one",
michael@0 164 expectedUtterance: [
michael@0 165 ["list 1 item", "First item", "1.", "list one"],
michael@0 166 ["1.", "list one", "First item", "list 1 item"]
michael@0 167 ],
michael@0 168 expectedBraille: [
michael@0 169 ["list", "list one"],
michael@0 170 ["list one", "list"]
michael@0 171 ]
michael@0 172 }, {
michael@0 173 // Test pivot to "apples" link from the table cell.
michael@0 174 accOrElmOrID: "apples",
michael@0 175 oldAccOrElmOrID: "cell",
michael@0 176 expectedUtterance: [
michael@0 177 ["list 4 items", "First item", "link", "Apples"],
michael@0 178 ["Apples", "link", "First item", "list 4 items"]
michael@0 179 ],
michael@0 180 expectedBraille: [
michael@0 181 ["*", "lnk", "Apples"],
michael@0 182 ["*", "Apples", "lnk"]
michael@0 183 ]
michael@0 184 }, {
michael@0 185 // Test pivot to 'bananas' link from 'apples' link.
michael@0 186 accOrElmOrID: "bananas",
michael@0 187 oldAccOrElmOrID: "apples",
michael@0 188 expectedUtterance: [["link", "Bananas"], ["Bananas", "link"]],
michael@0 189 expectedBraille: [["*", "lnk", "Bananas"], ["*", "Bananas", "lnk"]]
michael@0 190 }, {
michael@0 191 // test unavailable state utterance
michael@0 192 accOrElmOrID: 'unavailableButton',
michael@0 193 expectedUtterance: [["unavailable button", "I am unavailable"],
michael@0 194 ["I am unavailable", "unavailable button"]],
michael@0 195 expectedBraille: [["btn", "I am unavailable"],
michael@0 196 ["I am unavailable", "btn"]]
michael@0 197 }, {
michael@0 198 // test expanded state utterance
michael@0 199 accOrElmOrID: 'expandedButton',
michael@0 200 expectedUtterance: [["expanded button", "I am expanded"],
michael@0 201 ["I am expanded", "expanded button"]],
michael@0 202 expectedBraille: [["btn", "I am expanded"],
michael@0 203 ["I am expanded", "btn"]]
michael@0 204 }, {
michael@0 205 // test collapsed state utterance
michael@0 206 accOrElmOrID: 'collapsedButton',
michael@0 207 expectedUtterance: [["collapsed button", "I am collapsed"],
michael@0 208 ["I am collapsed", "collapsed button"]],
michael@0 209 expectedBraille: [["btn", "I am collapsed"],
michael@0 210 ["I am collapsed", "btn"]]
michael@0 211 }, {
michael@0 212 // test required state utterance
michael@0 213 accOrElmOrID: 'requiredInput',
michael@0 214 expectedUtterance: [["required entry", "I am required"],
michael@0 215 ["I am required", "required entry"]],
michael@0 216 expectedBraille: [["entry", "I am required"],
michael@0 217 ["I am required", "entry"]]
michael@0 218 }, {
michael@0 219 // test has popup state utterance
michael@0 220 accOrElmOrID: 'hasPopupButton',
michael@0 221 expectedUtterance: [["has pop up button menu", "I have a popup"],
michael@0 222 ["I have a popup", "has pop up button menu"]],
michael@0 223 expectedBraille: [["button menu", "I have a popup"],
michael@0 224 ["I have a popup", "button menu"]]
michael@0 225 }, {
michael@0 226 // Test selected tab
michael@0 227 accOrElmOrID: 'tab1',
michael@0 228 expectedUtterance: [['tab list', 'selected tab 1 of 2', 'Account'],
michael@0 229 ['Account', 'selected tab 1 of 2', 'tab list']],
michael@0 230 expectedBraille: [['tab 1 of 2', 'Account'],
michael@0 231 ['Account', 'tab 1 of 2']]
michael@0 232 }, {
michael@0 233 // Test unselected tab
michael@0 234 accOrElmOrID: 'tab2',
michael@0 235 expectedUtterance: [['tab list', 'tab 2 of 2', 'Advanced'],
michael@0 236 ['Advanced', 'tab 2 of 2', 'tab list']],
michael@0 237 expectedBraille: [['tab 2 of 2', 'Advanced'],
michael@0 238 ['Advanced', 'tab 2 of 2']]
michael@0 239 },
michael@0 240
michael@0 241 {
michael@0 242 // Landing on this label should mimic landing on the checkbox.
michael@0 243 accOrElmOrID: "label1",
michael@0 244 expectedUtterance: [['not checked check button', 'Orange'],
michael@0 245 ['Orange', 'not checked check button']],
michael@0 246 expectedBraille: [['( )', 'Orange'],
michael@0 247 ['Orange', '( )']]
michael@0 248 },
michael@0 249 {
michael@0 250 // Here we get a top-level view of the form.
michael@0 251 accOrElmOrID: "form1",
michael@0 252 expectedUtterance: [['label', 'not checked check button', 'Orange', 'Orange',
michael@0 253 'not checked check button', 'Blue', 'label', 'Blue'],
michael@0 254 ['Orange', 'not checked check button', 'Orange', 'label',
michael@0 255 'Blue', 'not checked check button', 'Blue', 'label']],
michael@0 256 expectedBraille: [['label', '( )', 'Orange', 'Orange',
michael@0 257 '( )', 'Blue', 'label', 'Blue'],
michael@0 258 ['Orange', '( )', 'Orange', 'label',
michael@0 259 'Blue', '( )', 'Blue', 'label']]
michael@0 260 },
michael@0 261 {
michael@0 262 // This is a non-nesting label.
michael@0 263 accOrElmOrID: "label2",
michael@0 264 expectedUtterance: [['label', 'Blue'], ['Blue', 'label']],
michael@0 265 expectedBraille: [['label', 'Blue'], ['Blue', 'label']]
michael@0 266 },
michael@0 267 {
michael@0 268 // This is a distinct control.
michael@0 269 accOrElmOrID: "input2",
michael@0 270 expectedUtterance: [['not checked check button', 'Blue'],
michael@0 271 ['Blue', 'not checked check button']],
michael@0 272 expectedBraille: [['( )', 'Blue'],
michael@0 273 ['Blue', '( )']]
michael@0 274 },
michael@0 275 {
michael@0 276 // This is a nested control.
michael@0 277 accOrElmOrID: "input1",
michael@0 278 expectedUtterance: [['not checked check button', 'Orange'],
michael@0 279 ['Orange', 'not checked check button']],
michael@0 280 expectedBraille: [['( )', 'Orange'],
michael@0 281 ['Orange', '( )']]
michael@0 282 },
michael@0 283 {
michael@0 284 // Landing on this label should mimic landing on the entry.
michael@0 285 accOrElmOrID: "label3",
michael@0 286 expectedUtterance: [['entry', 'Joe', 'First name:'],
michael@0 287 ['First name:', 'Joe', 'entry']],
michael@0 288 expectedBraille: [['entry', 'Joe', 'First name:'],
michael@0 289 ['First name:', 'Joe', 'entry']]
michael@0 290 },
michael@0 291 {
michael@0 292 // This is a nested control with a value.
michael@0 293 accOrElmOrID: "input3",
michael@0 294 expectedUtterance: [['entry', 'Joe', 'First name:'],
michael@0 295 ['First name:', 'Joe', 'entry']],
michael@0 296 expectedBraille: [['entry', 'Joe', 'First name:'],
michael@0 297 ['First name:', 'Joe', 'entry']]
michael@0 298 },
michael@0 299 {
michael@0 300 // This is a nested control with a value.
michael@0 301 accOrElmOrID: "input4",
michael@0 302 expectedUtterance: [['slider', '3', 'Points:'],
michael@0 303 ['Points:', '3', 'slider']],
michael@0 304 expectedBraille: [['slider', '3', 'Points:'],
michael@0 305 ['Points:', '3', 'slider']]
michael@0 306 },{
michael@0 307 accOrElmOrID: "password",
michael@0 308 expectedUtterance: [["password text", "Secret Password"],
michael@0 309 ["Secret Password", "password text"]],
michael@0 310 expectedBraille: [["passwdtxt", "Secret Password"],
michael@0 311 ["Secret Password", "passwdtxt"]]
michael@0 312 },{
michael@0 313 accOrElmOrID: "input5",
michael@0 314 expectedUtterance: [["checked check button", "Boring label"],
michael@0 315 ["Boring label", "checked check button"]],
michael@0 316 expectedBraille: [["(x)", "Boring label"],
michael@0 317 ["Boring label", "(x)"]]
michael@0 318 },{
michael@0 319 accOrElmOrID: "radio_unselected",
michael@0 320 expectedUtterance: [["not checked radio button", "any old radio button"],
michael@0 321 ["any old radio button", "not checked radio button"]],
michael@0 322 expectedBraille: [["( )", "any old radio button"],
michael@0 323 ["any old radio button", "( )"]]
michael@0 324 },{
michael@0 325 accOrElmOrID: "radio_selected",
michael@0 326 expectedUtterance: [["checked radio button", "a unique radio button"],
michael@0 327 ["a unique radio button", "checked radio button"]],
michael@0 328 expectedBraille: [["(x)", "a unique radio button"],
michael@0 329 ["a unique radio button", "(x)"]]
michael@0 330 },{
michael@0 331 accOrElmOrID: "togglebutton_notpressed",
michael@0 332 expectedUtterance: [["toggle button", "I ain't pressed"],
michael@0 333 ["I ain't pressed", "toggle button"]],
michael@0 334 expectedBraille: [["( )", "I ain't pressed"],
michael@0 335 ["I ain't pressed", "( )"]]
michael@0 336 },{
michael@0 337 accOrElmOrID: "togglebutton_pressed",
michael@0 338 expectedUtterance: [["pressed toggle button", "I am pressed!"],
michael@0 339 ["I am pressed!", "pressed toggle button"]],
michael@0 340 expectedBraille: [["(x)", "I am pressed!"],
michael@0 341 ["I am pressed!", "(x)"]]
michael@0 342 }
michael@0 343 ];
michael@0 344
michael@0 345 // Test all possible utterance order preference values.
michael@0 346 tests.forEach(function run(test) {
michael@0 347 var utteranceOrderValues = [0, 1];
michael@0 348 utteranceOrderValues.forEach(
michael@0 349 function testUtteranceOrder(utteranceOrder) {
michael@0 350 SpecialPowers.setIntPref(PREF_UTTERANCE_ORDER, utteranceOrder);
michael@0 351 testOutput(test.expectedUtterance[utteranceOrder],
michael@0 352 test.accOrElmOrID, test.oldAccOrElmOrID, 1);
michael@0 353 testOutput(test.expectedBraille[utteranceOrder],
michael@0 354 test.accOrElmOrID, test.oldAccOrElmOrID, 0);
michael@0 355 }
michael@0 356 );
michael@0 357 });
michael@0 358
michael@0 359 // If there was an original utterance order preference, revert to it.
michael@0 360 SpecialPowers.clearUserPref(PREF_UTTERANCE_ORDER);
michael@0 361 SimpleTest.finish();
michael@0 362 }
michael@0 363
michael@0 364 SimpleTest.waitForExplicitFinish();
michael@0 365 addA11yLoadEvent(doTest);
michael@0 366
michael@0 367 </script>
michael@0 368 </head>
michael@0 369 <body>
michael@0 370 <div id="root">
michael@0 371 <a target="_blank"
michael@0 372 href="https://bugzilla.mozilla.org/show_bug.cgi?id=753984"
michael@0 373 title="[AccessFu] utterance order test">
michael@0 374 Mozilla Bug 753984</a>
michael@0 375 <a target="_blank"
michael@0 376 href="https://bugzilla.mozilla.org/show_bug.cgi?id=758675"
michael@0 377 title="[AccessFu] Add support for accDescription">
michael@0 378 Mozilla Bug 758675</a>
michael@0 379 <a target="_blank"
michael@0 380 href="https://bugzilla.mozilla.org/show_bug.cgi?id=876475"
michael@0 381 title="[AccessFu] Make braille output less verbose">
michael@0 382 Mozilla Bug 876475</a>
michael@0 383 <a target="_blank"
michael@0 384 href="https://bugzilla.mozilla.org/show_bug.cgi?id=924284"
michael@0 385 title="[AccessFu] Output accessible values">
michael@0 386 Mozilla Bug 924284</a>
michael@0 387 <a target="_blank"
michael@0 388 href="https://bugzilla.mozilla.org/show_bug.cgi?id=925845"
michael@0 389 title="[AccessFu] Unify output tests">
michael@0 390 Mozilla Bug 925845</a>
michael@0 391 <p id="display"></p>
michael@0 392 <div id="content" style="display: none"></div>
michael@0 393 <pre id="test"></pre>
michael@0 394 <a id="anchor" href="#test" title="title"></a>
michael@0 395 <a id="anchor_titleandtext" href="#test" title="goes to the tests">Tests</a>
michael@0 396 <a id="anchor_duplicatedtitleandtext" href="#test" title="Tests">Tests</a>
michael@0 397 <a id="anchor_arialabelandtext" href="#test" aria-label="Tests" title="goes to the tests">Tests</a>
michael@0 398 <textarea id="textarea" cols="80" rows="5">
michael@0 399 This is the text area text.
michael@0 400 </textarea>
michael@0 401 <h1 id="heading" title="Test heading"></h1>
michael@0 402 <ol id="list">
michael@0 403 <li id="li_one">list one</li>
michael@0 404 </ol>
michael@0 405 <dl id="dlist">
michael@0 406 <dd id="dd_one">
michael@0 407 dd one
michael@0 408 </dd>
michael@0 409 </dl>
michael@0 410 <table>
michael@0 411 <caption>Fruits and vegetables</caption>
michael@0 412 <tr>
michael@0 413 <td id="cell">
michael@0 414 <ul style="list-style-type: none;">
michael@0 415 <li><a id="apples" href="#">Apples</a></li>
michael@0 416 <li><a id="bananas" href="#">Bananas</a></li>
michael@0 417 <li><a href="#">Peaches</a></li>
michael@0 418 <li>
michael@0 419 <a href="#">
michael@0 420 Plums
michael@0 421 </a>
michael@0 422 </li>
michael@0 423 </ul>
michael@0 424 </td>
michael@0 425 </tr>
michael@0 426 </table>
michael@0 427 <button id="unavailableButton" disabled>I am unavailable</button>
michael@0 428 <button id="expandedButton" aria-expanded="true">I am expanded</button>
michael@0 429 <button id="collapsedButton" aria-expanded="false">I am collapsed</button>
michael@0 430 <input id="requiredInput" required placeholder="I am required" />
michael@0 431 <button id="hasPopupButton" aria-haspopup="true">I have a popup</button>
michael@0 432 <div role="tablist">
michael@0 433 <a id="tab1" href="#" role="tab" aria-selected="true">Account</a>
michael@0 434 <a id="tab2" href="#" role="tab" aria-selected="false">Advanced</a>
michael@0 435 </div>
michael@0 436 <form id="form1">
michael@0 437 <label id="label1"><input id="input1" type="checkbox">Orange</label>
michael@0 438 <input id="input2" type="checkbox"><label id="label2" for="input2">Blue</label>
michael@0 439 </form>
michael@0 440 <label id="label3">First name: <input id="input3" value="Joe"></label>
michael@0 441 <label id="label4">Points:
michael@0 442 <input id="input4" type="range" name="points" min="1" max="10" value="3">
michael@0 443 </label>
michael@0 444 <label for="input5">Boring label</label><input id="input5" type="checkbox" checked></input>
michael@0 445 <label for="password">Secret Password</label><input id="password" type="password"></input>
michael@0 446 <label for="radio_unselected">any old radio button</label><input id="radio_unselected" type="radio"></input>
michael@0 447 <label for="radio_selected">a unique radio button</label><input id="radio_selected" type="radio" checked></input>
michael@0 448 <input id="date" type="date" value="2011-09-29" />
michael@0 449 <input id="email" type="email" value="test@example.com" />
michael@0 450 <input id="search" type="search" value="This is a search" />
michael@0 451 <input id="tel" type="tel" value="555-5555" />
michael@0 452 <input id="url" type="url" value="http://example.com" />
michael@0 453 <input id="textInput" type="text" value="This is text." />
michael@0 454 <label>Points: <input id="range" type="range" name="points" min="1" max="10" value="3"></label>
michael@0 455 <div id="togglebutton_notpressed" aria-pressed="false" role="button" tabindex="-1">I ain't pressed</div>
michael@0 456 <div id="togglebutton_pressed" aria-pressed="true" role="button" tabindex="-1">I am pressed!</div>
michael@0 457 </div>
michael@0 458 </body>
michael@0 459 </html>

mercurial