diff --git a/DEPS b/DEPS index 3f55c359ab519..03b0030e198b9 100644 --- a/DEPS +++ b/DEPS @@ -45,7 +45,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'f6947099081d1f99ab7c9656c076a402e5fa6aee', + 'dart_revision': '760722f8224b0b2ee89a10d11f2493924d5cf2c7', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/shell/platform/linux/fl_accessible_node.cc b/shell/platform/linux/fl_accessible_node.cc index d5229a9f0e5e1..75c7b7ec1edf4 100644 --- a/shell/platform/linux/fl_accessible_node.cc +++ b/shell/platform/linux/fl_accessible_node.cc @@ -71,6 +71,7 @@ struct _FlAccessibleNode { int32_t id; gchar* name; + gint index; gint x, y, width, height; GPtrArray* actions; gsize actions_length; @@ -164,6 +165,12 @@ static AtkObject* fl_accessible_node_get_parent(AtkObject* accessible) { return self->parent; } +// Implements AtkObject::get_index_in_parent. +static gint fl_accessible_node_get_index_in_parent(AtkObject* accessible) { + FlAccessibleNode* self = FL_ACCESSIBLE_NODE(accessible); + return self->index; +} + // Implements AtkObject::get_n_children. static gint fl_accessible_node_get_n_children(AtkObject* accessible) { FlAccessibleNode* self = FL_ACCESSIBLE_NODE(accessible); @@ -303,6 +310,8 @@ static void fl_accessible_node_class_init(FlAccessibleNodeClass* klass) { G_OBJECT_CLASS(klass)->dispose = fl_accessible_node_dispose; ATK_OBJECT_CLASS(klass)->get_name = fl_accessible_node_get_name; ATK_OBJECT_CLASS(klass)->get_parent = fl_accessible_node_get_parent; + ATK_OBJECT_CLASS(klass)->get_index_in_parent = + fl_accessible_node_get_index_in_parent; ATK_OBJECT_CLASS(klass)->get_n_children = fl_accessible_node_get_n_children; ATK_OBJECT_CLASS(klass)->ref_child = fl_accessible_node_ref_child; ATK_OBJECT_CLASS(klass)->get_role = fl_accessible_node_get_role; @@ -340,9 +349,12 @@ FlAccessibleNode* fl_accessible_node_new(FlEngine* engine, int32_t id) { return self; } -void fl_accessible_node_set_parent(FlAccessibleNode* self, AtkObject* parent) { +void fl_accessible_node_set_parent(FlAccessibleNode* self, + AtkObject* parent, + gint index) { g_return_if_fail(FL_IS_ACCESSIBLE_NODE(self)); self->parent = parent; + self->index = index; g_object_add_weak_pointer(G_OBJECT(self), reinterpret_cast(&(self->parent))); } diff --git a/shell/platform/linux/fl_accessible_node.h b/shell/platform/linux/fl_accessible_node.h index 4a990d9b2263a..20cf498a5a216 100644 --- a/shell/platform/linux/fl_accessible_node.h +++ b/shell/platform/linux/fl_accessible_node.h @@ -45,10 +45,13 @@ FlAccessibleNode* fl_accessible_node_new(FlEngine* engine, int32_t id); * fl_accessible_node_new: * @node: an #FlAccessibleNode. * @parent: an #AtkObject. + * @index: the index of this node in the parent. * * Sets the parent of this node. The parent can be changed at any time. */ -void fl_accessible_node_set_parent(FlAccessibleNode* node, AtkObject* parent); +void fl_accessible_node_set_parent(FlAccessibleNode* node, + AtkObject* parent, + gint index); /** * fl_accessible_node_new: diff --git a/shell/platform/linux/fl_accessible_node_test.cc b/shell/platform/linux/fl_accessible_node_test.cc index 4704f6f30b8cd..062f23f9ffcc7 100644 --- a/shell/platform/linux/fl_accessible_node_test.cc +++ b/shell/platform/linux/fl_accessible_node_test.cc @@ -14,9 +14,9 @@ TEST(FlAccessibleNodeTest, BuildTree) { g_autoptr(FlAccessibleNode) root = fl_accessible_node_new(engine, 0); g_autoptr(FlAccessibleNode) child1 = fl_accessible_node_new(engine, 1); - fl_accessible_node_set_parent(child1, ATK_OBJECT(root)); + fl_accessible_node_set_parent(child1, ATK_OBJECT(root), 0); g_autoptr(FlAccessibleNode) child2 = fl_accessible_node_new(engine, 1); - fl_accessible_node_set_parent(child2, ATK_OBJECT(root)); + fl_accessible_node_set_parent(child2, ATK_OBJECT(root), 1); g_autoptr(GPtrArray) children = g_ptr_array_new_with_free_func(g_object_unref); g_ptr_array_add(children, g_object_ref(child1)); @@ -24,6 +24,7 @@ TEST(FlAccessibleNodeTest, BuildTree) { fl_accessible_node_set_children(root, children); EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(root)), 2); + EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(root)), 0); g_autoptr(AtkObject) c1 = atk_object_ref_accessible_child(ATK_OBJECT(root), 0); EXPECT_EQ(ATK_OBJECT(child1), c1); @@ -33,9 +34,11 @@ TEST(FlAccessibleNodeTest, BuildTree) { EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(root)), nullptr); EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child1)), ATK_OBJECT(root)); + EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child1)), 0); EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child1)), 0); EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child2)), ATK_OBJECT(root)); + EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child2)), 1); EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child2)), 0); } diff --git a/shell/platform/linux/fl_view_accessible.cc b/shell/platform/linux/fl_view_accessible.cc index af6e1da3ef595..814bbb4faf052 100644 --- a/shell/platform/linux/fl_view_accessible.cc +++ b/shell/platform/linux/fl_view_accessible.cc @@ -29,7 +29,7 @@ static FlAccessibleNode* get_node(FlViewAccessible* self, int32_t id) { FlView* view = FL_VIEW(gtk_accessible_get_widget(GTK_ACCESSIBLE(self))); node = fl_accessible_node_new(fl_view_get_engine(view), id); if (id == 0) { - fl_accessible_node_set_parent(node, ATK_OBJECT(self)); + fl_accessible_node_set_parent(node, ATK_OBJECT(self), 0); } g_hash_table_insert(self->semantics_nodes_by_id, GINT_TO_POINTER(id), reinterpret_cast(node)); @@ -91,7 +91,7 @@ void fl_view_accessible_handle_update_semantics_node( for (size_t i = 0; i < node->child_count; i++) { FlAccessibleNode* child = get_node(self, node->children_in_traversal_order[i]); - fl_accessible_node_set_parent(child, ATK_OBJECT(atk_node)); + fl_accessible_node_set_parent(child, ATK_OBJECT(atk_node), i); g_ptr_array_add(children, child); } fl_accessible_node_set_children(atk_node, children);