(
params: InteractionHandlerParams & {
captureSnapshotForSession: CaptureSnapshotForSession;
refSnapshotFlagGuardResponse: RefSnapshotFlagGuardResponse;
},
)
| 400 | } |
| 401 | |
| 402 | async function dispatchFillViaRuntime( |
| 403 | params: InteractionHandlerParams & { |
| 404 | captureSnapshotForSession: CaptureSnapshotForSession; |
| 405 | refSnapshotFlagGuardResponse: RefSnapshotFlagGuardResponse; |
| 406 | }, |
| 407 | ): Promise<DaemonResponse> { |
| 408 | const { req, sessionName, sessionStore } = params; |
| 409 | const session = sessionStore.get(sessionName); |
| 410 | if (session) { |
| 411 | const unsupportedSurfaceResponse = unsupportedMacOsDesktopSurfaceInteraction(session, 'fill'); |
| 412 | if (unsupportedSurfaceResponse) return unsupportedSurfaceResponse; |
| 413 | const unsupported = requireCommandSupported('fill', session.device); |
| 414 | if (unsupported) return unsupported; |
| 415 | } |
| 416 | if (!session) return noActiveSessionError(); |
| 417 | |
| 418 | const parsedTarget = parseFillTarget(req.positionals ?? []); |
| 419 | if (!parsedTarget.ok) return parsedTarget.response; |
| 420 | if (parsedTarget.target.kind === 'ref') { |
| 421 | const invalidRefFlagsResponse = params.refSnapshotFlagGuardResponse('fill', req.flags); |
| 422 | if (invalidRefFlagsResponse) return invalidRefFlagsResponse; |
| 423 | await refreshAndroidRefSnapshotIfFreshnessActive(params, session); |
| 424 | } |
| 425 | const directSelector = readDirectIosSelectorFillTarget({ |
| 426 | session, |
| 427 | target: parsedTarget.target, |
| 428 | flags: req.flags, |
| 429 | }); |
| 430 | if (directSelector) { |
| 431 | const directResponse = await dispatchDirectIosSelectorFill( |
| 432 | params, |
| 433 | session, |
| 434 | directSelector, |
| 435 | parsedTarget.text, |
| 436 | ); |
| 437 | if (directResponse) return directResponse; |
| 438 | } |
| 439 | |
| 440 | return await dispatchRuntimeInteraction(params, { |
| 441 | run: async (runtime) => |
| 442 | await runtime.interactions.fill(parsedTarget.target, parsedTarget.text, { |
| 443 | session: sessionName, |
| 444 | requestId: req.meta?.requestId, |
| 445 | delayMs: req.flags?.delayMs, |
| 446 | }), |
| 447 | buildPayloads: (result) => { |
| 448 | const referenceFrame = |
| 449 | result.kind === 'point' |
| 450 | ? undefined |
| 451 | : readSnapshotNodesReferenceFrame(session.snapshot?.nodes ?? []); |
| 452 | const recordedResult = buildTouchVisualizationResult({ |
| 453 | data: result.backendResult, |
| 454 | fallbackX: result.point?.x, |
| 455 | fallbackY: result.point?.y, |
| 456 | referenceFrame, |
| 457 | extra: { |
| 458 | ...interactionResultExtra(result), |
| 459 | text: parsedTarget.text, |
no test coverage detected