summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js')
-rw-r--r--chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js142
1 files changed, 142 insertions, 0 deletions
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js b/chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js
new file mode 100644
index 00000000000..0206ef938e0
--- /dev/null
+++ b/chromium/chrome/browser/resources/chromeos/chromevox/common/aria_util_test.js
@@ -0,0 +1,142 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Include test fixture.
+GEN_INCLUDE(['../testing/chromevox_unittest_base.js']);
+
+/**
+ * Test fixture for aria_util.js.
+ * @constructor
+ * @extends {ChromeVoxUnitTestBase}
+ */
+function CvoxAriaUtilUnitTest() {}
+
+CvoxAriaUtilUnitTest.prototype = {
+ __proto__: ChromeVoxUnitTestBase.prototype,
+
+ /** @override */
+ closureModuleDeps: [
+ 'cvox.AriaUtil',
+ 'cvox.ChromeVox',
+ 'cvox.DomUtil',]
+};
+
+TEST_F('CvoxAriaUtilUnitTest', 'GetStateGridWithActiveCell', function() {
+ this.loadDoc(function() {/*!
+ <div id="grid" role="grid" aria-activedescendant="cell">
+ <div role="row">
+ <div id="cell" role="gridcell">
+ </div>
+ </div>
+ */});
+ assertThat(
+ cvox.AriaUtil.getStateMsgs($('grid'), true),
+ eqJSON([['aria_role_gridcell_pos', 1, 1]]));
+});
+
+TEST_F('CvoxAriaUtilUnitTest', 'GetActiveDescendant', function() {
+ this.loadDoc(function() {/*!
+ <div id="top" aria-activedescendant="child">
+ <div id="child" />
+ </div>
+ <div id="top_2" aria-activedescendant="child_2">
+ <div id="child_2" aria-activedescendant="grandchild_2">
+ <div id="grandchild_2" />
+ </div>
+ </div>
+
+ <h1>The buggy cases.</h1>
+ <div id="loop" aria-activedescendant="loop" />
+ <div id="circleA" aria-activedescendant="circleB">
+ <div id="circleB" aria-activedescendant="circleA" />
+ </div>
+ */});
+
+ // The typical case.
+ var topElt = $('top');
+ var childElt = $('child');
+ assertEquals(childElt, cvox.AriaUtil.getActiveDescendant(topElt));
+
+ // childElt has not aria-activedescendant, so return null.
+ assertEquals(null, cvox.AriaUtil.getActiveDescendant(childElt));
+
+ // The chained case.
+ var top2Elt = $('top_2');
+ var grandchild2Elt = $('grandchild_2');
+ assertEquals(grandchild2Elt, cvox.AriaUtil.getActiveDescendant(top2Elt));
+
+ // The buggy cases. These are invalid, so return null as if the
+ // aria-activedescendant tags did not exist.
+ var loopElt = $('loop');
+ assertEquals(null, cvox.AriaUtil.getActiveDescendant(loopElt));
+
+ var circleAElt = $('circleA');
+ assertEquals(null, cvox.AriaUtil.getActiveDescendant(circleAElt));
+});
+
+TEST_F('CvoxAriaUtilUnitTest', 'ListIndexAndState', function() {
+ this.loadDoc(function() {/*!
+ <div id="l" role="listbox" tabindex="0" aria-activedescendant="l2">
+ <div id="l1" role="option">A</div>
+ <div id="l2" role="option">B</div>
+ <div id="l3" role="option">C</div>
+ </div>
+ <div id="a" role="listbox" tabindex="0" aria-activedescendant="a2">
+ <div id="a1" role="option" aria-setsize="10" aria-posinset="5">A</div>
+ <div id="a2" role="option" aria-setsize="20" aria-posinset="15">B</div>
+ <div id="a3" role="option" aria-setsize="30" aria-posinset="25">C</div>
+ </div>
+ <div id="b" role="listbox" tabindex="0" aria-activedescendant="b2">
+ <div id="b1" role="option" aria-posinset="3">A</div>
+ <div id="b2" role="option" aria-posinset="2">B</div>
+ <div id="b3" role="option" aria-posinset="1">C</div>
+ </div>
+ */});
+
+ var optionElt = $('l2');
+ assertThat(
+ cvox.AriaUtil.getStateMsgs(optionElt),
+ eqJSON([['list_position', 2, 3]]));
+
+ var ariaOptionElt = $('a2');
+ assertThat(
+ cvox.AriaUtil.getStateMsgs(ariaOptionElt),
+ eqJSON([['list_position', 15, 20]]));
+
+ ariaOptionElt = $('b3');
+ assertThat(
+ cvox.AriaUtil.getStateMsgs(ariaOptionElt),
+ eqJSON([['list_position', 1, 3]]));
+});
+
+TEST_F('CvoxAriaUtilUnitTest', 'GetLiveRegions', function() {
+ this.loadDoc(function() {/*!
+ <div id="outer">
+ <div id="progress" role="progressbar" aria-live="polite" aria-valuenow="1">
+ <div id="ptext">
+ 1% complete.
+ </div>
+ </div>
+ <div id="progress2" role="progressbar" aria-live="polite" aria-valuenow="1">
+ <div id="ptext2">
+ 1% complete.
+ </div>
+ </div>
+ </div>
+ */});
+
+ var progressLiveRegions = cvox.AriaUtil.getLiveRegions(progress);
+ assertEquals(1, progressLiveRegions.length);
+ assertNotEquals(-1, progressLiveRegions.indexOf(progress));
+
+ var outerLiveRegions = cvox.AriaUtil.getLiveRegions(outer);
+ assertEquals(2, outerLiveRegions.length);
+ assertNotEquals(-1, outerLiveRegions.indexOf(progress));
+ assertNotEquals(-1, outerLiveRegions.indexOf(progress2));
+
+ // getLiveRegions works walking up the tree as well.
+ var ptextLiveRegions = cvox.AriaUtil.getLiveRegions(ptext);
+ assertEquals(1, ptextLiveRegions.length);
+ assertNotEquals(-1, ptextLiveRegions.indexOf(progress));
+});