Commit bfbc431a authored by Dominic Mazzoni's avatar Dominic Mazzoni Committed by Commit Bot

Mojoify AXTreeData and AXTreeUpdate.

Bug: 650275
Change-Id: I4d0120f649809f8b4d9a4b6447b7774a259ae584
Reviewed-on: https://chromium-review.googlesource.com/1000966Reviewed-by: default avatarKen Rockot <rockot@chromium.org>
Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549381}
parent 849ff90f
......@@ -179,6 +179,8 @@ test("accessibility_unittests") {
"ax_tree_serializer_unittest.cc",
"ax_tree_unittest.cc",
"mojom/ax_node_data_mojom_traits_unittest.cc",
"mojom/ax_tree_data_mojom_traits_unittest.cc",
"mojom/ax_tree_update_mojom_traits_unittest.cc",
"platform/ax_platform_node_unittest.cc",
"platform/ax_platform_node_unittest.h",
"platform/ax_platform_node_win_unittest.cc",
......
......@@ -7,6 +7,8 @@ import("//mojo/public/tools/bindings/mojom.gni")
mojom("mojom") {
sources = [
"ax_node_data.mojom",
"ax_tree_data.mojom",
"ax_tree_update.mojom",
]
public_deps = [
......
// 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.
module ax.mojom;
import "ui/accessibility/ax_enums.mojom";
// See ui::AXTreeData for comments / explanations of these fields.
struct AXTreeData {
int32 tree_id;
int32 parent_tree_id;
int32 focused_tree_id;
string doctype;
bool loaded;
float loading_progress;
string mimetype;
string title;
string url;
int32 focus_id;
int32 sel_anchor_object_id;
int32 sel_anchor_offset;
ax.mojom.TextAffinity sel_anchor_affinity;
int32 sel_focus_object_id;
int32 sel_focus_offset;
ax.mojom.TextAffinity sel_focus_affinity;
};
# 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.
mojom = "//ui/accessibility/mojom/ax_tree_data.mojom"
public_headers = [ "//ui/accessibility/ax_tree_data.h" ]
traits_headers = [ "//ui/accessibility/mojom/ax_tree_data_mojom_traits.h" ]
sources = [
"ax_tree_data_mojom_traits.cc",
"ax_tree_data_mojom_traits.h",
]
public_deps = [
"//ui/accessibility",
]
type_mappings = [ "ax.mojom.AXTreeData=ui::AXTreeData" ]
// 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_tree_data_mojom_traits.h"
namespace mojo {
// static
bool StructTraits<ax::mojom::AXTreeDataDataView, ui::AXTreeData>::Read(
ax::mojom::AXTreeDataDataView data,
ui::AXTreeData* out) {
out->tree_id = data.tree_id();
out->parent_tree_id = data.parent_tree_id();
out->focused_tree_id = data.focused_tree_id();
if (!data.ReadDoctype(&out->doctype))
return false;
out->loaded = data.loaded();
out->loading_progress = data.loading_progress();
if (!data.ReadMimetype(&out->mimetype))
return false;
if (!data.ReadTitle(&out->title))
return false;
if (!data.ReadUrl(&out->url))
return false;
out->focus_id = data.focus_id();
out->sel_anchor_object_id = data.sel_anchor_object_id();
out->sel_anchor_offset = data.sel_anchor_offset();
out->sel_anchor_affinity = data.sel_anchor_affinity();
out->sel_focus_object_id = data.sel_focus_object_id();
out->sel_focus_offset = data.sel_focus_offset();
out->sel_focus_affinity = data.sel_focus_affinity();
return true;
}
} // namespace mojo
// 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.
#ifndef UI_ACCESSIBILITY_MOJOM_AX_TREE_DATA_MOJOM_TRAITS_H_
#define UI_ACCESSIBILITY_MOJOM_AX_TREE_DATA_MOJOM_TRAITS_H_
#include "ui/accessibility/ax_tree_data.h"
#include "ui/accessibility/mojom/ax_tree_data.mojom-shared.h"
namespace mojo {
template <>
struct StructTraits<ax::mojom::AXTreeDataDataView, ui::AXTreeData> {
static int32_t tree_id(const ui::AXTreeData& p) { return p.tree_id; }
static int32_t parent_tree_id(const ui::AXTreeData& p) {
return p.parent_tree_id;
}
static int32_t focused_tree_id(const ui::AXTreeData& p) {
return p.focused_tree_id;
}
static std::string doctype(const ui::AXTreeData& p) { return p.doctype; }
static bool loaded(const ui::AXTreeData& p) { return p.loaded; }
static float loading_progress(const ui::AXTreeData& p) {
return p.loading_progress;
}
static std::string mimetype(const ui::AXTreeData& p) { return p.mimetype; }
static std::string title(const ui::AXTreeData& p) { return p.title; }
static std::string url(const ui::AXTreeData& p) { return p.url; }
static int32_t focus_id(const ui::AXTreeData& p) { return p.focus_id; }
static int32_t sel_anchor_object_id(const ui::AXTreeData& p) {
return p.sel_anchor_object_id;
}
static int32_t sel_anchor_offset(const ui::AXTreeData& p) {
return p.sel_anchor_offset;
}
static ax::mojom::TextAffinity sel_anchor_affinity(const ui::AXTreeData& p) {
return p.sel_anchor_affinity;
}
static int32_t sel_focus_object_id(const ui::AXTreeData& p) {
return p.sel_focus_object_id;
}
static int32_t sel_focus_offset(const ui::AXTreeData& p) {
return p.sel_focus_offset;
}
static ax::mojom::TextAffinity sel_focus_affinity(const ui::AXTreeData& p) {
return p.sel_focus_affinity;
}
static bool Read(ax::mojom::AXTreeDataDataView data, ui::AXTreeData* out);
};
} // namespace mojo
#endif // UI_ACCESSIBILITY_MOJOM_AX_TREE_DATA_MOJOM_TRAITS_H_
// 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_tree_data_mojom_traits.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/accessibility/ax_tree_data.h"
#include "ui/accessibility/mojom/ax_tree_data.mojom.h"
using mojo::test::SerializeAndDeserialize;
TEST(AXTreeDataMojomTraitsTest, TestSerializeAndDeserializeAXTreeData) {
ui::AXTreeData input, output;
input.tree_id = 1;
input.parent_tree_id = 2;
input.focused_tree_id = 3;
input.doctype = "4";
input.loaded = true;
input.loading_progress = 5;
input.mimetype = "6";
input.title = "7";
input.url = "8";
input.focus_id = 9;
input.sel_anchor_object_id = 10;
input.sel_anchor_offset = 11;
input.sel_anchor_affinity = ax::mojom::TextAffinity::kUpstream;
input.sel_focus_object_id = 12;
input.sel_focus_offset = 13;
input.sel_focus_affinity = ax::mojom::TextAffinity::kDownstream;
EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXTreeData>(&input, &output));
EXPECT_EQ(1, output.tree_id);
EXPECT_EQ(2, output.parent_tree_id);
EXPECT_EQ(3, output.focused_tree_id);
EXPECT_EQ("4", output.doctype);
EXPECT_EQ(true, output.loaded);
EXPECT_EQ(5, output.loading_progress);
EXPECT_EQ("6", output.mimetype);
EXPECT_EQ("7", output.title);
EXPECT_EQ("8", output.url);
EXPECT_EQ(9, output.focus_id);
EXPECT_EQ(10, output.sel_anchor_object_id);
EXPECT_EQ(11, output.sel_anchor_offset);
EXPECT_EQ(ax::mojom::TextAffinity::kUpstream, output.sel_anchor_affinity);
EXPECT_EQ(12, output.sel_focus_object_id);
EXPECT_EQ(13, output.sel_focus_offset);
EXPECT_EQ(ax::mojom::TextAffinity::kDownstream, output.sel_focus_affinity);
}
// 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.
module ax.mojom;
import "ui/accessibility/ax_enums.mojom";
import "ui/accessibility/mojom/ax_node_data.mojom";
import "ui/accessibility/mojom/ax_tree_data.mojom";
// See ui::AXTreeUpdate for comments / explanations of these fields.
struct AXTreeUpdate {
bool has_tree_data;
AXTreeData tree_data;
int32 node_id_to_clear;
int32 root_id;
array<AXNodeData> nodes;
};
# 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.
mojom = "//ui/accessibility/mojom/ax_tree_update.mojom"
public_headers = [ "//ui/accessibility/ax_tree_update.h" ]
traits_headers = [ "//ui/accessibility/mojom/ax_tree_update_mojom_traits.h" ]
sources = [
"ax_tree_update_mojom_traits.cc",
"ax_tree_update_mojom_traits.h",
]
public_deps = [
"//ui/accessibility",
]
type_mappings = [ "ax.mojom.AXTreeUpdate=ui::AXTreeUpdate" ]
// 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_tree_update_mojom_traits.h"
namespace mojo {
// static
bool StructTraits<ax::mojom::AXTreeUpdateDataView, ui::AXTreeUpdate>::Read(
ax::mojom::AXTreeUpdateDataView data,
ui::AXTreeUpdate* out) {
out->has_tree_data = data.has_tree_data();
if (!data.ReadTreeData(&out->tree_data))
return false;
out->node_id_to_clear = data.node_id_to_clear();
out->root_id = data.root_id();
if (!data.ReadNodes(&out->nodes))
return false;
return true;
}
} // namespace mojo
// 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.
#ifndef UI_ACCESSIBILITY_MOJOM_AX_TREE_UPDATE_MOJOM_TRAITS_H_
#define UI_ACCESSIBILITY_MOJOM_AX_TREE_UPDATE_MOJOM_TRAITS_H_
#include "ui/accessibility/ax_tree_update.h"
#include "ui/accessibility/mojom/ax_node_data_mojom_traits.h"
#include "ui/accessibility/mojom/ax_tree_data_mojom_traits.h"
#include "ui/accessibility/mojom/ax_tree_update.mojom-shared.h"
namespace mojo {
template <>
struct StructTraits<ax::mojom::AXTreeUpdateDataView, ui::AXTreeUpdate> {
static bool has_tree_data(const ui::AXTreeUpdate& p) {
return p.has_tree_data;
}
static ui::AXTreeData tree_data(const ui::AXTreeUpdate& p) {
return p.tree_data;
}
static int32_t node_id_to_clear(const ui::AXTreeUpdate& p) {
return p.node_id_to_clear;
}
static int32_t root_id(const ui::AXTreeUpdate& p) { return p.root_id; }
static std::vector<ui::AXNodeData> nodes(const ui::AXTreeUpdate& p) {
return p.nodes;
}
static bool Read(ax::mojom::AXTreeUpdateDataView data, ui::AXTreeUpdate* out);
};
} // namespace mojo
#endif // UI_ACCESSIBILITY_MOJOM_AX_TREE_UPDATE_MOJOM_TRAITS_H_
// 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_tree_update_mojom_traits.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/accessibility/ax_tree_update.h"
#include "ui/accessibility/mojom/ax_tree_update.mojom.h"
using mojo::test::SerializeAndDeserialize;
TEST(AXTreeUpdateMojomTraitsTest, TestSerializeAndDeserializeAXTreeUpdate) {
ui::AXTreeUpdate input, output;
input.has_tree_data = true;
input.tree_data.focus_id = 1;
input.node_id_to_clear = 2;
input.root_id = 3;
input.nodes.resize(2);
input.nodes[0].role = ax::mojom::Role::kButton;
input.nodes[1].id = 4;
EXPECT_TRUE(
SerializeAndDeserialize<ax::mojom::AXTreeUpdate>(&input, &output));
EXPECT_EQ(true, output.has_tree_data);
EXPECT_EQ(1, output.tree_data.focus_id);
EXPECT_EQ(2, output.node_id_to_clear);
EXPECT_EQ(3, output.root_id);
ASSERT_EQ(2U, output.nodes.size());
EXPECT_EQ(ax::mojom::Role::kButton, output.nodes[0].role);
EXPECT_EQ(4, output.nodes[1].id);
}
# Copyright 2019 The Chromium Authors. All rights reserved.
# 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.
typemaps = [ "//ui/accessibility/mojom/ax_node_data.typemap" ]
typemaps = [
"//ui/accessibility/mojom/ax_node_data.typemap",
"//ui/accessibility/mojom/ax_tree_data.typemap",
"//ui/accessibility/mojom/ax_tree_update.typemap",
]
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