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.

Classes

class  FlAccessibilityHandlerTest
 

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_F (FlAccessibilityHandlerTest, Announce)
 
 TEST_F (FlAccessibilityHandlerTest, AnnounceAssertive)
 
 TEST_F (FlAccessibilityHandlerTest, AnnounceUnknownView)
 
 TEST_F (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 28 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 34 of file fl_accessibility_handler_test.cc.

36 {
37 EXPECT_STREQ(message, "MESSAGE");
38 gboolean* signalled = static_cast<gboolean*>(user_data);
39 *signalled = TRUE;
40}
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 62 of file fl_accessibility_handler_test.cc.

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

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

◆ notification_assertive_cb()

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

Definition at line 52 of file fl_accessibility_handler_test.cc.

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

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 42 of file fl_accessibility_handler_test.cc.

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

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 66 of file fl_accessibility_handler_test.cc.

68 {
69 if (!atk_supports_announce()) {
70 return;
71 }
72
73 if (atk_get_major_version() == 2 && atk_get_minor_version() < 50) {
74 g_signal_connect(accessible, "announcement", G_CALLBACK(announcement_cb),
75 signalled);
76 } else {
77 g_signal_connect(accessible, "notification",
78 G_CALLBACK(assertive ? notification_assertive_cb
80 signalled);
81 }
82}
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_F(), TEST_F(), TEST_F(), and TEST_F().

◆ TEST_F() [1/4]

TEST_F ( FlAccessibilityHandlerTest  ,
Announce   
)

Definition at line 104 of file fl_accessibility_handler_test.cc.

104 {
105 gboolean signalled = FALSE;
106 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
107
111 fl_value_set_string(message, "data", data);
112 fl_value_set_string_take(data, "viewId",
114 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
115 fl_value_set_string_take(data, "textDirection",
117
118 gboolean called = FALSE;
120 messenger, "flutter/accessibility", message,
121 [](FlMockBinaryMessenger* messenger, FlValue* response,
122 gpointer user_data) {
123 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
124 gboolean* called = static_cast<gboolean*>(user_data);
125 *called = TRUE;
126 },
127 &called);
128 EXPECT_TRUE(called);
129 if (atk_supports_announce()) {
130 EXPECT_TRUE(signalled);
131 }
132}
g_autoptr(FlEngine) engine
static void subscribe_signal(FlViewAccessible *accessible, gboolean *signalled, gboolean assertive)
static constexpr int64_t kTextDirectionLtr
void fl_mock_binary_messenger_send_standard_message(FlMockBinaryMessenger *self, const gchar *channel, FlValue *message, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
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
FlViewAccessible * fl_view_get_accessible(FlView *self)
Definition fl_view.cc:770
G_MODULE_EXPORT int64_t fl_view_get_id(FlView *self)
Definition fl_view.cc:759
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switch_defs.h:36

References atk_supports_announce(), 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(), g_autoptr(), kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST_F() [2/4]

TEST_F ( FlAccessibilityHandlerTest  ,
AnnounceAssertive   
)

Definition at line 134 of file fl_accessibility_handler_test.cc.

134 {
135 gboolean signalled = FALSE;
136 subscribe_signal(fl_view_get_accessible(view), &signalled, TRUE);
137
141 fl_value_set_string(message, "data", data);
142 fl_value_set_string_take(data, "viewId",
144 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
145 fl_value_set_string_take(data, "textDirection",
147 // Add optional assertiveness (not used in ATK)
148 fl_value_set_string_take(data, "assertiveness",
150
151 gboolean called = FALSE;
153 messenger, "flutter/accessibility", message,
154 [](FlMockBinaryMessenger* messenger, FlValue* response,
155 gpointer user_data) {
156 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
157 gboolean* called = static_cast<gboolean*>(user_data);
158 *called = TRUE;
159 },
160 &called);
161 EXPECT_TRUE(called);
162 if (atk_supports_announce()) {
163 EXPECT_TRUE(signalled);
164 }
165}
static constexpr int64_t kAssertivenessAssertive

References atk_supports_announce(), 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(), g_autoptr(), kAssertivenessAssertive, kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST_F() [3/4]

TEST_F ( FlAccessibilityHandlerTest  ,
AnnounceUnknownView   
)

Definition at line 167 of file fl_accessibility_handler_test.cc.

167 {
168 gboolean signalled = FALSE;
169 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
170
174 fl_value_set_string(message, "data", data);
175 fl_value_set_string_take(data, "viewId", fl_value_new_int(999));
176 fl_value_set_string_take(data, "message", fl_value_new_string("MESSAGE"));
177 fl_value_set_string_take(data, "textDirection",
179 // Add optional assertiveness (not used in ATK)
180 fl_value_set_string_take(data, "assertiveness",
182
183 gboolean called = FALSE;
185 messenger, "flutter/accessibility", message,
186 [](FlMockBinaryMessenger* messenger, FlValue* response,
187 gpointer user_data) {
188 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
189 gboolean* called = static_cast<gboolean*>(user_data);
190 *called = TRUE;
191 },
192 &called);
193 EXPECT_TRUE(called);
194 EXPECT_FALSE(signalled);
195}

References 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(), g_autoptr(), kAssertivenessAssertive, kTextDirectionLtr, message, subscribe_signal(), TRUE, user_data, and view.

◆ TEST_F() [4/4]

TEST_F ( FlAccessibilityHandlerTest  ,
UnknownType   
)

Definition at line 197 of file fl_accessibility_handler_test.cc.

197 {
198 gboolean signalled = FALSE;
199 subscribe_signal(fl_view_get_accessible(view), &signalled, FALSE);
200
201 // Unknown type, ignored by embedder.
205
206 gboolean called = FALSE;
208 messenger, "flutter/accessibility", message,
209 [](FlMockBinaryMessenger* messenger, FlValue* response,
210 gpointer user_data) {
211 EXPECT_EQ(fl_value_get_type(response), FL_VALUE_TYPE_NULL);
212 gboolean* called = static_cast<gboolean*>(user_data);
213 *called = TRUE;
214 },
215 &called);
216 EXPECT_TRUE(called);
217 EXPECT_FALSE(signalled);
218}

References 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(), g_autoptr(), message, subscribe_signal(), TRUE, user_data, and view.

Variable Documentation

◆ kAssertivenessAssertive

constexpr int64_t kAssertivenessAssertive = 1
staticconstexpr

Definition at line 24 of file fl_accessibility_handler_test.cc.

Referenced by TEST_F(), and TEST_F().

◆ kTextDirectionLtr

constexpr int64_t kTextDirectionLtr = 0
staticconstexpr

Definition at line 23 of file fl_accessibility_handler_test.cc.

Referenced by TEST_F(), TEST_F(), and TEST_F().