refactor(apple): share coordinate drag execution

Merged
TH
2d ago
+58-49

Summary

Give ordinary coordinate drags and synthesized-drag fallback one executor. Callers retain hold-duration and fallback policy; synthesized planning, refusals and sampled gesture profiles stay separate.

Three files change: the production owner, its existing native tests and the baseline. Production source shrinks by 19 lines / 511 bytes including overhead. The normal-drag test compares coordinates and exact reference dimensions against the live app frame, beside forced-fallback coverage. Prune exactly two obsolete clone fingerprints. No linked issue or scope expansion.

Validation

  • Head 418bb114c5e71a5a514ac5c0054ba178e3d9f821; rebased onto 03f394691dd8748539a4b83c18852550c1b97ebf. Range comparison preserves the extraction and two baseline removals; follow-up strengthens assertions and shortens the policy comment.
  • AGENT_DEVICE_VITEST_MAX_WORKERS=1 pnpm check:affected --run --head 418bb114c5e71a5a514ac5c0054ba178e3d9f821: passed, exactCommit: true; receipt run-sYWhfE, 39 passed / 25 skipped / 2 deduplicated. No related TypeScript tests selected.
  • Unit-enabled arm64 iOS build and four selected XCTest cases passed at this head on iPhone 18 Pro / iOS 27.0, including normal drag and forced synthesis fallback. Simulator stopped afterward. macOS builds passed at prior head 85143c3; subsequent production edit is comment-only.
  • Independent Apex review found no issues at 85143c3; follow-up reviewed locally. Hold durations were source-reviewed, not measured. New iOS test runs nightly, outside standard PR selection. GitHub owns full platform smoke, coverage and size evidence. tvOS/visionOS runtime unexercised.