Index: chrome/browser/resources/chromeos/chromevox/chromevox/injected/user_commands_test.unitjs |
diff --git a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/user_commands_test.unitjs b/chrome/browser/resources/chromeos/chromevox/chromevox/injected/user_commands_test.unitjs |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cb122e6fb95e5629e34c1ee8b3dff723f9173d39 |
--- /dev/null |
+++ b/chrome/browser/resources/chromeos/chromevox/chromevox/injected/user_commands_test.unitjs |
@@ -0,0 +1,123 @@ |
+// Copyright 2013 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. |
+ * @constructor |
+ * @extends {ChromeVoxUnitTestBase} |
+ */ |
+function CvoxUserCommandsUnitTest() {} |
+ |
+CvoxUserCommandsUnitTest.prototype = { |
+ __proto__: ChromeVoxUnitTestBase.prototype, |
+ |
+ /** @override */ |
+ isAsync: true, |
+ |
+ /** @override */ |
+ closureModuleDeps: [ |
+ 'cvox.ChromeVoxTester', |
+ ], |
+ |
+ /** @override */ |
+ setUp: function() { |
+ cvox.ChromeVoxTester.setUp(document); |
+ }, |
+ |
+ /** @override */ |
+ tearDown: function() { |
+ cvox.ChromeVoxTester.tearDown(document); |
+ } |
+}; |
+ |
+TEST_F('CvoxUserCommandsUnitTest', 'TabHandling', function() { |
+ this.loadDoc(function() {/*! |
+ <div> |
+ <p id="before">Before</p> |
+ <a href="http://google.com" id="linka">Here is a link</a> |
+ <input type="text"></input> |
+ <h1 id="foo">FirstHeading</h1> |
+ <a href="http://google.com" id="linkb">Here is another link</a> |
+ <h2>SecondHeading</h2> |
+ </div> |
+ */}); |
+ |
+ this.waitForCalm(cvox.ChromeVoxTester.syncToFirstNode); |
+ this.waitForCalm(this.userCommand, 'forward'); |
+ this.waitForCalm(this.userCommand, 'forward'); |
+ this.waitForCalm(this.userCommand, 'forward'); |
+ this.waitForCalm(this.userCommand, 'handleTab'); |
+ this.waitForCalm(function() { |
+ // handleTab should place focus on a dummy node immediately in front of |
+ // current position so that tab will jump reasonably. |
+ var id = document.activeElement.nextSibling.id; |
+ assertEquals('foo', id); |
+ }); |
+ this.waitForCalm(testDone); |
+}); |
+ |
+/** |
+ * Tests everything in the find next map to make sure there are no |
+ * typos and everything is valid. |
+ */ |
+TEST_F('CvoxUserCommandsUnitTest', 'FindNextMap', function() { |
+ var findMap = cvox.ChromeVoxUserCommands.FIND_NEXT_MAP_; |
+ for (var find in findMap) { |
+ assertTrue( |
+ 'no predicate ' + findMap[find].predicate + ' in ' + find, |
+ cvox.DomPredicates.hasOwnProperty(findMap[find].predicate)); |
+ // Probably a typo if it's not one of these types. |
+ for (var j in findMap[find]) { |
+ assertTrue( |
+ 'typo in ' + find, |
+ j == 'predicate' || |
+ j == 'forwardError' || |
+ j == 'backwardError'); |
+ } |
+ } |
+ testDone(); |
+}); |
+ |
+/** |
+ * Tests the command maps to make sure there are no typos and everything |
+ * is valid. |
+ * @export |
+ */ |
+TEST_F('CvoxUserCommandsUnitTest', 'CommandsMap', function() { |
+ var cmdMap = cvox.ChromeVoxUserCommands.CMD_WHITELIST_; |
+ var findMap = cvox.ChromeVoxUserCommands.FIND_NEXT_MAP_; |
+ for (var cmd in cmdMap) { |
+ assertTrue( |
+ 'cant have both forward and backward in ' + cmd, |
+ !cmdMap[cmd].forward || !cmdMap[cmd].backward); |
+ for (var j in cmdMap[cmd]) { |
+ // Probably a typo if it's not one of these types. |
+ assertTrue( |
+ 'typo in ' + cmd, |
+ j == 'forward' || |
+ j == 'backward' || |
+ j == 'announce' || |
+ j == 'findNext' || |
+ j == 'doDefault' || |
+ j == 'nodeList' || |
+ j == 'platformFilter' || |
+ j == 'skipInput' || |
+ j == 'disallowOOBE' || |
+ j == 'allowEvents' || |
+ j == 'disallowContinuation'); |
+ } |
+ if (cmd.findNext) { |
+ assertTrue( |
+ 'typo in ' + cmd + ' for findNext id', |
+ findMap.hasOwnProperty(cmdMap[cmd].findNext)); |
+ assertTrue( |
+ 'must supply direction for findNext in ' + cmd, |
+ cmdMap[cmd].forward || cmdMap[cmd].backward); |
+ } |
+ } |
+ testDone(); |
+}); |