Chromium Code Reviews| Index: ui/accessibility/ax_tree_unittest.cc |
| diff --git a/ui/accessibility/ax_tree_unittest.cc b/ui/accessibility/ax_tree_unittest.cc |
| index f5601c26434c69d206b7ceb40e10d9cb0831604f..190259e1cbe170b65cabadcb1093ae4b841c1b5e 100644 |
| --- a/ui/accessibility/ax_tree_unittest.cc |
| +++ b/ui/accessibility/ax_tree_unittest.cc |
| @@ -12,6 +12,47 @@ |
| namespace ui { |
| +namespace { |
| + |
| +class MockAXTreeDelegate : public AXTreeDelegate { |
|
tfarina
2014/02/19 22:30:43
Mock is fine by me if you want to use it, but I'd
dmazzoni
2014/02/19 22:37:02
I'm happy to change it to Fake, but I don't see wh
|
| + public: |
| + virtual void OnNodeWillBeDeleted(AXNode* node) OVERRIDE { |
| + deleted_ids_.push_back(node->id()); |
| + } |
| + |
| + virtual void OnNodeCreated(AXNode* node) OVERRIDE { |
| + created_ids_.push_back(node->id()); |
| + } |
| + |
| + virtual void OnNodeChanged(AXNode* node) OVERRIDE { |
| + changed_ids_.push_back(node->id()); |
| + } |
| + |
| + virtual void OnRootChanged(AXNode* new_root) OVERRIDE { |
| + new_root_ids_.push_back(new_root->id()); |
| + } |
| + |
| + void Reset() { |
| + deleted_ids_.clear(); |
| + created_ids_.clear(); |
| + changed_ids_.clear(); |
| + new_root_ids_.clear(); |
| + } |
| + |
| + const std::vector<int32>& deleted_ids() { return deleted_ids_; } |
| + const std::vector<int32>& created_ids() { return created_ids_; } |
| + const std::vector<int32>& changed_ids() { return changed_ids_; } |
| + const std::vector<int32>& new_root_ids() { return new_root_ids_; } |
| + |
| + private: |
| + std::vector<int32> deleted_ids_; |
| + std::vector<int32> created_ids_; |
| + std::vector<int32> changed_ids_; |
| + std::vector<int32> new_root_ids_; |
| +}; |
| + |
| +} // anonymous namespace |
|
tfarina
2014/02/19 22:30:43
nit: please remove the 'anonymous' from this comme
dmazzoni
2014/02/19 22:37:02
Done.
|
| + |
| TEST(AXTreeTest, SerializeSimpleAXTree) { |
| AXNodeData root; |
| root.id = 1; |
| @@ -39,27 +80,27 @@ TEST(AXTreeTest, SerializeSimpleAXTree) { |
| initial_state.nodes.push_back(checkbox); |
| AXSerializableTree src_tree(initial_state); |
| - scoped_ptr<AXTreeSource<AXNode> > tree_source( |
| + scoped_ptr<AXTreeSource<const AXNode*> > tree_source( |
| src_tree.CreateTreeSource()); |
| - AXTreeSerializer<AXNode> serializer(tree_source.get()); |
| + AXTreeSerializer<const AXNode*> serializer(tree_source.get()); |
| AXTreeUpdate update; |
| serializer.SerializeChanges(src_tree.GetRoot(), &update); |
| AXTree dst_tree; |
| ASSERT_TRUE(dst_tree.Unserialize(update)); |
| - AXNode* root_node = dst_tree.GetRoot(); |
| + const AXNode* root_node = dst_tree.GetRoot(); |
| ASSERT_TRUE(root_node != NULL); |
| EXPECT_EQ(root.id, root_node->id()); |
| EXPECT_EQ(root.role, root_node->data().role); |
| ASSERT_EQ(2, root_node->child_count()); |
| - AXNode* button_node = root_node->ChildAtIndex(0); |
| + const AXNode* button_node = root_node->ChildAtIndex(0); |
| EXPECT_EQ(button.id, button_node->id()); |
| EXPECT_EQ(button.role, button_node->data().role); |
| - AXNode* checkbox_node = root_node->ChildAtIndex(1); |
| + const AXNode* checkbox_node = root_node->ChildAtIndex(1); |
| EXPECT_EQ(checkbox.id, checkbox_node->id()); |
| EXPECT_EQ(checkbox.role, checkbox_node->data().role); |
| @@ -174,4 +215,37 @@ TEST(AXTreeTest, InvalidReparentingFails) { |
| ASSERT_EQ("Node 3 reparented from 2 to 1", tree.error()); |
| } |
| +TEST(AXTreeTest, TreeDelegateIsCalled) { |
| + AXTreeUpdate initial_state; |
| + initial_state.nodes.resize(1); |
| + initial_state.nodes[0].id = 1; |
| + initial_state.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; |
| + |
| + AXTree tree(initial_state); |
| + AXTreeUpdate update; |
| + update.node_id_to_clear = 1; |
| + update.nodes.resize(2); |
| + update.nodes[0].id = 2; |
| + update.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; |
| + update.nodes[0].child_ids.push_back(3); |
| + update.nodes[1].id = 3; |
| + |
| + MockAXTreeDelegate mock_delegate; |
| + tree.SetDelegate(&mock_delegate); |
| + |
| + EXPECT_TRUE(tree.Unserialize(update)); |
| + |
| + ASSERT_EQ(1U, mock_delegate.deleted_ids().size()); |
| + EXPECT_EQ(1, mock_delegate.deleted_ids()[0]); |
| + |
| + ASSERT_EQ(2U, mock_delegate.created_ids().size()); |
| + EXPECT_EQ(2, mock_delegate.created_ids()[0]); |
| + EXPECT_EQ(3, mock_delegate.created_ids()[1]); |
| + |
| + ASSERT_EQ(1U, mock_delegate.new_root_ids().size()); |
| + EXPECT_EQ(2, mock_delegate.new_root_ids()[0]); |
| + |
| + tree.SetDelegate(NULL); |
| +} |
| + |
| } // namespace ui |