Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1059)

Side by Side Diff: ui/accessibility/ax_tree_unittest.cc

Issue 830943004: Improve the notifications sent from AXTree updates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address feedback, add missing call to parent class Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/accessibility/ax_tree.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/strings/string_number_conversions.h" 6 #include "base/strings/string_number_conversions.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/accessibility/ax_node.h" 8 #include "ui/accessibility/ax_node.h"
9 #include "ui/accessibility/ax_serializable_tree.h" 9 #include "ui/accessibility/ax_serializable_tree.h"
10 #include "ui/accessibility/ax_tree.h" 10 #include "ui/accessibility/ax_tree.h"
11 #include "ui/accessibility/ax_tree_serializer.h" 11 #include "ui/accessibility/ax_tree_serializer.h"
12 12
13 namespace ui { 13 namespace ui {
14 14
15 namespace { 15 namespace {
16 16
17 class FakeAXTreeDelegate : public AXTreeDelegate { 17 class FakeAXTreeDelegate : public AXTreeDelegate {
18 public: 18 public:
19 FakeAXTreeDelegate() : root_changed_(false) {}
20
19 void OnNodeWillBeDeleted(AXNode* node) override { 21 void OnNodeWillBeDeleted(AXNode* node) override {
20 deleted_ids_.push_back(node->id()); 22 deleted_ids_.push_back(node->id());
21 } 23 }
22 24
25 void OnSubtreeWillBeDeleted(AXNode* node) override {
26 subtree_deleted_ids_.push_back(node->id());
27 }
28
23 void OnNodeCreated(AXNode* node) override { 29 void OnNodeCreated(AXNode* node) override {
24 created_ids_.push_back(node->id()); 30 created_ids_.push_back(node->id());
25 } 31 }
26 32
27 void OnNodeChanged(AXNode* node) override { 33 void OnNodeChanged(AXNode* node) override {
28 changed_ids_.push_back(node->id()); 34 changed_ids_.push_back(node->id());
29 } 35 }
30 36
31 void OnNodeCreationFinished(AXNode* node) override { 37 void OnAtomicUpdateFinished(bool root_changed,
32 creation_finished_ids_.push_back(node->id()); 38 const std::vector<Change>& changes) override {
39 root_changed_ = root_changed;
40
41 for (size_t i = 0; i < changes.size(); ++i) {
42 int id = changes[i].node->id();
43 switch (changes[i].type) {
44 case NODE_CREATED:
45 node_creation_finished_ids_.push_back(id);
46 break;
47 case SUBTREE_CREATED:
48 subtree_creation_finished_ids_.push_back(id);
49 break;
50 case NODE_CHANGED:
51 change_finished_ids_.push_back(id);
52 break;
53 }
54 }
33 } 55 }
34 56
35 void OnNodeChangeFinished(AXNode* node) override { 57 bool root_changed() const { return root_changed_; }
36 change_finished_ids_.push_back(node->id()); 58 const std::vector<int32>& deleted_ids() { return deleted_ids_; }
59 const std::vector<int32>& subtree_deleted_ids() {
60 return subtree_deleted_ids_;
61 }
62 const std::vector<int32>& created_ids() { return created_ids_; }
63 const std::vector<int32>& node_creation_finished_ids() {
64 return node_creation_finished_ids_;
65 }
66 const std::vector<int32>& subtree_creation_finished_ids() {
67 return subtree_creation_finished_ids_;
68 }
69 const std::vector<int32>& change_finished_ids() {
70 return change_finished_ids_;
37 } 71 }
38 72
39 void OnRootChanged(AXNode* new_root) override {
40 new_root_ids_.push_back(new_root->id());
41 }
42
43 const std::vector<int32>& deleted_ids() { return deleted_ids_; }
44 const std::vector<int32>& created_ids() { return created_ids_; }
45 const std::vector<int32>& creation_finished_ids() {
46 return creation_finished_ids_;
47 }
48 const std::vector<int32>& new_root_ids() { return new_root_ids_; }
49
50 private: 73 private:
74 bool root_changed_;
51 std::vector<int32> deleted_ids_; 75 std::vector<int32> deleted_ids_;
76 std::vector<int32> subtree_deleted_ids_;
52 std::vector<int32> created_ids_; 77 std::vector<int32> created_ids_;
53 std::vector<int32> creation_finished_ids_;
54 std::vector<int32> changed_ids_; 78 std::vector<int32> changed_ids_;
79 std::vector<int32> node_creation_finished_ids_;
80 std::vector<int32> subtree_creation_finished_ids_;
55 std::vector<int32> change_finished_ids_; 81 std::vector<int32> change_finished_ids_;
56 std::vector<int32> new_root_ids_;
57 }; 82 };
58 83
59 } // namespace 84 } // namespace
60 85
61 TEST(AXTreeTest, SerializeSimpleAXTree) { 86 TEST(AXTreeTest, SerializeSimpleAXTree) {
62 AXNodeData root; 87 AXNodeData root;
63 root.id = 1; 88 root.id = 1;
64 root.role = AX_ROLE_ROOT_WEB_AREA; 89 root.role = AX_ROLE_ROOT_WEB_AREA;
65 root.state = (1 << AX_STATE_FOCUSABLE) | (1 << AX_STATE_FOCUSED); 90 root.state = (1 << AX_STATE_FOCUSABLE) | (1 << AX_STATE_FOCUSED);
66 root.location = gfx::Rect(0, 0, 800, 600); 91 root.location = gfx::Rect(0, 0, 800, 600);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 update.nodes[0].child_ids.push_back(3); 278 update.nodes[0].child_ids.push_back(3);
254 update.nodes[0].child_ids.push_back(2); 279 update.nodes[0].child_ids.push_back(2);
255 update.nodes[1].id = 2; 280 update.nodes[1].id = 2;
256 update.nodes[2].id = 3; 281 update.nodes[2].id = 3;
257 EXPECT_FALSE(tree.Unserialize(update)); 282 EXPECT_FALSE(tree.Unserialize(update));
258 ASSERT_EQ("Node 3 reparented from 2 to 1", tree.error()); 283 ASSERT_EQ("Node 3 reparented from 2 to 1", tree.error());
259 } 284 }
260 285
261 TEST(AXTreeTest, TreeDelegateIsCalled) { 286 TEST(AXTreeTest, TreeDelegateIsCalled) {
262 AXTreeUpdate initial_state; 287 AXTreeUpdate initial_state;
263 initial_state.nodes.resize(1); 288 initial_state.nodes.resize(2);
264 initial_state.nodes[0].id = 1; 289 initial_state.nodes[0].id = 1;
265 initial_state.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; 290 initial_state.nodes[0].role = AX_ROLE_ROOT_WEB_AREA;
291 initial_state.nodes[0].child_ids.push_back(2);
292 initial_state.nodes[1].id = 2;
266 293
267 AXTree tree(initial_state); 294 AXTree tree(initial_state);
268 AXTreeUpdate update; 295 AXTreeUpdate update;
269 update.node_id_to_clear = 1; 296 update.node_id_to_clear = 1;
270 update.nodes.resize(2); 297 update.nodes.resize(2);
271 update.nodes[0].id = 2; 298 update.nodes[0].id = 3;
272 update.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; 299 update.nodes[0].role = AX_ROLE_ROOT_WEB_AREA;
273 update.nodes[0].child_ids.push_back(3); 300 update.nodes[0].child_ids.push_back(4);
274 update.nodes[1].id = 3; 301 update.nodes[1].id = 4;
275 302
276 FakeAXTreeDelegate fake_delegate; 303 FakeAXTreeDelegate fake_delegate;
277 tree.SetDelegate(&fake_delegate); 304 tree.SetDelegate(&fake_delegate);
278 305
279 EXPECT_TRUE(tree.Unserialize(update)); 306 EXPECT_TRUE(tree.Unserialize(update));
280 307
281 ASSERT_EQ(1U, fake_delegate.deleted_ids().size()); 308 ASSERT_EQ(2U, fake_delegate.deleted_ids().size());
282 EXPECT_EQ(1, fake_delegate.deleted_ids()[0]); 309 EXPECT_EQ(2, fake_delegate.deleted_ids()[0]);
310 EXPECT_EQ(1, fake_delegate.deleted_ids()[1]);
311
312 ASSERT_EQ(1U, fake_delegate.subtree_deleted_ids().size());
313 EXPECT_EQ(1, fake_delegate.subtree_deleted_ids()[0]);
283 314
284 ASSERT_EQ(2U, fake_delegate.created_ids().size()); 315 ASSERT_EQ(2U, fake_delegate.created_ids().size());
285 EXPECT_EQ(2, fake_delegate.created_ids()[0]); 316 EXPECT_EQ(3, fake_delegate.created_ids()[0]);
286 EXPECT_EQ(3, fake_delegate.created_ids()[1]); 317 EXPECT_EQ(4, fake_delegate.created_ids()[1]);
287 318
288 ASSERT_EQ(2U, fake_delegate.creation_finished_ids().size()); 319 ASSERT_EQ(1U, fake_delegate.subtree_creation_finished_ids().size());
289 EXPECT_EQ(2, fake_delegate.creation_finished_ids()[0]); 320 EXPECT_EQ(3, fake_delegate.subtree_creation_finished_ids()[0]);
290 EXPECT_EQ(3, fake_delegate.creation_finished_ids()[1]);
291 321
292 ASSERT_EQ(1U, fake_delegate.new_root_ids().size()); 322 ASSERT_EQ(1U, fake_delegate.node_creation_finished_ids().size());
293 EXPECT_EQ(2, fake_delegate.new_root_ids()[0]); 323 EXPECT_EQ(4, fake_delegate.node_creation_finished_ids()[0]);
324
325 ASSERT_EQ(true, fake_delegate.root_changed());
294 326
295 tree.SetDelegate(NULL); 327 tree.SetDelegate(NULL);
296 } 328 }
297 329
298 } // namespace ui 330 } // namespace ui
OLDNEW
« no previous file with comments | « ui/accessibility/ax_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698