| Index: chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs
|
| diff --git a/chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs b/chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs
|
| index ba095e0fdf34419e2761480c8c97e241dd0ac19b..492f8d545eb8a96179af51c3759cc9ce18ccd2d6 100644
|
| --- a/chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs
|
| +++ b/chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs
|
| @@ -7,7 +7,7 @@
|
| * @constructor
|
| * @extends {testing.Test}
|
| */
|
| -function AutomationTreeWalkerUnitTest () {
|
| +function AutomationTreeWalkerUnitTest() {
|
| testing.Test.call(this);
|
| };
|
|
|
| @@ -16,6 +16,7 @@ AutomationTreeWalkerUnitTest.prototype = {
|
|
|
| /** @override */
|
| extraLibraries: [
|
| + 'test_support.js',
|
| 'tree_walker.js',
|
| ],
|
|
|
| @@ -25,56 +26,65 @@ AutomationTreeWalkerUnitTest.prototype = {
|
| getSampleTree: function() {
|
| let loc = {left: 0, top: 0, width: 0, height: 0};
|
| // root
|
| - // middle1
|
| - // leaf1
|
| - // leaf2
|
| - // leaf3
|
| - // middle2
|
| - // leaf4
|
| - // leaf5
|
| + // upper1
|
| + // middle1
|
| + // lower1
|
| + // leaf1
|
| + // leaf2
|
| + // leaf3
|
| + // lower2
|
| + // leaf4
|
| + // leaf5
|
| + // middle2
|
| + // lower3
|
| + // leaf6
|
| + // leaf7
|
| + // upper2
|
| + // leaf8
|
| let root = {location: loc, state: {}};
|
| + let upper1 = {location: loc, state: {}};
|
| + let upper2 = {location: loc, state: {}};
|
| let middle1 = {location: loc, state: {}};
|
| let middle2 = {location: loc, state: {}};
|
| + let lower1 = {location: loc, state: {}};
|
| + let lower2 = {location: loc, state: {}};
|
| + let lower3 = {location: loc, state: {}};
|
| let leaf1 = {location: loc, state: {}};
|
| let leaf2 = {location: loc, state: {}};
|
| let leaf3 = {location: loc, state: {}};
|
| let leaf4 = {location: loc, state: {}};
|
| let leaf5 = {location: loc, state: {}};
|
| -
|
| - root.firstChild = middle1;
|
| - root.lastChild = middle2;
|
| -
|
| - middle1.parent = root;
|
| - middle2.parent = root;
|
| - middle1.nextSibling = middle2;
|
| - middle2.previousSibling = middle1;
|
| - middle1.firstChild = leaf1;
|
| - middle1.lastChild = leaf3;
|
| - middle2.firstChild = leaf4;
|
| - middle2.lastChild = leaf5;
|
| -
|
| - leaf1.parent = middle1;
|
| - leaf2.parent = middle1;
|
| - leaf3.parent = middle1;
|
| - leaf1.nextSibling = leaf2;
|
| - leaf2.previousSibling = leaf1;
|
| - leaf2.nextSibling = leaf3;
|
| - leaf3.previousSibling = leaf2;
|
| -
|
| - leaf4.parent = middle2;
|
| - leaf5.parent = middle2;
|
| - leaf4.nextSibling = leaf5;
|
| - leaf5.previousSibling = leaf4;
|
| + let leaf6 = {location: loc, state: {}};
|
| + let leaf7 = {location: loc, state: {}};
|
| + let leaf8 = {location: loc, state: {}};
|
| +
|
| + let ts = new TestSupport();
|
| + ts.setChildren(root, [upper1, upper2]);
|
| + ts.setChildren(upper1, [middle1, middle2]);
|
| + ts.setChildren(upper2, [leaf8]);
|
| + ts.setChildren(middle1, [lower1, lower2]);
|
| + ts.setChildren(middle2, [lower3]);
|
| + ts.setChildren(lower1, [leaf1, leaf2, leaf3]);
|
| + ts.setChildren(lower2, [leaf4, leaf5]);
|
| + ts.setChildren(lower3, [leaf6, leaf7]);
|
|
|
| return {
|
| root: root,
|
| + upper1: upper1,
|
| + upper2: upper2,
|
| middle1: middle1,
|
| middle2: middle2,
|
| + lower1: lower1,
|
| + lower2: lower2,
|
| + lower3: lower3,
|
| leaf1: leaf1,
|
| leaf2: leaf2,
|
| leaf3: leaf3,
|
| leaf4: leaf4,
|
| - leaf5: leaf5
|
| + leaf5: leaf5,
|
| + leaf6: leaf6,
|
| + leaf7: leaf7,
|
| + leaf8: leaf8
|
| };
|
| },
|
|
|
| @@ -87,49 +97,101 @@ AutomationTreeWalkerUnitTest.prototype = {
|
| return node.state.focusable === true;
|
| },
|
| }
|
| + },
|
| +
|
| + getSubtreeRestrictions: function() {
|
| + return {
|
| + leaf: function(node) {
|
| + return node.state.leaf === true;
|
| + },
|
| + visit: function(node) {
|
| + return node.state.focusable === true;
|
| + },
|
| + }
|
| }
|
| };
|
|
|
| -TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNode', function() {
|
| - chrome.automation = {
|
| - RoleType: {DESKTOP: 'desktop', TAB: 'tab', TAB_LIST: 'tabList'},
|
| - StateType: {FOCUSABLE: 'focusable', OFFSCREEN: 'offscreen'}
|
| - };
|
| -
|
| +TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNodeWholeTree', function() {
|
| let t = this.getSampleTree();
|
| - let treeWalker =
|
| - new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions());
|
| -
|
| - let interesting = {focusable: true};
|
| - t.leaf1.state = interesting;
|
| - t.leaf2.state = interesting;
|
| - t.middle2.state = interesting;
|
| - t.leaf5.state = interesting;
|
| + let treeWalker = new AutomationTreeWalker(
|
| + t.root, t.root, this.getDefaultRestrictions());
|
| +
|
| + t.root.state['focusable'] = true;
|
| + t.middle1.state['focusable'] = true;
|
| + t.leaf1.state['focusable'] = true;
|
| + t.leaf2.state['focusable'] = true;
|
| + t.leaf5.state['focusable'] = true;
|
| + t.lower3.state['focusable'] = true;
|
| + t.leaf6.state['focusable'] = true;
|
| + t.upper2.state['focusable'] = true;
|
| + t.leaf8.state['focusable'] = true;
|
|
|
| // Move to next node.
|
| + assertEquals(t.middle1, treeWalker.moveToNode(true));
|
| assertEquals(t.leaf1, treeWalker.moveToNode(true));
|
| assertEquals(t.leaf2, treeWalker.moveToNode(true));
|
| - assertEquals(t.middle2, treeWalker.moveToNode(true));
|
| assertEquals(t.leaf5, treeWalker.moveToNode(true));
|
| - assertEquals(t.leaf1, treeWalker.moveToNode(true));
|
| + assertEquals(t.lower3, treeWalker.moveToNode(true));
|
| + assertEquals(t.leaf6, treeWalker.moveToNode(true));
|
| + assertEquals(t.upper2, treeWalker.moveToNode(true));
|
| + assertEquals(t.leaf8, treeWalker.moveToNode(true));
|
| + assertEquals(t.root, treeWalker.moveToNode(true));
|
| + assertEquals(t.middle1, treeWalker.moveToNode(true));
|
|
|
| // Move to previous node.
|
| + assertEquals(t.root, treeWalker.moveToNode(false));
|
| + assertEquals(t.leaf8, treeWalker.moveToNode(false));
|
| + assertEquals(t.upper2, treeWalker.moveToNode(false));
|
| + assertEquals(t.leaf6, treeWalker.moveToNode(false));
|
| + assertEquals(t.lower3, treeWalker.moveToNode(false));
|
| assertEquals(t.leaf5, treeWalker.moveToNode(false));
|
| - assertEquals(t.middle2, treeWalker.moveToNode(false));
|
| assertEquals(t.leaf2, treeWalker.moveToNode(false));
|
| assertEquals(t.leaf1, treeWalker.moveToNode(false));
|
| - assertEquals(t.leaf5, treeWalker.moveToNode(false));
|
| + assertEquals(t.middle1, treeWalker.moveToNode(false));
|
| +});
|
| +
|
| +TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNodeInSubtree', function() {
|
| + let t = this.getSampleTree();
|
| + let treeWalker = new AutomationTreeWalker(
|
| + t.upper1, t.upper1, this.getSubtreeRestrictions());
|
| +
|
| + t.lower2.state['leaf'] = true;
|
| + t.lower3.state['leaf'] = true;
|
| +
|
| + t.root.state['focusable'] = true;
|
| + t.middle1.state['focusable'] = true;
|
| + t.leaf1.state['focusable'] = true;
|
| + t.leaf2.state['focusable'] = true;
|
| + t.leaf5.state['focusable'] = true;
|
| + t.lower3.state['focusable'] = true;
|
| + t.leaf6.state['focusable'] = true;
|
| + t.upper2.state['focusable'] = true;
|
| + t.leaf8.state['focusable'] = true;
|
| +
|
| + // Move to next node.
|
| + assertEquals(t.middle1, treeWalker.moveToNode(true));
|
| + assertEquals(t.leaf1, treeWalker.moveToNode(true));
|
| + assertEquals(t.leaf2, treeWalker.moveToNode(true));
|
| + assertEquals(t.lower3, treeWalker.moveToNode(true));
|
| + assertEquals(t.middle1, treeWalker.moveToNode(true));
|
| +
|
| + // Move to previous node.
|
| + assertEquals(t.lower3, treeWalker.moveToNode(false));
|
| + assertEquals(t.leaf2, treeWalker.moveToNode(false));
|
| + assertEquals(t.leaf1, treeWalker.moveToNode(false));
|
| + assertEquals(t.middle1, treeWalker.moveToNode(false));
|
| + assertEquals(t.lower3, treeWalker.moveToNode(false));
|
| });
|
|
|
| TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() {
|
| let t = this.getSampleTree();
|
| - let treeWalker =
|
| - new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions());
|
| + let treeWalker = new AutomationTreeWalker(
|
| + t.middle1, t.middle1, this.getDefaultRestrictions());
|
|
|
| let order =
|
| - [t.root, t.middle1, t.leaf1, t.leaf2, t.leaf3,
|
| - t.middle2, t.leaf4, t.leaf5];
|
| - let node = t.root;
|
| + [t.middle1, t.lower1, t.leaf1, t.leaf2, t.leaf3,
|
| + t.lower2, t.leaf4, t.leaf5];
|
| + let node = t.middle1;
|
| for (let i = 0; i < order.length; i++) {
|
| assertEquals(order[i], node);
|
| node = treeWalker.getNextNode_(node);
|
| @@ -139,12 +201,12 @@ TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() {
|
|
|
| TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() {
|
| let t = this.getSampleTree();
|
| - let treeWalker =
|
| - new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions());
|
| + let treeWalker = new AutomationTreeWalker(
|
| + t.leaf5, t.middle1, this.getDefaultRestrictions());
|
|
|
| let order =
|
| - [t.leaf5, t.leaf4, t.middle2, t.leaf3, t.leaf2,
|
| - t.leaf1, t.middle1, t.root];
|
| + [t.leaf5, t.leaf4, t.lower2, t.leaf3, t.leaf2,
|
| + t.leaf1, t.lower1, t.middle1];
|
| let node = t.leaf5;
|
| for (let i = 0; i < order.length; i++) {
|
| assertEquals(order[i], node);
|
| @@ -155,15 +217,23 @@ TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() {
|
|
|
| TEST_F('AutomationTreeWalkerUnitTest', 'GetYoungestDescendant', function() {
|
| let t = this.getSampleTree();
|
| - let treeWalker =
|
| - new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions());
|
| -
|
| - assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.root));
|
| - assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.middle1));
|
| - assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle2));
|
| + let treeWalker = new AutomationTreeWalker(
|
| + t.root, t.root, this.getDefaultRestrictions());
|
| +
|
| + assertEquals(t.leaf8, treeWalker.getYoungestDescendant_(t.root));
|
| + assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.upper1));
|
| + assertEquals(t.leaf8, treeWalker.getYoungestDescendant_(t.upper2));
|
| + assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle1));
|
| + assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.middle2));
|
| + assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.lower1));
|
| + assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.lower2));
|
| + assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.lower3));
|
| assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf1));
|
| assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf2));
|
| assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf3));
|
| assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf4));
|
| assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf5));
|
| + assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf6));
|
| + assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf7));
|
| + assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf8));
|
| });
|
|
|