You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c332214
Browse filesBrowse the repository at this point in the historyBrowse files
fix(ios): stop fill from repairing fields that normalize their input (#2634)
Replacement-mode entry into a field that reformats what it holds (digit
grouping, masks, currency) always ran the destructive clear-and-retype
against an already-correct field and then failed with TEXT_ENTRY_MISMATCH:
isRepairableTextEntryMismatch returned true for every replacement mismatch,
so the dropped-character classifier below it never ran. The gate now asks
the same question in both modes: only an empty field or a short in-order
cut of the request is something a retype can undo.
A value that carries every requested character in order, which raw
equality can never reach because the app inserted formatting around it,
now reaches the existing unconfirmed-evidence path instead of failing.
The choice is deliberate and named: textEntryValueEchoes is UNCHANGED —
a complete mask value stays an echo, because echo answers whether the
value COULD be a degraded copy of baseline + request, and the phone-mask
pin in testDegradedEchoesStayEchoesAndSummariesDoNot still stands. What
changes is what an echo withholds: evidence is now refused only when the
value could be degraded AND cannot be complete, judged by ordered
containment of a non-empty request the baseline did not already carry
(textEntryValueCarriesRequest). The adversarial pair separates on that
containment, not on a separator dictionary: '00 062 91 77' carries
'000629177', while '00 62 91 77' and '00 026 91 77' do not. No new
outcome shape, no wire change, and the field is typed exactly once.
Fixture: AgentDeviceDigitGroupingTextField reproduces the reported
'## ### ## ##' formatter; the device test observes the runner log go from
REPAIR_TEXT_ENTRY expectedLength=9 observedLength=12 to
TEXT_ENTRY_UNCONFIRMED repaired=0, and the classifier tables pin the
boundary at the deciding predicate.
Copy file name to clipboardExpand all lines: apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/UnitTests/RunnerTests+TextEntryConfirmationTests.swift
0 commit comments