| // Copyright 2018 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 "ui/accessibility/mojom/ax_node_data_mojom_traits.h" |
| #include "mojo/public/cpp/test_support/test_utils.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/accessibility/ax_node_data.h" |
| #include "ui/accessibility/mojom/ax_node_data.mojom.h" |
| #include "ui/accessibility/mojom/ax_relative_bounds_mojom_traits.h" |
| |
| using mojo::test::SerializeAndDeserialize; |
| |
| TEST(AXNodeDataMojomTraitsTest, ID) { |
| ui::AXNodeData input, output; |
| input.id = 42; |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(42, output.id); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, Role) { |
| ui::AXNodeData input, output; |
| input.role = ax::mojom::Role::kButton; |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(ax::mojom::Role::kButton, output.role); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, State) { |
| ui::AXNodeData input, output; |
| input.state = 0; |
| input.AddState(ax::mojom::State::kCollapsed); |
| input.AddState(ax::mojom::State::kHorizontal); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_TRUE(output.HasState(ax::mojom::State::kCollapsed)); |
| EXPECT_TRUE(output.HasState(ax::mojom::State::kHorizontal)); |
| EXPECT_FALSE(output.HasState(ax::mojom::State::kFocusable)); |
| EXPECT_FALSE(output.HasState(ax::mojom::State::kMultiline)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, Actions) { |
| ui::AXNodeData input, output; |
| input.actions = 0; |
| input.AddAction(ax::mojom::Action::kDoDefault); |
| input.AddAction(ax::mojom::Action::kDecrement); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_TRUE(output.HasAction(ax::mojom::Action::kDoDefault)); |
| EXPECT_TRUE(output.HasAction(ax::mojom::Action::kDecrement)); |
| EXPECT_FALSE(output.HasAction(ax::mojom::Action::kFocus)); |
| EXPECT_FALSE(output.HasAction(ax::mojom::Action::kBlur)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, StringAttributes) { |
| ui::AXNodeData input, output; |
| input.AddStringAttribute(ax::mojom::StringAttribute::kName, "Mojo"); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ("Mojo", |
| output.GetStringAttribute(ax::mojom::StringAttribute::kName)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, IntAttributes) { |
| ui::AXNodeData input, output; |
| input.AddIntAttribute(ax::mojom::IntAttribute::kScrollX, 42); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(42, output.GetIntAttribute(ax::mojom::IntAttribute::kScrollX)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, FloatAttributes) { |
| ui::AXNodeData input, output; |
| input.AddFloatAttribute(ax::mojom::FloatAttribute::kFontSize, 42); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(42, output.GetFloatAttribute(ax::mojom::FloatAttribute::kFontSize)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, BoolAttributes) { |
| ui::AXNodeData input, output; |
| input.AddBoolAttribute(ax::mojom::BoolAttribute::kBusy, true); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_TRUE(output.GetBoolAttribute(ax::mojom::BoolAttribute::kBusy)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, IntListAttributes) { |
| ui::AXNodeData input, output; |
| input.AddIntListAttribute(ax::mojom::IntListAttribute::kControlsIds, {1, 2}); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ( |
| std::vector<int32_t>({1, 2}), |
| output.GetIntListAttribute(ax::mojom::IntListAttribute::kControlsIds)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, StringListAttributes) { |
| ui::AXNodeData input, output; |
| input.AddStringListAttribute( |
| ax::mojom::StringListAttribute::kCustomActionDescriptions, |
| {"foo", "bar"}); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(std::vector<std::string>({"foo", "bar"}), |
| output.GetStringListAttribute( |
| ax::mojom::StringListAttribute::kCustomActionDescriptions)); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, ChildIds) { |
| ui::AXNodeData input, output; |
| input.child_ids = {3, 4}; |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(std::vector<int32_t>({3, 4}), output.child_ids); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, OffsetContainerID) { |
| ui::AXNodeData input, output; |
| input.relative_bounds.offset_container_id = 10; |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(10, output.relative_bounds.offset_container_id); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, RelativeBounds) { |
| ui::AXNodeData input, output; |
| input.relative_bounds.bounds = gfx::RectF(1, 2, 3, 4); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_EQ(1, output.relative_bounds.bounds.x()); |
| EXPECT_EQ(2, output.relative_bounds.bounds.y()); |
| EXPECT_EQ(3, output.relative_bounds.bounds.width()); |
| EXPECT_EQ(4, output.relative_bounds.bounds.height()); |
| } |
| |
| TEST(AXNodeDataMojomTraitsTest, Transform) { |
| ui::AXNodeData input, output; |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_FALSE(output.relative_bounds.transform); |
| |
| input.relative_bounds.transform = std::make_unique<gfx::Transform>(); |
| input.relative_bounds.transform->Scale(2.0, 2.0); |
| EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(&input, &output)); |
| EXPECT_TRUE(output.relative_bounds.transform); |
| EXPECT_FALSE(output.relative_bounds.transform->IsIdentity()); |
| } |