| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // Include test fixture. | |
| 6 GEN_INCLUDE(['../testing/chromevox_unittest_base.js']); | |
| 7 | |
| 8 /** | |
| 9 * Test fixture for aria_util.js. | |
| 10 * @constructor | |
| 11 * @extends {ChromeVoxUnitTestBase} | |
| 12 */ | |
| 13 function CvoxAriaUtilUnitTest() {} | |
| 14 | |
| 15 CvoxAriaUtilUnitTest.prototype = { | |
| 16 __proto__: ChromeVoxUnitTestBase.prototype, | |
| 17 | |
| 18 /** @override */ | |
| 19 closureModuleDeps: [ | |
| 20 'cvox.AriaUtil', | |
| 21 'cvox.ChromeVox', | |
| 22 'cvox.DomUtil',] | |
| 23 }; | |
| 24 | |
| 25 TEST_F('CvoxAriaUtilUnitTest', 'GetStateGridWithActiveCell', function() { | |
| 26 this.loadDoc(function() {/*! | |
| 27 <div id="grid" role="grid" aria-activedescendant="cell"> | |
| 28 <div role="row"> | |
| 29 <div id="cell" role="gridcell"> | |
| 30 </div> | |
| 31 </div> | |
| 32 */}); | |
| 33 assertThat( | |
| 34 cvox.AriaUtil.getStateMsgs($('grid'), true), | |
| 35 eqJSON([['aria_role_gridcell_pos', 1, 1]])); | |
| 36 }); | |
| 37 | |
| 38 TEST_F('CvoxAriaUtilUnitTest', 'GetActiveDescendant', function() { | |
| 39 this.loadDoc(function() {/*! | |
| 40 <div id="top" aria-activedescendant="child"> | |
| 41 <div id="child" /> | |
| 42 </div> | |
| 43 <div id="top_2" aria-activedescendant="child_2"> | |
| 44 <div id="child_2" aria-activedescendant="grandchild_2"> | |
| 45 <div id="grandchild_2" /> | |
| 46 </div> | |
| 47 </div> | |
| 48 | |
| 49 <h1>The buggy cases.</h1> | |
| 50 <div id="loop" aria-activedescendant="loop" /> | |
| 51 <div id="circleA" aria-activedescendant="circleB"> | |
| 52 <div id="circleB" aria-activedescendant="circleA" /> | |
| 53 </div> | |
| 54 */}); | |
| 55 | |
| 56 // The typical case. | |
| 57 var topElt = $('top'); | |
| 58 var childElt = $('child'); | |
| 59 assertEquals(childElt, cvox.AriaUtil.getActiveDescendant(topElt)); | |
| 60 | |
| 61 // childElt has not aria-activedescendant, so return null. | |
| 62 assertEquals(null, cvox.AriaUtil.getActiveDescendant(childElt)); | |
| 63 | |
| 64 // The chained case. | |
| 65 var top2Elt = $('top_2'); | |
| 66 var grandchild2Elt = $('grandchild_2'); | |
| 67 assertEquals(grandchild2Elt, cvox.AriaUtil.getActiveDescendant(top2Elt)); | |
| 68 | |
| 69 // The buggy cases. These are invalid, so return null as if the | |
| 70 // aria-activedescendant tags did not exist. | |
| 71 var loopElt = $('loop'); | |
| 72 assertEquals(null, cvox.AriaUtil.getActiveDescendant(loopElt)); | |
| 73 | |
| 74 var circleAElt = $('circleA'); | |
| 75 assertEquals(null, cvox.AriaUtil.getActiveDescendant(circleAElt)); | |
| 76 }); | |
| 77 | |
| 78 TEST_F('CvoxAriaUtilUnitTest', 'ListIndexAndState', function() { | |
| 79 this.loadDoc(function() {/*! | |
| 80 <div id="l" role="listbox" tabindex="0" aria-activedescendant="l2"> | |
| 81 <div id="l1" role="option">A</div> | |
| 82 <div id="l2" role="option">B</div> | |
| 83 <div id="l3" role="option">C</div> | |
| 84 </div> | |
| 85 <div id="a" role="listbox" tabindex="0" aria-activedescendant="a2"> | |
| 86 <div id="a1" role="option" aria-setsize="10" aria-posinset="5">A</div> | |
| 87 <div id="a2" role="option" aria-setsize="20" aria-posinset="15">B</div> | |
| 88 <div id="a3" role="option" aria-setsize="30" aria-posinset="25">C</div> | |
| 89 </div> | |
| 90 <div id="b" role="listbox" tabindex="0" aria-activedescendant="b2"> | |
| 91 <div id="b1" role="option" aria-posinset="3">A</div> | |
| 92 <div id="b2" role="option" aria-posinset="2">B</div> | |
| 93 <div id="b3" role="option" aria-posinset="1">C</div> | |
| 94 </div> | |
| 95 */}); | |
| 96 | |
| 97 var optionElt = $('l2'); | |
| 98 assertThat( | |
| 99 cvox.AriaUtil.getStateMsgs(optionElt), | |
| 100 eqJSON([['list_position', 2, 3]])); | |
| 101 | |
| 102 var ariaOptionElt = $('a2'); | |
| 103 assertThat( | |
| 104 cvox.AriaUtil.getStateMsgs(ariaOptionElt), | |
| 105 eqJSON([['list_position', 15, 20]])); | |
| 106 | |
| 107 ariaOptionElt = $('b3'); | |
| 108 assertThat( | |
| 109 cvox.AriaUtil.getStateMsgs(ariaOptionElt), | |
| 110 eqJSON([['list_position', 1, 3]])); | |
| 111 }); | |
| 112 | |
| 113 TEST_F('CvoxAriaUtilUnitTest', 'GetLiveRegions', function() { | |
| 114 this.loadDoc(function() {/*! | |
| 115 <div id="outer"> | |
| 116 <div id="progress" role="progressbar" aria-live="polite" aria-valuenow="1"> | |
| 117 <div id="ptext"> | |
| 118 1% complete. | |
| 119 </div> | |
| 120 </div> | |
| 121 <div id="progress2" role="progressbar" aria-live="polite" aria-valuenow="1"> | |
| 122 <div id="ptext2"> | |
| 123 1% complete. | |
| 124 </div> | |
| 125 </div> | |
| 126 </div> | |
| 127 */}); | |
| 128 | |
| 129 var progressLiveRegions = cvox.AriaUtil.getLiveRegions(progress); | |
| 130 assertEquals(1, progressLiveRegions.length); | |
| 131 assertNotEquals(-1, progressLiveRegions.indexOf(progress)); | |
| 132 | |
| 133 var outerLiveRegions = cvox.AriaUtil.getLiveRegions(outer); | |
| 134 assertEquals(2, outerLiveRegions.length); | |
| 135 assertNotEquals(-1, outerLiveRegions.indexOf(progress)); | |
| 136 assertNotEquals(-1, outerLiveRegions.indexOf(progress2)); | |
| 137 | |
| 138 // getLiveRegions works walking up the tree as well. | |
| 139 var ptextLiveRegions = cvox.AriaUtil.getLiveRegions(ptext); | |
| 140 assertEquals(1, ptextLiveRegions.length); | |
| 141 assertNotEquals(-1, ptextLiveRegions.indexOf(progress)); | |
| 142 }); | |
| OLD | NEW |