Commit 25f1775b authored by Alexander Surkov's avatar Alexander Surkov Committed by Commit Bot

DumpAccTree testing: move arguments parsing logic into PropertyNode structure.

Bug: 1096512
Change-Id: Ia93a6f95545e1de67916401a490ea2ab239735ab
AX-Relnotes: n/a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2251750
Commit-Queue: Alexander Surkov <asurkov@igalia.com>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#780104}
parent 70a8fdcb
......@@ -81,6 +81,18 @@ PropertyNode::operator bool() const {
return !name_or_value.empty();
}
bool PropertyNode::IsArray() const {
return name_or_value == base::ASCIIToUTF16("[]");
}
base::Optional<int> PropertyNode::AsInt() const {
int value = 0;
if (!base::StringToInt(name_or_value, &value)) {
return base::nullopt;
}
return value;
}
std::string PropertyNode::ToString() const {
std::string out;
for (const auto& index : line_indexes) {
......
......@@ -58,6 +58,10 @@ class CONTENT_EXPORT PropertyNode final {
// be called for.
std::vector<base::string16> line_indexes;
// Argument conversion methods.
bool IsArray() const;
base::Optional<int> AsInt() const;
std::string ToString() const;
private:
......
......@@ -30,11 +30,23 @@ class AccessibilityTreeFormatterBaseTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(AccessibilityTreeFormatterBaseTest);
};
void ParseAndCheck(const char* input, const char* expected) {
PropertyNode Parse(const char* input) {
AccessibilityTreeFormatter::PropertyFilter filter(
base::UTF8ToUTF16(input),
AccessibilityTreeFormatter::PropertyFilter::ALLOW);
auto got = PropertyNode::FromPropertyFilter(filter).ToString();
return PropertyNode::FromPropertyFilter(filter);
}
PropertyNode GetArgumentNode(const char* input) {
auto got = Parse(input);
if (got.parameters.size() == 0) {
return PropertyNode();
}
return std::move(got.parameters[0]);
}
void ParseAndCheck(const char* input, const char* expected) {
auto got = Parse(input).ToString();
EXPECT_EQ(got, expected);
}
......@@ -57,6 +69,11 @@ TEST_F(AccessibilityTreeFormatterBaseTest, ParseProperty) {
ParseAndCheck("Role(3", "Role(3)");
ParseAndCheck("TableFor(CellBy(id", "TableFor(CellBy(id))");
ParseAndCheck("[3, 4", "[](3, 4)");
// Arguments conversion
EXPECT_EQ(GetArgumentNode("ChildAt([3])").IsArray(), true);
EXPECT_EQ(GetArgumentNode("ChildAt(3)").IsArray(), false);
EXPECT_EQ(GetArgumentNode("ChildAt(3)").AsInt(), 3);
}
} // namespace content
......@@ -308,14 +308,14 @@ NSNumber* AccessibilityTreeFormatterMac::PropertyNodeToInt(
return nil;
}
int param = 0;
const auto& intnode = propnode.parameters[0];
if (!base::StringToInt(intnode.name_or_value, &param)) {
base::Optional<int> param = intnode.AsInt();
if (!param) {
LOG(ERROR) << "Failed to parse " << propnode.original_property
<< " to Int: " << intnode.name_or_value << " is not a number";
return nil;
}
return [NSNumber numberWithInt:param];
return [NSNumber numberWithInt:*param];
}
NSArray* AccessibilityTreeFormatterMac::PropertyNodeToIntArray(
......@@ -337,14 +337,14 @@ NSArray* AccessibilityTreeFormatterMac::PropertyNodeToIntArray(
NSMutableArray* array =
[[NSMutableArray alloc] initWithCapacity:arraynode.parameters.size()];
for (const auto& paramnode : arraynode.parameters) {
int param = 0;
if (!base::StringToInt(paramnode.name_or_value, &param)) {
base::Optional<int> param = paramnode.AsInt();
if (!param) {
LOG(ERROR) << "Failed to parse " << propnode.original_property
<< " to IntArray: " << paramnode.name_or_value
<< " is not a number";
return nil;
}
[array addObject:@(param)];
[array addObject:@(*param)];
}
return array;
}
......
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