mirror of
https://github.com/lahfir/agent-desktop.git
synced 2026-07-27 09:32:17 +00:00
Extracts a single resolve_within_deadline poll-resolve helper shared by ref_action_wait's auto-wait loop and wait_element's element wait loop (F13), so the 750ms per-attempt cap and deadline math has one owner; each caller keeps its own retry classification and side effects (LatestRefCache refresh, ElementNotFound retry) as before. Deletes classify_query_result/ambiguous_candidate_summaries/ QueryCandidateSummary from locator.rs (zero callers) and simplifies find.rs's materialize_match to its snapshot-clone, dropping the index/tree/query params it silently discarded. Chosen over wiring the live path to build responses from live handles, which would change find's --count/--last semantics. Role::is_interactive now delegates to roles::INTERACTIVE_ROLES instead of re-encoding the 16 role names (F22). Consolidates three byte-identical NoopAdapter/StubSystemOps blanket test doubles (src/batch/tests.rs, src/dispatch/notifications.rs, tests/conformance/window_identity_contract.rs) into one file at tests/support/noop_ops.rs, included via #[path] since the binary's own unit tests and the standalone conformance integration crate cannot share a Rust module across the crate boundary. Extracts locate_verified_record in window_resolve.rs (parse -> find -> verify, previously duplicated by resolve_window_strict and resolve_window_element_strict) and compute_readonly in element.rs (previously duplicated identically by fetch_node_attrs and fetch_node_attrs_slow). Hoists element.rs's 18-entry CFString attribute-name array behind a thread-local cache (CFString/CFArray aren't Send+Sync so a process-wide LazyLock isn't viable) instead of rebuilding it on every node. Makes query.rs's collect_matches short-circuit on the cheap role check before building live-tree state/children context for elements that can never match. |
||
|---|---|---|
| .. | ||
| noop_ops.rs | ||