Flutter Engine
 
Loading...
Searching...
No Matches
fl_view_accessible.h File Reference

Go to the source code of this file.

Functions

G_BEGIN_DECLS G_DECLARE_FINAL_TYPE (FlViewAccessible, fl_view_accessible, FL, VIEW_ACCESSIBLE, AtkPlug) FlViewAccessible *fl_view_accessible_new(FlEngine *engine
 
void fl_view_accessible_handle_update_semantics (FlViewAccessible *accessible, const FlutterSemanticsUpdate2 *update)
 

Variables

G_BEGIN_DECLS FlutterViewId view_id
 

Function Documentation

◆ fl_view_accessible_handle_update_semantics()

void fl_view_accessible_handle_update_semantics ( FlViewAccessible *  accessible,
const FlutterSemanticsUpdate2 update 
)

fl_view_accessible_handle_update_semantics: @accessible: an #FlViewAccessible. @update: semantic update information.

Handle a semantics update from Flutter.

Definition at line 143 of file fl_view_accessible.cc.

145 {
146 g_return_if_fail(FL_IS_VIEW_ACCESSIBLE(self));
147
148 g_autoptr(GHashTable) pending_children =
149 g_hash_table_new_full(g_direct_hash, g_direct_equal, nullptr,
150 reinterpret_cast<GDestroyNotify>(fl_value_unref));
151 for (size_t i = 0; i < update->node_count; i++) {
152 FlutterSemanticsNode2* node = update->nodes[i];
153 FlAccessibleNode* atk_node = get_node(self, node);
154
155 fl_accessible_node_set_flags(atk_node, node->flags2);
157 fl_accessible_node_set_name(atk_node, node->label);
159 atk_node, node->rect.left + node->transform.transX,
160 node->rect.top + node->transform.transY,
161 node->rect.right - node->rect.left, node->rect.bottom - node->rect.top);
162 fl_accessible_node_set_value(atk_node, node->value);
166
169 g_hash_table_insert(pending_children, atk_node, children);
170 }
171
172 g_hash_table_foreach_remove(
173 pending_children,
174 [](gpointer key, gpointer value, gpointer user_data) -> gboolean {
175 FlViewAccessible* self = FL_VIEW_ACCESSIBLE(user_data);
176
177 FlAccessibleNode* parent = FL_ACCESSIBLE_NODE(key);
178
179 size_t child_count = fl_value_get_length(static_cast<FlValue*>(value));
180 const int32_t* children_in_traversal_order =
181 fl_value_get_int32_list(static_cast<FlValue*>(value));
182
183 g_autoptr(GPtrArray) children = g_ptr_array_new();
184 for (size_t i = 0; i < child_count; i++) {
185 FlAccessibleNode* child =
186 lookup_node(self, children_in_traversal_order[i]);
187 if (child == nullptr) {
188 continue;
189 }
190 fl_accessible_node_set_parent(child, ATK_OBJECT(parent), i);
191 g_ptr_array_add(children, child);
192 }
193 fl_accessible_node_set_children(parent, children);
194
195 return TRUE;
196 },
197 self);
198}
void fl_accessible_node_set_name(FlAccessibleNode *self, const gchar *name)
void fl_accessible_node_set_text_direction(FlAccessibleNode *self, FlutterTextDirection direction)
void fl_accessible_node_set_text_selection(FlAccessibleNode *self, gint base, gint extent)
void fl_accessible_node_set_actions(FlAccessibleNode *self, FlutterSemanticsAction actions)
void fl_accessible_node_set_children(FlAccessibleNode *self, GPtrArray *children)
void fl_accessible_node_set_extents(FlAccessibleNode *self, gint x, gint y, gint width, gint height)
void fl_accessible_node_set_value(FlAccessibleNode *self, const gchar *value)
void fl_accessible_node_set_parent(FlAccessibleNode *self, AtkObject *parent, gint index)
void fl_accessible_node_set_flags(FlAccessibleNode *self, FlutterSemanticsFlags *flags)
g_autoptr(GMutexLocker) locker
return TRUE
g_hash_table_insert(self->handlers, g_strdup(channel), handler_new(handler, user_data, destroy_notify))
G_MODULE_EXPORT void fl_value_unref(FlValue *self)
Definition fl_value.cc:400
G_MODULE_EXPORT FlValue * fl_value_new_int32_list(const int32_t *data, size_t data_length)
Definition fl_value.cc:309
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition fl_value.cc:724
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list(FlValue *self)
Definition fl_value.cc:696
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
static FlAccessibleNode * get_node(FlViewAccessible *self, FlutterSemanticsNode2 *semantics)
static FlAccessibleNode * lookup_node(FlViewAccessible *self, int32_t id)
double bottom
Definition embedder.h:645
double top
Definition embedder.h:643
double left
Definition embedder.h:642
double right
Definition embedder.h:644
const int32_t * children_in_traversal_order
Array of child node IDs in traversal order. Has length child_count.
Definition embedder.h:1665
int32_t text_selection_extent
The position at which the text selection terminates.
Definition embedder.h:1625
FlutterTextDirection text_direction
Definition embedder.h:1656
FlutterSemanticsAction actions
The set of semantics actions applicable to this node.
Definition embedder.h:1621
FlutterRect rect
The bounding box for this node in its coordinate system.
Definition embedder.h:1658
FlutterTransformation transform
Definition embedder.h:1661
size_t child_count
The number of children this node has.
Definition embedder.h:1663
const char * label
A textual description of the node.
Definition embedder.h:1643
int32_t text_selection_base
The position at which the text selection originates.
Definition embedder.h:1623
FlutterSemanticsFlags * flags2
Definition embedder.h:1705
const char * value
A textual description of the current value of the node.
Definition embedder.h:1647
size_t node_count
The number of semantics node updates.
Definition embedder.h:1800
FlutterSemanticsNode2 ** nodes
Definition embedder.h:1802
double transY
vertical translation
Definition embedder.h:400
double transX
horizontal translation
Definition embedder.h:394

