Deleting a character in a textbox causes DeleteSelectionCommand::doApply(), in turn calling Editor::textWillBeDeletedInTextField(), in turn performing sync IPC. This can cause issues for AX clients handling the notifications also caused by the deletion, such as AXValueChanged or AXSelectedTextChanged.
<rdar://problem/96700714>
Created attachment 460770 [details] Patch
Comment on attachment 460770 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=460770&action=review > Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp:145 > + if (messageName.contains("ShouldPerformActionInFormTextField"_s)) should we make this more forward looking and add a method like bool shouldMessageInformProcessSuspension(String messageName) { static HashMap map = { "ShouldPerformActionInFormTextField" } return !map.contains(messageName) } or something to that effect?
Created attachment 460773 [details] Patch
CC Sam who wrote this code a long time ago in https://github.com/WebKit/WebKit/commit/4e2b681b26d3407c4213815abe365bcf7c3936c3 and Megan for her editing knowledge.
Actually, maybe textDidChangeInTextField is not the right fit here...maybe we need to create a new method on InjectedBundlePageFormClient called textWillBeDeletedInTextField or something? Neither textDidChangeInTextField from my current patch nor shouldPerformActionInTextField in current `main` really capture the intent well IMO (and the latter causes issues for AX due to its usage of sync IPC)