Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_accessibility_handler_test.cc File Reference

Go to the source code of this file.

Enumerations

enum  FlAtkLive {
  FL_ATK_LIVE_NONE ,
  FL_ATK_LIVE_POLITE ,
  FL_ATK_LIVE_ASSERTIVE
}
 

Functions

static void announcement_cb (FlViewAccessible *accessible, const gchar *message, gpointer user_data)
 
static void notification_polite_cb (FlViewAccessible *accessible, const gchar *message, FlAtkLive politeness, gpointer user_data)
 
static void notification_assertive_cb (FlViewAccessible *accessible, const gchar *message, FlAtkLive politeness, gpointer user_data)
 
static gboolean atk_supports_announce ()
 
static void subscribe_signal (FlViewAccessible *accessible, gboolean *signalled, gboolean assertive)
 
 TEST (FlAccessibilityHandlerTest, Announce)
 
 TEST (FlAccessibilityHandlerTest, AnnounceAssertive)
 
 TEST (FlAccessibilityHandlerTest, AnnounceUnknownView)
 
 TEST (FlAccessibilityHandlerTest, UnknownType)
 

Variables

static constexpr int64_t kTextDirectionLtr = 0
 
static constexpr int64_t kAssertivenessAssertive = 1
 

Enumeration Type Documentation

◆ FlAtkLive

enum FlAtkLive
Enumerator
FL_ATK_LIVE_NONE 
FL_ATK_LIVE_POLITE 
FL_ATK_LIVE_ASSERTIVE 

Definition at line 27 of file fl_accessibility_handler_test.cc.

Function Documentation

◆ announcement_cb()

static void announcement_cb ( FlViewAccessible *  accessible,
const gchar *  message,
gpointer  user_data 
)
static

Definition at line 33 of file fl_accessibility_handler_test.cc.

35 {
36 EXPECT_STREQ(message, "MESSAGE");
37 gboolean* signalled = static_cast<gboolean*>(user_data);
38 *signalled = TRUE;
39}
const char * message
return TRUE

References message, TRUE, and user_data.

Referenced by subscribe_signal().

◆ atk_supports_announce()

static gboolean atk_supports_announce ( )
static

Definition at line 61 of file fl_accessibility_handler_test.cc.

61 {
62 return atk_get_major_version() == 2 && atk_get_minor_version() >= 46;
63}

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

◆ notification_assertive_cb()

static void notification_assertive_cb ( FlViewAccessible *  accessible,
const gchar *  message,
FlAtkLive  politeness,
gpointer  user_data 
)
static

Definition at line 51 of file fl_accessibility_handler_test.cc.

54 {
55 EXPECT_STREQ(message, "MESSAGE");
56 EXPECT_EQ(politeness, FL_ATK_LIVE_ASSERTIVE);
57 gboolean* signalled = static_cast<gboolean*>(user_data);
58 *signalled = TRUE;
59}

References FL_ATK_LIVE_ASSERTIVE, message, TRUE, and user_data.

Referenced by subscribe_signal().

◆ notification_polite_cb()

static void notification_polite_cb ( FlViewAccessible *  accessible,
const gchar *  message,
FlAtkLive  politeness,
gpointer  user_data 
)
static

Definition at line 41 of file fl_accessibility_handler_test.cc.

44 {
45 EXPECT_STREQ(message, "MESSAGE");
46 EXPECT_EQ(politeness, FL_ATK_LIVE_POLITE);
47 gboolean* signalled = static_cast<gboolean*>(user_data);
48 *signalled = TRUE;
49}

References FL_ATK_LIVE_POLITE, message, TRUE, and user_data.

Referenced by subscribe_signal().

◆ subscribe_signal()

static void subscribe_signal ( FlViewAccessible *  accessible,
gboolean *  signalled,
gboolean  assertive 
)
static

Definition at line 65 of file fl_accessibility_handler_test.cc.