References FlutterSemanticsNode2::actions, FlutterRect::bottom, FlutterSemanticsNode2::child_count, FlutterSemanticsNode2::children_in_traversal_order, fl_accessible_node_set_actions(), fl_accessible_node_set_children(), fl_accessible_node_set_extents(), fl_accessible_node_set_flags(), fl_accessible_node_set_name(), fl_accessible_node_set_parent(), fl_accessible_node_set_text_direction(), fl_accessible_node_set_text_selection(), fl_accessible_node_set_value(), fl_value_get_int32_list(), fl_value_get_length(), fl_value_new_int32_list(), fl_value_unref(), FlutterSemanticsNode2::flags2, g_autoptr(), g_hash_table_insert(), get_node(), i, key, FlutterSemanticsNode2::label, FlutterRect::left, lookup_node(), FlutterSemanticsUpdate2::node_count, FlutterSemanticsUpdate2::nodes, FlutterSemanticsNode2::rect, FlutterRect::right, self, FlutterSemanticsNode2::text_direction, FlutterSemanticsNode2::text_selection_base, FlutterSemanticsNode2::text_selection_extent, FlutterRect::top, FlutterSemanticsNode2::transform, FlutterTransformation::transX, FlutterTransformation::transY, TRUE, user_data, value, and FlutterSemanticsNode2::value.

Referenced by TEST(), TEST(), and update_semantics_cb().

◆ G_DECLARE_FINAL_TYPE()

G_BEGIN_DECLS G_DECLARE_FINAL_TYPE ( FlViewAccessible  ,
fl_view_accessible  ,
FL  ,
VIEW_ACCESSIBLE  ,
AtkPlug   
)

FlViewAccessible:

#FlViewAccessible is an object that exposes accessibility information for an #FlView. fl_view_accessible_new: @engine: the #FlEngine. @view_id: the Flutter view id.

Creates a new accessibility object that exposes Flutter accessibility information to ATK.

Returns: a new #FlViewAccessible.

Variable Documentation

◆ view_id

G_BEGIN_DECLS FlutterViewId view_id

Definition at line 49 of file fl_view_accessible.h.

