Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 3b38ae2

Browse files
committed
test attempt
1 parent 1405b2b commit 3b38ae2

File tree

2 files changed

+64
-6
lines changed

2 files changed

+64
-6
lines changed

shell/platform/fuchsia/flutter/accessibility_bridge.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ class AccessibilityBridge
8585
// Notifies the bridge of a 'hover move' touch exploration event.
8686
zx_status_t OnHoverMove(double x, double y);
8787

88+
// |fuchsia::accessibility::semantics::SemanticListener|
89+
void HitTest(
90+
fuchsia::math::PointF local_point,
91+
fuchsia::accessibility::semantics::SemanticListener::HitTestCallback
92+
callback) override;
93+
8894
private:
8995
struct SemanticsNode {
9096
int32_t id;
@@ -153,12 +159,6 @@ class AccessibilityBridge
153159
fuchsia::accessibility::semantics::SemanticListener::
154160
OnAccessibilityActionRequestedCallback callback) override;
155161

156-
// |fuchsia::accessibility::semantics::SemanticListener|
157-
void HitTest(
158-
fuchsia::math::PointF local_point,
159-
fuchsia::accessibility::semantics::SemanticListener::HitTestCallback
160-
callback) override;
161-
162162
// |fuchsia::accessibility::semantics::SemanticListener|
163163
void OnSemanticsModeChanged(bool enabled,
164164
OnSemanticsModeChangedCallback callback) override;

shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,62 @@ TEST_F(AccessibilityBridgeTest, BatchesLargeMessages) {
294294
EXPECT_FALSE(semantics_manager_.DeleteOverflowed());
295295
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
296296
}
297+
298+
TEST_F(AccessibilityBridgeTest, HitTest) {
299+
flutter::SemanticsNode node0;
300+
node0.id = 0;
301+
node0.rect.setLTRB(0, 0, 100, 100);
302+
303+
flutter::SemanticsNode node1;
304+
node1.id = 1;
305+
node1.rect.setLTRB(10, 10, 20, 20);
306+
307+
flutter::SemanticsNode node2;
308+
node2.id = 2;
309+
node2.rect.setLTRB(25, 10, 45, 20);
310+
311+
flutter::SemanticsNode node3;
312+
node3.id = 3;
313+
node3.rect.setLTRB(10, 25, 20, 45);
314+
315+
flutter::SemanticsNode node4;
316+
node4.id = 4;
317+
node4.rect.setLTRB(10, 10, 20, 20);
318+
node4.transform.setTranslate(20, 20, 0);
319+
320+
node0.childrenInTraversalOrder = {1, 2, 3, 4};
321+
node0.childrenInHitTestOrder = {1, 2, 3, 4};
322+
323+
accessibility_bridge_->AddSemanticsNodeUpdate({
324+
{0, node0},
325+
{1, node1},
326+
{2, node2},
327+
{3, node3},
328+
{4, node4},
329+
});
330+
RunLoopUntilIdle();
331+
332+
uint32_t hit_node_id;
333+
auto callback = [&hit_node_id](fuchsia::accessibility::semantics::Hit hit) {
334+
EXPECT_TRUE(hit.has_node_id());
335+
hit_node_id = hit.node_id();
336+
};
337+
338+
// Nodes are:
339+
// ----------
340+
// | 1 2 |
341+
// | 3 4 |
342+
// ----------
343+
344+
accessibility_bridge_->HitTest({1, 1}, callback);
345+
EXPECT_EQ(hit_node_id, 0u);
346+
accessibility_bridge_->HitTest({15, 15}, callback);
347+
EXPECT_EQ(hit_node_id, 1u);
348+
accessibility_bridge_->HitTest({30, 15}, callback);
349+
EXPECT_EQ(hit_node_id, 2u);
350+
accessibility_bridge_->HitTest({15, 30}, callback);
351+
EXPECT_EQ(hit_node_id, 3u);
352+
accessibility_bridge_->HitTest({30, 30}, callback);
353+
EXPECT_EQ(hit_node_id, 4u);
354+
}
297355
} // namespace flutter_runner_test

0 commit comments

Comments
 (0)