Flutter Linux Embedder
fl_accessibility_handler.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
6 
10 
11 typedef struct {
12  GWeakRef engine;
13  FlAccessibilityChannel* channel;
15 
16 G_DEFINE_TYPE_WITH_PRIVATE(FlAccessibilityHandler,
17  fl_accessibility_handler,
18  G_TYPE_OBJECT)
19 
20 static void send_announcement(int64_t view_id,
21  const char* message,
24  gpointer user_data) {
25  FlAccessibilityHandler* self = FL_ACCESSIBILITY_HANDLER(user_data);
27  reinterpret_cast<FlAccessibilityHandlerPrivate*>(
28  fl_accessibility_handler_get_instance_private(self));
29 
30  g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&priv->engine));
31  if (engine == nullptr) {
32  return;
33  }
34 
35  FlRenderable* renderable = fl_engine_get_renderable(engine, view_id);
36  if (renderable == nullptr || !FL_IS_VIEW(renderable)) {
37  return;
38  }
39 
40  FlView* view = FL_VIEW(renderable);
41  FlViewAccessible* accessible = fl_view_get_accessible(view);
44 }
45 
46 static void fl_accessibility_handler_dispose(GObject* object) {
47  FlAccessibilityHandler* self = FL_ACCESSIBILITY_HANDLER(object);
49  reinterpret_cast<FlAccessibilityHandlerPrivate*>(
50  fl_accessibility_handler_get_instance_private(self));
51 
52  g_weak_ref_clear(&priv->engine);
53  g_clear_object(&priv->channel);
54 
55  G_OBJECT_CLASS(fl_accessibility_handler_parent_class)->dispose(object);
56 }
57 
59  FlAccessibilityHandlerClass* klass) {
60  G_OBJECT_CLASS(klass)->dispose = fl_accessibility_handler_dispose;
61 }
62 
63 static void fl_accessibility_handler_init(FlAccessibilityHandler* self) {}
64 
66  .send_announcement = send_announcement,
67 };
68 
69 FlAccessibilityHandler* fl_accessibility_handler_new(FlEngine* engine) {
70  g_return_val_if_fail(FL_IS_ENGINE(engine), nullptr);
71 
72  FlAccessibilityHandler* self = FL_ACCESSIBILITY_HANDLER(
73  g_object_new(fl_accessibility_handler_get_type(), nullptr));
75  reinterpret_cast<FlAccessibilityHandlerPrivate*>(
76  fl_accessibility_handler_get_instance_private(self));
77 
78  g_weak_ref_init(&priv->engine, engine);
79  priv->channel =
82 
83  return self;
84 }
FlAccessibilityChannel * fl_accessibility_channel_new(FlBinaryMessenger *messenger, FlAccessibilityChannelVTable *vtable, gpointer user_data)
@ FL_ASSERTIVENESS_ASSERTIVE
FlViewAccessible * accessible
FlView * view
static void fl_accessibility_handler_dispose(GObject *object)
FlAccessibilityHandler * fl_accessibility_handler_new(FlEngine *engine)
const char * message
G_DEFINE_TYPE_WITH_PRIVATE(FlAccessibilityHandler, fl_accessibility_handler, G_TYPE_OBJECT) static void send_announcement(int64_t view_id
const char FlTextDirection text_direction
static FlAccessibilityChannelVTable accessibility_channel_vtable
fl_view_accessible_send_announcement(accessible, message, assertiveness==FL_ASSERTIVENESS_ASSERTIVE)
const char FlTextDirection FlAssertiveness assertiveness
static void fl_accessibility_handler_class_init(FlAccessibilityHandlerClass *klass)
g_autoptr(FlEngine) engine
static void fl_accessibility_handler_init(FlAccessibilityHandler *self)
FlRenderable * renderable
const char FlTextDirection FlAssertiveness gpointer user_data
FlAccessibilityHandlerPrivate * priv
FlRenderable * fl_engine_get_renderable(FlEngine *self, FlutterViewId view_id)
Definition: fl_engine.cc:948
G_MODULE_EXPORT FlBinaryMessenger * fl_engine_get_binary_messenger(FlEngine *self)
Definition: fl_engine.cc:1451
FlViewAccessible * fl_view_get_accessible(FlView *self)
Definition: fl_view.cc:808
G_BEGIN_DECLS FlutterViewId view_id
void(* send_announcement)(int64_t view_id, const char *message, FlTextDirection text_direction, FlAssertiveness assertiveness, gpointer user_data)