Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 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 "base/memory/scoped_ptr.h" | |
| 6 #include "content/browser/accessibility/accessibility_tree_search.h" | |
| 7 #include "content/browser/accessibility/browser_accessibility.h" | |
| 8 #include "content/browser/accessibility/browser_accessibility_manager.h" | |
| 9 #include "testing/gtest/include/gtest/gtest.h" | |
| 10 | |
| 11 namespace content { | |
| 12 | |
| 13 class AccessibilityTreeSearchTest : public testing::Test { | |
| 14 public: | |
| 15 AccessibilityTreeSearchTest() {} | |
| 16 ~AccessibilityTreeSearchTest() override {} | |
| 17 | |
| 18 protected: | |
| 19 void SetUp() override; | |
| 20 | |
|
David Tseng
2015/05/08 21:58:25
nit: private:
dmazzoni
2015/05/13 04:22:20
This is protected now, it needs to be since each T
| |
| 21 scoped_ptr<BrowserAccessibilityManager> tree_; | |
| 22 | |
| 23 DISALLOW_COPY_AND_ASSIGN(AccessibilityTreeSearchTest); | |
| 24 }; | |
| 25 | |
| 26 void AccessibilityTreeSearchTest::SetUp() { | |
| 27 ui::AXNodeData root; | |
| 28 root.id = 1; | |
| 29 root.SetName("Document"); | |
| 30 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | |
| 31 root.state = 0; | |
| 32 root.child_ids.push_back(2); | |
| 33 root.child_ids.push_back(3); | |
| 34 root.child_ids.push_back(6); | |
| 35 | |
| 36 ui::AXNodeData heading; | |
| 37 heading.id = 2; | |
| 38 heading.SetName("Heading"); | |
| 39 heading.role = ui::AX_ROLE_HEADING; | |
| 40 heading.state = 0; | |
| 41 | |
| 42 ui::AXNodeData list; | |
| 43 list.id = 3; | |
| 44 list.role = ui::AX_ROLE_LIST; | |
| 45 list.state = 0; | |
| 46 list.child_ids.push_back(4); | |
| 47 list.child_ids.push_back(5); | |
| 48 | |
| 49 ui::AXNodeData list_item_1; | |
| 50 list_item_1.id = 4; | |
| 51 list_item_1.SetName("Autobots"); | |
| 52 list_item_1.role = ui::AX_ROLE_LIST_ITEM; | |
| 53 list_item_1.state = 0; | |
| 54 | |
| 55 ui::AXNodeData list_item_2; | |
| 56 list_item_2.id = 5; | |
| 57 list_item_2.SetName("Decepticons"); | |
| 58 list_item_2.role = ui::AX_ROLE_LIST_ITEM; | |
| 59 list_item_2.state = 0; | |
| 60 | |
| 61 ui::AXNodeData footer; | |
| 62 footer.id = 6; | |
| 63 footer.SetName("Footer"); | |
| 64 footer.role = ui::AX_ROLE_FOOTER; | |
| 65 footer.state = 1 << ui::AX_STATE_OFFSCREEN; | |
| 66 | |
| 67 tree_.reset(BrowserAccessibilityManager::Create( | |
| 68 MakeAXTreeUpdate(root, heading, list, list_item_1, list_item_2, footer), | |
| 69 nullptr)); | |
| 70 } | |
| 71 | |
| 72 TEST_F(AccessibilityTreeSearchTest, GetAll) { | |
| 73 AccessibilityTreeSearch search(tree_.get()); | |
| 74 ASSERT_EQ(6U, search.CountMatches()); | |
| 75 } | |
| 76 | |
| 77 TEST_F(AccessibilityTreeSearchTest, ForwardsWithStartNode) { | |
| 78 AccessibilityTreeSearch search(tree_.get()); | |
| 79 search.SetStartNode(tree_->GetFromID(4)); | |
| 80 ASSERT_EQ(2U, search.CountMatches()); | |
| 81 EXPECT_EQ(5, search.GetMatchAtIndex(0)->GetId()); | |
| 82 EXPECT_EQ(6, search.GetMatchAtIndex(1)->GetId()); | |
| 83 } | |
| 84 | |
| 85 TEST_F(AccessibilityTreeSearchTest, BackwardsWithStartNode) { | |
| 86 AccessibilityTreeSearch search(tree_.get()); | |
| 87 search.SetStartNode(tree_->GetFromID(4)); | |
| 88 search.SetDirection(AccessibilityTreeSearch::BACKWARDS); | |
| 89 ASSERT_EQ(3U, search.CountMatches()); | |
| 90 EXPECT_EQ(3, search.GetMatchAtIndex(0)->GetId()); | |
| 91 EXPECT_EQ(2, search.GetMatchAtIndex(1)->GetId()); | |
| 92 EXPECT_EQ(1, search.GetMatchAtIndex(2)->GetId()); | |
| 93 } | |
| 94 | |
| 95 TEST_F(AccessibilityTreeSearchTest, ResultLimitZero) { | |
| 96 AccessibilityTreeSearch search(tree_.get()); | |
| 97 search.SetResultLimit(0); | |
| 98 ASSERT_EQ(0U, search.CountMatches()); | |
| 99 } | |
| 100 | |
| 101 TEST_F(AccessibilityTreeSearchTest, ResultLimitFive) { | |
| 102 AccessibilityTreeSearch search(tree_.get()); | |
| 103 search.SetResultLimit(5); | |
| 104 ASSERT_EQ(5U, search.CountMatches()); | |
| 105 } | |
| 106 | |
| 107 TEST_F(AccessibilityTreeSearchTest, DescendantsOnly) { | |
| 108 AccessibilityTreeSearch search(tree_.get()); | |
| 109 search.SetStartNode(tree_->GetFromID(3)); | |
| 110 search.SetImmediateDescendantsOnly(true); | |
| 111 ASSERT_EQ(2U, search.CountMatches()); | |
| 112 EXPECT_EQ(4, search.GetMatchAtIndex(0)->GetId()); | |
| 113 EXPECT_EQ(5, search.GetMatchAtIndex(1)->GetId()); | |
| 114 } | |
| 115 | |
| 116 TEST_F(AccessibilityTreeSearchTest, VisibleOnly) { | |
| 117 AccessibilityTreeSearch search(tree_.get()); | |
| 118 search.SetVisibleOnly(true); | |
| 119 ASSERT_EQ(5U, search.CountMatches()); | |
| 120 EXPECT_EQ(1, search.GetMatchAtIndex(0)->GetId()); | |
| 121 EXPECT_EQ(2, search.GetMatchAtIndex(1)->GetId()); | |
| 122 EXPECT_EQ(3, search.GetMatchAtIndex(2)->GetId()); | |
| 123 EXPECT_EQ(4, search.GetMatchAtIndex(3)->GetId()); | |
| 124 EXPECT_EQ(5, search.GetMatchAtIndex(4)->GetId()); | |
| 125 } | |
| 126 | |
| 127 TEST_F(AccessibilityTreeSearchTest, CaseInsensitiveStringMatch) { | |
| 128 AccessibilityTreeSearch search(tree_.get()); | |
| 129 search.SetSearchText("eCEptiCOn"); | |
| 130 ASSERT_EQ(1U, search.CountMatches()); | |
| 131 EXPECT_EQ(5, search.GetMatchAtIndex(0)->GetId()); | |
| 132 } | |
| 133 | |
| 134 TEST_F(AccessibilityTreeSearchTest, OnePredicate) { | |
| 135 AccessibilityTreeSearch search(tree_.get()); | |
| 136 search.AddPredicate([](BrowserAccessibility* start, | |
| 137 BrowserAccessibility* current) { | |
| 138 return current->GetRole() == ui::AX_ROLE_LIST_ITEM; | |
| 139 }); | |
| 140 ASSERT_EQ(2U, search.CountMatches()); | |
| 141 EXPECT_EQ(4, search.GetMatchAtIndex(0)->GetId()); | |
| 142 EXPECT_EQ(5, search.GetMatchAtIndex(1)->GetId()); | |
| 143 } | |
| 144 | |
| 145 TEST_F(AccessibilityTreeSearchTest, TwoPredicates) { | |
| 146 AccessibilityTreeSearch search(tree_.get()); | |
| 147 search.AddPredicate([](BrowserAccessibility* start, | |
| 148 BrowserAccessibility* current) { | |
| 149 return (current->GetRole() == ui::AX_ROLE_LIST || | |
| 150 current->GetRole() == ui::AX_ROLE_LIST_ITEM); | |
| 151 }); | |
| 152 search.AddPredicate([](BrowserAccessibility* start, | |
| 153 BrowserAccessibility* current) { | |
| 154 return (current->GetId() % 2 == 1); | |
| 155 }); | |
| 156 ASSERT_EQ(2U, search.CountMatches()); | |
| 157 EXPECT_EQ(3, search.GetMatchAtIndex(0)->GetId()); | |
| 158 EXPECT_EQ(5, search.GetMatchAtIndex(1)->GetId()); | |
| 159 } | |
| 160 | |
| 161 } // namespace content | |
| OLD | NEW |