feat(harmonyos): inject gesture pan as a densified touch-panel trajectory
Summary
HarmonyOS gesture pan injects a densified sample-carrying trajectory through the touch panel's evdev node when the panel node, its coordinate range, and a portrait display are readable, and falls back to the endpoint swipe otherwise. --json names the transport under backend and the fallback reason under trajectoryFallback, so a degraded pan is never a silent straight line. The injection is verified by the script's own success marker, and a reboot that renumbers the panel node re-probes instead of failing forever.
Motivation: the uiInput transport only writes straight swipes, and no shell-reachable channel below root expresses arbitrary sample sequences, so flows that judge trajectory shape (slider and drag verification, PanGesture recognition) cannot be driven faithfully.
Validation
- Head: 59a2bb517 on 0a1d37cb5.
- Local: typecheck green; first-screen and HarmonyOS input-action suites green (69 tests).
- Device (HUAWEI JDY-AL50, HarmonyOS 7.0.0.109, shell uid 2000): densified strokes injected on the panel node, observed by a canvas touch oracle via hilog move-sample counts; on this locked-down commercial build the transport refuses and the pan reports
trajectoryFallbackwhile the endpoint swipe runs. - CI runs the full gates on push.
š¤ Generated with Claude Code