67 {
68 if (!atk_supports_announce()) {
69 return;
70 }
71
72 if (atk_get_major_version() == 2 && atk_get_minor_version() < 50) {
73 g_signal_connect(accessible, "announcement", G_CALLBACK(announcement_cb),
74 signalled);
75 } else {
76 g_signal_connect(accessible, "notification",
77 G_CALLBACK(assertive ? notification_assertive_cb
79 signalled);
80 }
81}
FlViewAccessible * accessible
static void announcement_cb(FlViewAccessible *accessible, const gchar *message, gpointer user_data)
static void notification_polite_cb(FlViewAccessible *accessible, const gchar *message, FlAtkLive politeness, gpointer user_data)
static void notification_assertive_cb(FlViewAccessible *accessible, const gchar *message, FlAtkLive politeness, gpointer user_data)
static gboolean atk_supports_announce()

References accessible, announcement_cb(), atk_supports_announce(), notification_assertive_cb(), and notification_polite_cb().

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

◆ TEST() [1/4]

TEST ( FlAccessibilityHandlerTest  ,
Announce   
)

Definition at line 83 of file fl_accessibility_handler_test.cc.

83 {
85
86 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
87 g_autoptr(FlEngine) engine =
88 fl_engine_new_with_binary_messenger(FL_BINARY_MESSENGER(messenger));
90
91 gboolean signalled = FALSE;
92 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
93
100 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
101 fl_value_set_string_take(data, "textDirection",
103
104 gboolean called = FALSE;
106 messenger, "flutter/accessibility", message,
107 [](FlMockBinaryMessenger* messenger, FlValue* response,
108 gpointer user_data) {
109 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
110 gboolean* called = static_cast<gboolean*>(user_data);
111 *called = TRUE;
112 },
113 &called);
114 EXPECT_TRUE(called);
115 if (atk_supports_announce()) {
116 EXPECT_TRUE(signalled);
117 }
118
119 fl_binary_messenger_shutdown(FL_BINARY_MESSENGER(messenger));
120}
FlutterEngine engine
Definition main.cc:84
FlView * view
g_autoptr(FlEngine) engine
static void subscribe_signal(FlViewAccessible *accessible, gboolean *signalled, gboolean assertive)
static constexpr int64_t kTextDirectionLtr
void fl_binary_messenger_shutdown(FlBinaryMessenger *self)
FlEngine * fl_engine_new_with_binary_messenger(FlBinaryMessenger *binary_messenger)
Definition fl_engine.cc:707
void fl_mock_binary_messenger_send_standard_message(FlMockBinaryMessenger *self, const gchar *channel, FlValue *message, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
FlMockBinaryMessenger * fl_mock_binary_messenger_new()
G_MODULE_EXPORT void fl_value_set_string(FlValue *self, const gchar *key, FlValue *value)
Definition fl_value.cc:639
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition fl_value.cc:366
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition fl_value.cc:650
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition fl_value.cc:466
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition fl_value.cc:276
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
Definition fl_value.cc:262
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
@ FL_VALUE_TYPE_NULL
Definition fl_value.h:64
G_MODULE_EXPORT FlView * fl_view_new_for_engine(FlEngine *engine)
Definition fl_view.cc:777
FlViewAccessible * fl_view_get_accessible(FlView *self)
Definition fl_view.cc:808
G_MODULE_EXPORT int64_t fl_view_get_id(FlView *self)
Definition fl_view.cc:796
void fl_ensure_gtk_init(GLogWriterFunc writer)
Ensures that GTK has been initialized and starts monitoring logs.
std::shared_ptr< const fml::Mapping > data

References atk_supports_announce(), data, engine, fl_binary_messenger_shutdown(), fl_engine_new_with_binary_messenger(), flutter::testing::fl_ensure_gtk_init(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_send_standard_message(), fl_value_get_type(), fl_value_new_int(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string(), fl_value_set_string_take(), FL_VALUE_TYPE_NULL, fl_view_get_accessible(), fl_view_get_id(), fl_view_new_for_engine(), g_autoptr(), kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST() [2/4]

TEST ( FlAccessibilityHandlerTest  ,
AnnounceAssertive   
)

Definition at line 122 of file fl_accessibility_handler_test.cc.

122 {
124
125 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
126 g_autoptr(FlEngine) engine =
127 fl_engine_new_with_binary_messenger(FL_BINARY_MESSENGER(messenger));
129
130 gboolean signalled = FALSE;
132
139 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
140 fl_value_set_string_take(data, "textDirection",
142 // Add optional assertiveness (not used in ATK)
143 fl_value_set_string_take(data, "assertiveness",
145
146 gboolean called = FALSE;
148 messenger, "flutter/accessibility", message,
149 [](FlMockBinaryMessenger* messenger, FlValue* response,
150 gpointer user_data) {
151 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
152 gboolean* called = static_cast<gboolean*>(user_data);
153 *called = TRUE;
154 },
155 &called);
156 EXPECT_TRUE(called);
157 if (atk_supports_announce()) {
158 EXPECT_TRUE(signalled);
159 }
160
161 fl_binary_messenger_shutdown(FL_BINARY_MESSENGER(messenger));
162}
static constexpr int64_t kAssertivenessAssertive

References atk_supports_announce(), data, engine, fl_binary_messenger_shutdown(), fl_engine_new_with_binary_messenger(), flutter::testing::fl_ensure_gtk_init(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_send_standard_message(), fl_value_get_type(), fl_value_new_int(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string(), fl_value_set_string_take(), FL_VALUE_TYPE_NULL, fl_view_get_accessible(), fl_view_get_id(), fl_view_new_for_engine(), g_autoptr(), kAssertivenessAssertive, kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST() [3/4]

TEST ( FlAccessibilityHandlerTest  ,
AnnounceUnknownView   
)

Definition at line 164 of file fl_accessibility_handler_test.cc.

164 {
166
167 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
168 g_autoptr(FlEngine) engine =
169 fl_engine_new_with_binary_messenger(FL_BINARY_MESSENGER(messenger));
171
172 gboolean signalled = FALSE;
173 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
174
180 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
181 fl_value_set_string_take(data, "textDirection",
183 // Add optional assertiveness (not used in ATK)
184 fl_value_set_string_take(data, "assertiveness",
186
187 gboolean called = FALSE;
189 messenger, "flutter/accessibility", message,
190 [](FlMockBinaryMessenger* messenger, FlValue* response,
191 gpointer user_data) {
192 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
193 gboolean* called = static_cast<gboolean*>(user_data);
194 *called = TRUE;
195 },
196 &called);
197 EXPECT_TRUE(called);
198 EXPECT_FALSE(signalled);
199
200 fl_binary_messenger_shutdown(FL_BINARY_MESSENGER(messenger));
201}

References data, engine, fl_binary_messenger_shutdown(), fl_engine_new_with_binary_messenger(), flutter::testing::fl_ensure_gtk_init(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_send_standard_message(), fl_value_get_type(), fl_value_new_int(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string(), fl_value_set_string_take(), FL_VALUE_TYPE_NULL, fl_view_get_accessible(), fl_view_new_for_engine(), g_autoptr(), kAssertivenessAssertive, kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST() [4/4]

TEST ( FlAccessibilityHandlerTest  ,
UnknownType   
)

Definition at line 203 of file fl_accessibility_handler_test.cc.

203 {
205
206 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
207 g_autoptr(FlEngine) engine =
208 fl_engine_new_with_binary_messenger(FL_BINARY_MESSENGER(messenger));
210
211 gboolean signalled = FALSE;
212 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
213
214 // Unknown type, ignored by embedder.
218
219 gboolean called = FALSE;
221 messenger, "flutter/accessibility", message,
222 [](FlMockBinaryMessenger* messenger, FlValue* response,
223 gpointer user_data) {
224 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
225 gboolean* called = static_cast<gboolean*>(user_data);
226 *called = TRUE;
227 },
228 &called);
229 EXPECT_TRUE(called);
230 EXPECT_FALSE(signalled);
231
232 fl_binary_messenger_shutdown(FL_BINARY_MESSENGER(messenger));
233}

References engine, fl_binary_messenger_shutdown(), fl_engine_new_with_binary_messenger(), flutter::testing::fl_ensure_gtk_init(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_send_standard_message(), fl_value_get_type(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), FL_VALUE_TYPE_NULL, fl_view_get_accessible(), fl_view_new_for_engine(), g_autoptr(), message, subscribe_signal(), TRUE, user_data, and view.

Variable Documentation

◆ kAssertivenessAssertive

constexpr int64_t kAssertivenessAssertive = 1
staticconstexpr

Definition at line 23 of file fl_accessibility_handler_test.cc.

Referenced by TEST(), and TEST().

◆ kTextDirectionLtr

constexpr int64_t kTextDirectionLtr = 0
staticconstexpr

Definition at line 22 of file fl_accessibility_handler_test.cc.

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