ax_node_data_mojom_traits_unittest.cc 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. // Copyright 2018 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. #include "ui/accessibility/mojom/ax_node_data_mojom_traits.h"
  5. #include "mojo/public/cpp/test_support/test_utils.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. #include "ui/accessibility/ax_node_data.h"
  8. #include "ui/accessibility/mojom/ax_node_data.mojom.h"
  9. #include "ui/accessibility/mojom/ax_relative_bounds_mojom_traits.h"
  10. using mojo::test::SerializeAndDeserialize;
  11. TEST(AXNodeDataMojomTraitsTest, ID) {
  12. ui::AXNodeData input, output;
  13. input.id = 42;
  14. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  15. EXPECT_EQ(42, output.id);
  16. }
  17. TEST(AXNodeDataMojomTraitsTest, Role) {
  18. ui::AXNodeData input, output;
  19. input.role = ax::mojom::Role::kButton;
  20. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  21. EXPECT_EQ(ax::mojom::Role::kButton, output.role);
  22. }
  23. TEST(AXNodeDataMojomTraitsTest, State) {
  24. ui::AXNodeData input, output;
  25. input.state = 0;
  26. input.AddState(ax::mojom::State::kCollapsed);
  27. input.AddState(ax::mojom::State::kHorizontal);
  28. input.AddState(ax::mojom::State::kMaxValue);
  29. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  30. EXPECT_TRUE(output.HasState(ax::mojom::State::kCollapsed));
  31. EXPECT_TRUE(output.HasState(ax::mojom::State::kHorizontal));
  32. EXPECT_TRUE(output.HasState(ax::mojom::State::kMaxValue));
  33. EXPECT_FALSE(output.HasState(ax::mojom::State::kFocusable));
  34. EXPECT_FALSE(output.HasState(ax::mojom::State::kMultiline));
  35. }
  36. TEST(AXNodeDataMojomTraitsTest, Actions) {
  37. ui::AXNodeData input, output;
  38. input.actions = 0;
  39. input.AddAction(ax::mojom::Action::kDoDefault);
  40. input.AddAction(ax::mojom::Action::kDecrement);
  41. input.AddAction(ax::mojom::Action::kMaxValue);
  42. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  43. EXPECT_TRUE(output.HasAction(ax::mojom::Action::kDoDefault));
  44. EXPECT_TRUE(output.HasAction(ax::mojom::Action::kDecrement));
  45. EXPECT_TRUE(output.HasAction(ax::mojom::Action::kMaxValue));
  46. EXPECT_FALSE(output.HasAction(ax::mojom::Action::kFocus));
  47. EXPECT_FALSE(output.HasAction(ax::mojom::Action::kBlur));
  48. }
  49. TEST(AXNodeDataMojomTraitsTest, StringAttributes) {
  50. ui::AXNodeData input, output;
  51. input.AddStringAttribute(ax::mojom::StringAttribute::kName, "Mojo");
  52. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  53. EXPECT_EQ("Mojo",
  54. output.GetStringAttribute(ax::mojom::StringAttribute::kName));
  55. }
  56. TEST(AXNodeDataMojomTraitsTest, IntAttributes) {
  57. ui::AXNodeData input, output;
  58. input.AddIntAttribute(ax::mojom::IntAttribute::kScrollX, 42);
  59. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  60. EXPECT_EQ(42, output.GetIntAttribute(ax::mojom::IntAttribute::kScrollX));
  61. }
  62. TEST(AXNodeDataMojomTraitsTest, FloatAttributes) {
  63. ui::AXNodeData input, output;
  64. input.AddFloatAttribute(ax::mojom::FloatAttribute::kFontSize, 42);
  65. input.AddFloatAttribute(ax::mojom::FloatAttribute::kFontWeight, 100);
  66. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  67. EXPECT_EQ(42, output.GetFloatAttribute(ax::mojom::FloatAttribute::kFontSize));
  68. EXPECT_EQ(100,
  69. output.GetFloatAttribute(ax::mojom::FloatAttribute::kFontWeight));
  70. }
  71. TEST(AXNodeDataMojomTraitsTest, BoolAttributes) {
  72. ui::AXNodeData input, output;
  73. input.AddBoolAttribute(ax::mojom::BoolAttribute::kBusy, true);
  74. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  75. EXPECT_TRUE(output.GetBoolAttribute(ax::mojom::BoolAttribute::kBusy));
  76. }
  77. TEST(AXNodeDataMojomTraitsTest, IntListAttributes) {
  78. ui::AXNodeData input, output;
  79. input.AddIntListAttribute(ax::mojom::IntListAttribute::kControlsIds, {1, 2});
  80. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  81. EXPECT_EQ(
  82. std::vector<int32_t>({1, 2}),
  83. output.GetIntListAttribute(ax::mojom::IntListAttribute::kControlsIds));
  84. }
  85. TEST(AXNodeDataMojomTraitsTest, StringListAttributes) {
  86. ui::AXNodeData input, output;
  87. input.AddStringListAttribute(
  88. ax::mojom::StringListAttribute::kCustomActionDescriptions,
  89. {"foo", "bar"});
  90. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  91. EXPECT_EQ(std::vector<std::string>({"foo", "bar"}),
  92. output.GetStringListAttribute(
  93. ax::mojom::StringListAttribute::kCustomActionDescriptions));
  94. }
  95. TEST(AXNodeDataMojomTraitsTest, ChildIds) {
  96. ui::AXNodeData input, output;
  97. input.child_ids = {3, 4};
  98. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  99. EXPECT_EQ(std::vector<int32_t>({3, 4}), output.child_ids);
  100. }
  101. TEST(AXNodeDataMojomTraitsTest, OffsetContainerID) {
  102. ui::AXNodeData input, output;
  103. input.relative_bounds.offset_container_id = 10;
  104. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  105. EXPECT_EQ(10, output.relative_bounds.offset_container_id);
  106. }
  107. TEST(AXNodeDataMojomTraitsTest, RelativeBounds) {
  108. ui::AXNodeData input, output;
  109. input.relative_bounds.bounds = gfx::RectF(1, 2, 3, 4);
  110. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  111. EXPECT_EQ(1, output.relative_bounds.bounds.x());
  112. EXPECT_EQ(2, output.relative_bounds.bounds.y());
  113. EXPECT_EQ(3, output.relative_bounds.bounds.width());
  114. EXPECT_EQ(4, output.relative_bounds.bounds.height());
  115. }
  116. TEST(AXNodeDataMojomTraitsTest, Transform) {
  117. ui::AXNodeData input, output;
  118. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  119. EXPECT_FALSE(output.relative_bounds.transform);
  120. input.relative_bounds.transform = std::make_unique<gfx::Transform>();
  121. input.relative_bounds.transform->Scale(2.0, 2.0);
  122. EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXNodeData>(input, output));
  123. EXPECT_TRUE(output.relative_bounds.transform);
  124. EXPECT_FALSE(output.relative_bounds.transform->IsIdentity());
  125. }