Commit d270618e authored by Hiroki Sato's avatar Hiroki Sato Committed by Chromium LUCI CQ

arc-a11y: Reduce duplicated SetProperty() in tests

AX-Relnotes: n/a.
Bug: none
Test: unit_tests

Change-Id: I12159738edf5c9be6c6ca2e830f8e3e266e13a82
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2596670
Commit-Queue: Hiroki Sato <hirokisato@chromium.org>
Reviewed-by: default avatarSara Kato <sarakato@chromium.org>
Reviewed-by: default avatarYuichiro Hanada <yhanada@chromium.org>
Cr-Commit-Position: refs/heads/master@{#839303}
parent 7bd2d0f9
......@@ -3349,6 +3349,7 @@ source_set("unit_tests") {
"apps/metrics/intent_handling_metrics_unittest.cc",
"arc/accessibility/accessibility_node_info_data_wrapper_unittest.cc",
"arc/accessibility/arc_accessibility_helper_bridge_unittest.cc",
"arc/accessibility/arc_accessibility_test_util.h",
"arc/accessibility/arc_accessibility_util_unittest.cc",
"arc/accessibility/auto_complete_handler_unittest.cc",
"arc/accessibility/ax_tree_source_arc_unittest.cc",
......
......@@ -23,6 +23,7 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_test_util.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_util.h"
#include "chrome/common/extensions/api/accessibility_private.h"
#include "chrome/common/pref_names.h"
......@@ -338,7 +339,7 @@ TEST_F(ArcAccessibilityHelperBridgeTest, WindowIdTaskIdMapping) {
event->node_data.push_back(arc::mojom::AccessibilityNodeInfoData::New());
event->node_data[0]->id = 10;
event->node_data[0]->window_id = 100;
SetProperty(event->node_data[0]->int_list_properties,
SetProperty(event->node_data[0].get(),
mojom::AccessibilityIntListProperty::CHILD_NODE_IDS, {1, 2, 3});
for (int i = 1; i <= 3; i++) {
// This creates focusable nodes.
......@@ -346,11 +347,11 @@ TEST_F(ArcAccessibilityHelperBridgeTest, WindowIdTaskIdMapping) {
event->node_data.push_back(arc::mojom::AccessibilityNodeInfoData::New());
event->node_data[i]->id = i;
event->node_data[i]->window_id = 100;
SetProperty(event->node_data[i]->boolean_properties,
SetProperty(event->node_data[i].get(),
mojom::AccessibilityBooleanProperty::IMPORTANCE, true);
SetProperty(event->node_data[i]->boolean_properties,
SetProperty(event->node_data[i].get(),
mojom::AccessibilityBooleanProperty::VISIBLE_TO_USER, true);
SetProperty(event->node_data[i]->string_properties,
SetProperty(event->node_data[i].get(),
mojom::AccessibilityStringProperty::CONTENT_DESCRIPTION,
"node" + base::NumberToString(i) + " description");
}
......@@ -361,8 +362,8 @@ TEST_F(ArcAccessibilityHelperBridgeTest, WindowIdTaskIdMapping) {
event->window_data->back().get();
root_window->window_id = 100;
root_window->root_node_id = 10;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
// There's no active window.
helper_bridge->OnAccessibilityEvent(event.Clone());
......
// Copyright 2020 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.
#ifndef CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ARC_ACCESSIBILITY_TEST_UTIL_H_
#define CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ARC_ACCESSIBILITY_TEST_UTIL_H_
#include "base/containers/flat_map.h"
#include "base/optional.h"
#include "base/stl_util.h"
#include "components/arc/mojom/accessibility_helper.mojom.h"
namespace arc {
template <class PropType, class ValueType>
void SetProperty(
base::Optional<base::flat_map<PropType, ValueType>>& properties,
PropType prop,
const ValueType& value) {
if (!properties.has_value())
properties = base::flat_map<PropType, ValueType>();
properties->insert_or_assign(prop, value);
}
#define DEF_SET_PROP(data_type, prop_type, data_member_name, value_type) \
inline void SetProperty(data_type* data, prop_type prop, \
const value_type& value) { \
SetProperty(data->data_member_name, prop, value); \
} \
inline void SetProperty(data_type& data, prop_type prop, \
const value_type& value) { \
SetProperty(data.data_member_name, prop, value); \
}
DEF_SET_PROP(mojom::AccessibilityEventData,
mojom::AccessibilityEventIntProperty,
int_properties,
int32_t)
DEF_SET_PROP(mojom::AccessibilityEventData,
mojom::AccessibilityEventIntListProperty,
int_list_properties,
std::vector<int32_t>)
DEF_SET_PROP(mojom::AccessibilityNodeInfoData,
mojom::AccessibilityBooleanProperty,
boolean_properties,
bool)
DEF_SET_PROP(mojom::AccessibilityNodeInfoData,
mojom::AccessibilityIntProperty,
int_properties,
int32_t)
DEF_SET_PROP(mojom::AccessibilityNodeInfoData,
mojom::AccessibilityIntListProperty,
int_list_properties,
std::vector<int32_t>)
DEF_SET_PROP(mojom::AccessibilityNodeInfoData,
mojom::AccessibilityStringProperty,
string_properties,
std::string)
DEF_SET_PROP(mojom::AccessibilityWindowInfoData,
mojom::AccessibilityWindowBooleanProperty,
boolean_properties,
bool)
DEF_SET_PROP(mojom::AccessibilityWindowInfoData,
mojom::AccessibilityWindowIntProperty,
int_properties,
int32_t)
DEF_SET_PROP(mojom::AccessibilityWindowInfoData,
mojom::AccessibilityWindowIntListProperty,
int_list_properties,
std::vector<int32_t>)
DEF_SET_PROP(mojom::AccessibilityWindowInfoData,
mojom::AccessibilityWindowStringProperty,
string_properties,
std::string)
#undef DEF_SET_PROP
} // namespace arc
#endif // CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ARC_ACCESSIBILITY_TEST_UTIL_H_
......@@ -97,20 +97,6 @@ bool HasNonEmptyStringProperty(InfoDataType* node, PropType prop) {
return !it->second.empty();
}
// Sets property to mojom struct. Used in test.
template <class PropType, class ValueType>
void SetProperty(
base::Optional<base::flat_map<PropType, ValueType>>& properties,
PropType prop,
const ValueType& value) {
if (!properties.has_value())
properties = base::flat_map<PropType, ValueType>();
auto& prop_map = properties.value();
base::EraseIf(prop_map, [prop](auto it) { return it.first == prop; });
prop_map.insert(std::make_pair(prop, value));
}
} // namespace arc
#endif // CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ARC_ACCESSIBILITY_UTIL_H_
......@@ -11,6 +11,7 @@
#include "chrome/browser/chromeos/arc/accessibility/accessibility_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_test_util.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_util.h"
#include "chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h"
#include "components/arc/mojom/accessibility_helper.mojom.h"
......@@ -32,38 +33,6 @@ using AXWindowInfoData = mojom::AccessibilityWindowInfoData;
using AXWindowIntProperty = mojom::AccessibilityWindowIntProperty;
using AXWindowIntListProperty = mojom::AccessibilityWindowIntListProperty;
namespace {
void SetProperty(AXNodeInfoData* node, AXBooleanProperty prop, bool value) {
arc::SetProperty(node->boolean_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(node->int_list_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXStringProperty prop,
const std::string& value) {
arc::SetProperty(node->string_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowIntProperty prop,
int value) {
arc::SetProperty(window->int_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(window->int_list_properties, prop, value);
}
} // namespace
class AutoCompleteHandlerTest : public testing::Test,
public AXTreeSourceArc::Delegate {
public:
......
......@@ -10,6 +10,7 @@
#include "base/stl_util.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_test_util.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_util.h"
#include "components/arc/mojom/accessibility_helper.mojom.h"
#include "extensions/browser/api/automation_internal/automation_event_router.h"
......@@ -42,64 +43,6 @@ using AXWindowIntProperty = mojom::AccessibilityWindowIntProperty;
using AXWindowIntListProperty = mojom::AccessibilityWindowIntListProperty;
using AXWindowStringProperty = mojom::AccessibilityWindowStringProperty;
namespace {
void SetProperty(AXNodeInfoData* node, AXBooleanProperty prop, bool value) {
arc::SetProperty(node->boolean_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXStringProperty prop,
const std::string& value) {
arc::SetProperty(node->string_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node, AXIntProperty prop, int32_t value) {
arc::SetProperty(node->int_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowStringProperty prop,
const std::string& value) {
arc::SetProperty(window->string_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(node->int_list_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowBooleanProperty prop,
bool value) {
arc::SetProperty(window->boolean_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowIntProperty prop,
int value) {
arc::SetProperty(window->int_properties, prop, value);
}
void SetProperty(AXWindowInfoData* window,
AXWindowIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(window->int_list_properties, prop, value);
}
void SetProperty(AXEventData* event, AXEventIntProperty prop, int32_t value) {
arc::SetProperty(event->int_properties, prop, value);
}
void SetProperty(AXEventData* event,
AXEventIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(event->int_list_properties, prop, value);
}
} // namespace
class MockAutomationEventRouter
: public extensions::AutomationEventRouterInterface {
public:
......@@ -601,8 +544,7 @@ TEST_F(AXTreeSourceArcTest, GetTreeDataAppliesFocus) {
AXWindowInfoData* root = event->window_data->back().get();
root->window_id = 5;
SetProperty(root, AXWindowIntListProperty::CHILD_WINDOW_IDS, {1});
SetProperty(root->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root, mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
// Add a child window.
event->window_data->push_back(AXWindowInfoData::New());
......@@ -635,8 +577,8 @@ TEST_F(AXTreeSourceArcTest, OnViewSelectedEvent) {
AXWindowInfoData* root_window = event->window_data->back().get();
root_window->window_id = 100;
root_window->root_node_id = 10;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
event->node_data.push_back(AXNodeInfoData::New());
AXNodeInfoData* root = event->node_data.back().get();
......@@ -748,8 +690,8 @@ TEST_F(AXTreeSourceArcTest, OnWindowStateChangedEvent) {
AXWindowInfoData* root_window = event->window_data->back().get();
root_window->window_id = 100;
root_window->root_node_id = 10;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
event->node_data.push_back(AXNodeInfoData::New());
AXNodeInfoData* root = event->node_data.back().get();
......@@ -848,8 +790,8 @@ TEST_F(AXTreeSourceArcTest, OnFocusEvent) {
AXWindowInfoData* root_window = event->window_data->back().get();
root_window->window_id = 100;
root_window->root_node_id = 10;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
event->node_data.push_back(AXNodeInfoData::New());
AXNodeInfoData* root = event->node_data.back().get();
......@@ -1134,8 +1076,8 @@ TEST_F(AXTreeSourceArcTest, SyncFocus) {
AXWindowInfoData* root_window = event->window_data->back().get();
root_window->window_id = 100;
root_window->root_node_id = 10;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
event->node_data.push_back(AXNodeInfoData::New());
AXNodeInfoData* root = event->node_data.back().get();
......@@ -1344,8 +1286,8 @@ TEST_F(AXTreeSourceArcTest, EnsureNodeIdMapCleared) {
AXWindowInfoData* root_window = event->window_data->back().get();
root_window->window_id = 2;
root_window->root_node_id = 1;
SetProperty(root_window->boolean_properties,
mojom::AccessibilityWindowBooleanProperty::FOCUSED, true);
SetProperty(root_window, mojom::AccessibilityWindowBooleanProperty::FOCUSED,
true);
event->node_data.push_back(AXNodeInfoData::New());
AXNodeInfoData* node = event->node_data.back().get();
......
......@@ -11,6 +11,7 @@
#include "chrome/browser/chromeos/arc/accessibility/accessibility_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/accessibility_window_info_data_wrapper.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_test_util.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_util.h"
#include "chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h"
#include "components/arc/mojom/accessibility_helper.mojom.h"
......@@ -28,26 +29,6 @@ using AXNodeInfoData = mojom::AccessibilityNodeInfoData;
using AXStringProperty = mojom::AccessibilityStringProperty;
using AXWindowInfoData = mojom::AccessibilityWindowInfoData;
namespace {
void SetProperty(AXNodeInfoData* node, AXBooleanProperty prop, bool value) {
arc::SetProperty(node->boolean_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXIntListProperty prop,
const std::vector<int>& value) {
arc::SetProperty(node->int_list_properties, prop, value);
}
void SetProperty(AXNodeInfoData* node,
AXStringProperty prop,
const std::string& value) {
arc::SetProperty(node->string_properties, prop, value);
}
} // namespace
class DrawerLayoutHandlerTest : public testing::Test,
public AXTreeSourceArc::Delegate {
public:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment