14TEST(PlatformViewShell, UpdateSemanticsDoesFlutterViewUpdateSemantics) {
15 auto jni_mock = std::make_shared<JNIMock>();
16 auto delegate = std::make_unique<PlatformViewAndroidDelegate>(jni_mock);
22 node0.
label =
"label";
24 update.insert(std::make_pair(0, node0));
26 std::vector<uint8_t> expected_buffer(
28 std::vector<std::vector<uint8_t>> expected_string_attribute_args(0);
30 int32_t* buffer_int32 =
reinterpret_cast<int32_t*
>(&expected_buffer[0]);
31 float* buffer_float32 =
reinterpret_cast<float*
>(&expected_buffer[0]);
32 std::vector<std::string> expected_strings;
33 buffer_int32[position++] = node0.
id;
34 std::memcpy(&buffer_int32[position], &node0.
flags, 2);
36 buffer_int32[position++] = node0.
actions;
45 buffer_float32[position++] =
static_cast<float>(node0.
scrollPosition);
48 buffer_int32[position++] =
static_cast<int32_t
>(node0.
role);
49 buffer_int32[position++] = expected_strings.size();
51 buffer_int32[position++] = expected_strings.size();
52 expected_strings.push_back(node0.
label);
53 buffer_int32[position++] = -1;
54 buffer_int32[position++] = -1;
55 buffer_int32[position++] = -1;
56 buffer_int32[position++] = -1;
57 buffer_int32[position++] = -1;
58 buffer_int32[position++] = -1;
59 buffer_int32[position++] = -1;
60 buffer_int32[position++] = -1;
61 buffer_int32[position++] = -1;
62 buffer_int32[position++] = expected_strings.size();
63 expected_strings.push_back(node0.
tooltip);
64 buffer_int32[position++] = -1;
65 buffer_int32[position++] = -1;
66 buffer_int32[position++] = -1;
67 buffer_int32[position++] = -1;
70 buffer_float32[position++] = node0.
rect.left();
71 buffer_float32[position++] = node0.
rect.top();
72 buffer_float32[position++] = node0.
rect.right();
73 buffer_float32[position++] = node0.
rect.bottom();
74 node0.
transform.getColMajor(&buffer_float32[position]);
78 buffer_int32[position++] = 0;
79 buffer_int32[position++] = 0;
80 EXPECT_CALL(*jni_mock,
81 FlutterViewUpdateSemantics(expected_buffer, expected_strings,
82 expected_string_attribute_args));
85 delegate->UpdateSemantics(update, actions);
88TEST(PlatformViewShell, UpdateSemanticsDoesUpdateLinkUrl) {
89 auto jni_mock = std::make_shared<JNIMock>();
90 auto delegate = std::make_unique<PlatformViewAndroidDelegate>(jni_mock);
96 node0.
label =
"label";
98 update.insert(std::make_pair(0, node0));
100 std::vector<uint8_t> expected_buffer(
102 std::vector<std::vector<uint8_t>> expected_string_attribute_args(0);
104 int32_t* buffer_int32 =
reinterpret_cast<int32_t*
>(&expected_buffer[0]);
105 float* buffer_float32 =
reinterpret_cast<float*
>(&expected_buffer[0]);
106 std::vector<std::string> expected_strings;
107 buffer_int32[position++] = node0.
id;
108 std::memcpy(&buffer_int32[position], &node0.
flags, 2);
110 buffer_int32[position++] = node0.
actions;
119 buffer_float32[position++] =
static_cast<float>(node0.
scrollPosition);
120 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMax);
121 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMin);
122 buffer_int32[position++] =
static_cast<int32_t
>(node0.
role);
123 buffer_int32[position++] = expected_strings.size();
125 buffer_int32[position++] = expected_strings.size();
126 expected_strings.push_back(node0.
label);
127 buffer_int32[position++] = -1;
128 buffer_int32[position++] = -1;
129 buffer_int32[position++] = -1;
130 buffer_int32[position++] = -1;
131 buffer_int32[position++] = -1;
132 buffer_int32[position++] = -1;
133 buffer_int32[position++] = -1;
134 buffer_int32[position++] = -1;
135 buffer_int32[position++] = -1;
136 buffer_int32[position++] = -1;
137 buffer_int32[position++] = expected_strings.size();
138 expected_strings.push_back(node0.
linkUrl);
139 buffer_int32[position++] = -1;
140 buffer_int32[position++] = -1;
141 buffer_int32[position++] = -1;
144 buffer_float32[position++] = node0.
rect.left();
145 buffer_float32[position++] = node0.
rect.top();
146 buffer_float32[position++] = node0.
rect.right();
147 buffer_float32[position++] = node0.
rect.bottom();
148 node0.
transform.getColMajor(&buffer_float32[position]);
152 buffer_int32[position++] = 0;
153 buffer_int32[position++] = 0;
154 EXPECT_CALL(*jni_mock,
155 FlutterViewUpdateSemantics(expected_buffer, expected_strings,
156 expected_string_attribute_args));
159 delegate->UpdateSemantics(update, actions);
162TEST(PlatformViewShell, UpdateSemanticsDoesUpdateLocale) {
163 auto jni_mock = std::make_shared<JNIMock>();
164 auto delegate = std::make_unique<PlatformViewAndroidDelegate>(jni_mock);
170 node0.
label =
"label";
173 update.insert(std::make_pair(0, node0));
175 std::vector<uint8_t> expected_buffer(
177 std::vector<std::vector<uint8_t>> expected_string_attribute_args(0);
179 int32_t* buffer_int32 =
reinterpret_cast<int32_t*
>(&expected_buffer[0]);
180 float* buffer_float32 =
reinterpret_cast<float*
>(&expected_buffer[0]);
181 std::vector<std::string> expected_strings;
182 buffer_int32[position++] = node0.
id;
183 std::memcpy(&buffer_int32[position], &node0.
flags, 2);
185 buffer_int32[position++] = node0.
actions;
194 buffer_float32[position++] =
static_cast<float>(node0.
scrollPosition);
195 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMax);
196 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMin);
197 buffer_int32[position++] =
static_cast<int32_t
>(node0.
role);
198 buffer_int32[position++] = expected_strings.size();
200 buffer_int32[position++] = expected_strings.size();
201 expected_strings.push_back(node0.
label);
202 buffer_int32[position++] = -1;
203 buffer_int32[position++] = -1;
204 buffer_int32[position++] = -1;
205 buffer_int32[position++] = -1;
206 buffer_int32[position++] = -1;
207 buffer_int32[position++] = -1;
208 buffer_int32[position++] = -1;
209 buffer_int32[position++] = -1;
210 buffer_int32[position++] = -1;
211 buffer_int32[position++] = -1;
212 buffer_int32[position++] = -1;
213 buffer_int32[position++] = expected_strings.size();
214 expected_strings.push_back(node0.
locale);
215 buffer_int32[position++] = -1;
216 buffer_int32[position++] = -1;
219 buffer_float32[position++] = node0.
rect.left();
220 buffer_float32[position++] = node0.
rect.top();
221 buffer_float32[position++] = node0.
rect.right();
222 buffer_float32[position++] = node0.
rect.bottom();
223 node0.
transform.getColMajor(&buffer_float32[position]);
227 buffer_int32[position++] = 0;
228 buffer_int32[position++] = 0;
229 EXPECT_CALL(*jni_mock,
230 FlutterViewUpdateSemantics(expected_buffer, expected_strings,
231 expected_string_attribute_args));
234 delegate->UpdateSemantics(update, actions);
238 UpdateSemanticsDoesFlutterViewUpdateSemanticsWithStringAttribtes) {
239 auto jni_mock = std::make_shared<JNIMock>();
240 auto delegate = std::make_unique<PlatformViewAndroidDelegate>(jni_mock);
244 std::shared_ptr<SpellOutStringAttribute> spell_out_attribute =
245 std::make_shared<SpellOutStringAttribute>();
246 spell_out_attribute->start = 2;
247 spell_out_attribute->end = 4;
249 std::shared_ptr<LocaleStringAttribute> locale_attribute =
250 std::make_shared<LocaleStringAttribute>();
251 locale_attribute->start = 1;
252 locale_attribute->end = 3;
254 locale_attribute->locale =
"en-US";
257 node0.
label =
"label";
261 update.insert(std::make_pair(0, node0));
263 std::vector<uint8_t> expected_buffer(
267 std::vector<std::vector<uint8_t>> expected_string_attribute_args;
269 int32_t* buffer_int32 =
reinterpret_cast<int32_t*
>(&expected_buffer[0]);
270 float* buffer_float32 =
reinterpret_cast<float*
>(&expected_buffer[0]);
271 std::vector<std::string> expected_strings;
272 buffer_int32[position++] = node0.
id;
273 std::memcpy(&buffer_int32[position], &node0.
flags, 2);
275 buffer_int32[position++] = node0.
actions;
284 buffer_float32[position++] =
static_cast<float>(node0.
scrollPosition);
285 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMax);
286 buffer_float32[position++] =
static_cast<float>(node0.
scrollExtentMin);
287 buffer_int32[position++] =
static_cast<int32_t
>(node0.
role);
288 buffer_int32[position++] = expected_strings.size();
290 buffer_int32[position++] = expected_strings.size();
291 expected_strings.push_back(node0.
label);
292 buffer_int32[position++] = 1;
293 buffer_int32[position++] = 2;
294 buffer_int32[position++] = 4;
295 buffer_int32[position++] = 0;
296 buffer_int32[position++] = -1;
297 buffer_int32[position++] = -1;
298 buffer_int32[position++] = -1;
299 buffer_int32[position++] = -1;
300 buffer_int32[position++] = -1;
301 buffer_int32[position++] = -1;
302 buffer_int32[position++] = -1;
303 buffer_int32[position++] = expected_strings.size();
304 expected_strings.push_back(node0.
hint);
305 buffer_int32[position++] = 1;
306 buffer_int32[position++] = 1;
307 buffer_int32[position++] = 3;
308 buffer_int32[position++] = 1;
309 buffer_int32[position++] =
310 expected_string_attribute_args.size();
311 expected_string_attribute_args.push_back(
312 {locale_attribute->locale.begin(), locale_attribute->locale.end()});
313 buffer_int32[position++] = -1;
314 buffer_int32[position++] = -1;
315 buffer_int32[position++] = -1;
316 buffer_int32[position++] = -1;
317 buffer_int32[position++] = -1;
320 buffer_float32[position++] = node0.
rect.left();
321 buffer_float32[position++] = node0.
rect.top();
322 buffer_float32[position++] = node0.
rect.right();
323 buffer_float32[position++] = node0.
rect.bottom();
324 node0.
transform.getColMajor(&buffer_float32[position]);
328 buffer_int32[position++] = 0;
329 buffer_int32[position++] = 0;
330 EXPECT_CALL(*jni_mock,
331 FlutterViewUpdateSemantics(expected_buffer, expected_strings,
332 expected_string_attribute_args));
335 delegate->UpdateSemantics(update, actions);
339 UpdateSemanticsDoesFlutterViewUpdateCustomAccessibilityActions) {
340 auto jni_mock = std::make_shared<JNIMock>();
341 auto delegate = std::make_unique<PlatformViewAndroidDelegate>(jni_mock);
347 action0.
label =
"label";
348 action0.
hint =
"hint";
349 actions.insert(std::make_pair(0, action0));
351 std::vector<uint8_t> expected_actions_buffer(
353 int32_t* actions_buffer_int32 =
354 reinterpret_cast<int32_t*
>(&expected_actions_buffer[0]);
355 std::vector<std::string> expected_action_strings;
356 actions_buffer_int32[0] = action0.
id;
358 actions_buffer_int32[2] = expected_action_strings.size();
359 expected_action_strings.push_back(action0.
label);
360 actions_buffer_int32[3] = expected_action_strings.size();
361 expected_action_strings.push_back(action0.
hint);
363 EXPECT_CALL(*jni_mock, FlutterViewUpdateCustomAccessibilityActions(
364 expected_actions_buffer, expected_action_strings));
367 delegate->UpdateSemantics(update, actions);