feat(harmonyos): inject gesture pan as a densified touch-panel trajectory

ST
1d ago
+1004-3

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 trajectoryFallback while the endpoint swipe runs.
  • CI runs the full gates on push.

šŸ¤– Generated with Claude Code