Referenced by flutter::SceneBuilder::addPlatformView(), FlutterTextInputPlugin()::addToInputParentViewIfNeeded:, flutter::FlutterCompositor::AddView(), flutter::testing::TestDelegate::AddView(), flutter::PlatformConfiguration::AddView(), flutter::RuntimeController::AddView(), flutter::Engine::AddView(), flutter::PlatformView::AddView(), flutter::AccessibilityPlugin::Announce(), flutter::Rasterizer::CollectView(), flutter::EmbedderExternalViewEmbedder::CollectView(), flutter::testing::MockViewEmbedder::CompositeEmbeddedView(), flutter::AndroidExternalViewEmbedder::CompositeEmbeddedView(), flutter::AndroidExternalViewEmbedder2::CompositeEmbeddedView(), flutter::AndroidExternalViewEmbedderWrapper::CompositeEmbeddedView(), flutter_runner::ExternalViewEmbedder::CompositeEmbeddedView(), flutter::WindowManager::CreateDialogWindow(), CreateEmbedderSemanticsUpdateCallbackV1(), CreateEmbedderSemanticsUpdateCallbackV2(), CreateEmbedderSemanticsUpdateCallbackV3(), flutter::WindowManager::CreateRegularWindow(), flutter_runner::ExternalViewEmbedder::CreateView(), flutter::FlutterWindowsEngine::CreateView(), flutter_runner::testing::PointerInjectorDelegateTest::CreateView(), flutter::FlutterWindowsViewController::Destroy(), destroy_window(), destroy_window(), flutter_runner::ExternalViewEmbedder::DestroyView(), flutter::FlutterWindowsEngine::DispatchSemanticsAction(), flutter::EmbedderEngine::DispatchSemanticsAction(), flutter::Engine::DispatchSemanticsAction(), flutter::RuntimeController::DispatchSemanticsAction(), flutter::PlatformView::DispatchSemanticsAction(), flutter::Rasterizer::DrawLastLayerTrees(), flutter::EmbedderSemanticsUpdate2::EmbedderSemanticsUpdate2(), flutter::testing::expectSoftwareRenderingOutputMatches(), fl_accessible_node_new(), fl_accessible_text_field_new(), fl_engine_add_view(), fl_engine_dispatch_semantics_action(), fl_engine_get_renderable(), fl_engine_remove_view(), fl_engine_send_mouse_pointer_event(), fl_engine_send_pointer_pan_zoom_event(), fl_engine_send_touch_add_event(), fl_engine_send_touch_down_event(), fl_engine_send_touch_move_event(), fl_engine_send_touch_remove_event(), fl_engine_send_touch_up_event(), fl_engine_send_window_metrics_event(), fl_pointer_manager_new(), fl_scrolling_manager_new(), fl_touch_manager_new(), fl_view_accessible_new(), fl_windowing_channel_make_create_regular_response(), FlutterDesktopPluginRegistrarGetViewById(), FlutterDesktopPluginRegistrarGetViewById(), FlutterEngineAddView(), FlutterEngineDispatchSemanticsAction(), FlutterEngineInitialize(), FlutterEngineSendPointerEvent(), FlutterEngineSendWindowMetricsEvent(), flutter::PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView(), get_window_data(), flutter::Rasterizer::GetLastDrawStatus(), flutter::Rasterizer::GetLastLayerTree(), flutter::PlatformConfiguration::GetMetrics(), flutter::ShellTestExternalViewEmbedder::GetStack(), flutter::PluginRegistrarWindows::GetViewById(), flutter::AndroidExternalViewEmbedder::GetViewRect(), flutter::AndroidExternalViewEmbedder2::GetViewRect(), flutter_runner::FocusDelegate::HandlePlatformMessage(), flutter_runner::PointerInjectorDelegate::HandlePlatformMessage(), flutter::PlatformViewAndroidJNIImpl::hidePlatformView2(), InferExternalViewEmbedderFromArgs(), InternalFlutterWindows_WindowManager_GetTopLevelWindowHandle(), flutter::EmbedderLayers::InvokePresentCallback(), make_destroy_window_args(), make_modify_regular_args(), flutter::MakeBackingStoreConfig(), modify_regular(), modify_regular(), flutter_runner::PlatformView::OnChildViewViewRef(), flutter_runner::FocusDelegate::OnChildViewViewRef(), flutter_runner::PointerInjectorDelegate::OnCreateView(), flutter_runner::PointerInjectorDelegate::OnDestroyView(), flutter::PlatformViewAndroidJNIImpl::onDisplayPlatformView2(), flutter_runner::FocusDelegate::OnDisposeChildView(), parse_create_regular_response(), flutter::testing::MockViewEmbedder::PrerollCompositeEmbeddedView(), flutter::AndroidExternalViewEmbedder::PrerollCompositeEmbeddedView(), flutter::AndroidExternalViewEmbedder2::PrerollCompositeEmbeddedView(), flutter::AndroidExternalViewEmbedderWrapper::PrerollCompositeEmbeddedView(), flutter_runner::ExternalViewEmbedder::PrerollCompositeEmbeddedView(), flutter::testing::EmbedderTestCompositor::Present(), flutter::FlutterCompositor::Present(), flutter::testing::ShellTest::PumpOneFrame(), flutter::FlutterCompositor::RemoveView(), flutter::FlutterWindowsEngine::RemoveView(), flutter::PlatformConfiguration::RemoveView(), flutter::testing::TestDelegate::RemoveView(), flutter::RuntimeController::RemoveView(), flutter::Engine::RemoveView(), flutter::PlatformView::RemoveView(), flutter::PlatformConfigurationNativeApi::Render(), flutter::Animator::Render(), flutter::PlatformConfigurationNativeApi::RequestViewFocusChange(), flutter::testing::ShellTest::SendSemanticsAction(), flutter::EngineModifier::SetNextViewId(), flutter::TextInputPluginModifier::SetViewId(), flutter::EmbedderEngine::SetViewportMetrics(), flutter::RuntimeController::SetViewportMetrics(), flutter::Engine::SetViewportMetrics(), flutter::PlatformView::SetViewportMetrics(), flutter_runner::ExternalViewEmbedder::SetViewProperties(), flutter::testing::ShellTest::ShouldDiscardLayerTree(), flutter::SliceViews(), flutter::AndroidExternalViewEmbedder::SubmitFlutterView(), flutter::AndroidExternalViewEmbedder2::SubmitFlutterView(), flutter::testing::TEST(), flutter::testing::TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), flutter::testing::TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::TEST_F(), flutter::TEST_F(), TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter_runner::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter_runner::testing::TEST_P(), flutter::PlatformViewEmbedder::UpdateSemantics(), flutter::RuntimeController::UpdateSemantics(), flutter::PlatformConfigurationNativeApi::UpdateSemantics(), flutter::PlatformConfiguration::UpdateViewMetrics(), flutter::OverlayLayer::UpdateViewState(), flutter::FlutterWindowsEngine::view(), flutter::testing::TestDelegate::ViewExists(), and flutter_runner::PlatformView::~PlatformView().