NEW 242540
AX: Suspending AX during sync IPC caused by deleting characters in a textbox can cause issues for AX clients
https://bugs.webkit.org/show_bug.cgi?id=242540
Summary AX: Suspending AX during sync IPC caused by deleting characters in a textbox ...
Tyler Wilcock
Reported 2022-07-08 15:21:39 PDT
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.
Attachments
Patch (2.81 KB, patch)
2022-07-08 15:32 PDT, Tyler Wilcock
no flags
Patch (2.68 KB, patch)
2022-07-08 18:12 PDT, Tyler Wilcock
no flags
Radar WebKit Bug Importer
Comment 1 2022-07-08 15:21:47 PDT
Tyler Wilcock
Comment 2 2022-07-08 15:32:33 PDT
chris fleizach
Comment 3 2022-07-08 15:43:21 PDT
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?
Tyler Wilcock
Comment 4 2022-07-08 18:12:20 PDT
Tyler Wilcock
Comment 5 2022-07-08 18:22:46 PDT
CC Sam who wrote this code a long time ago in https://github.com/WebKit/WebKit/commit/4e2b681b26d3407c4213815abe365bcf7c3936c3 and Megan for her editing knowledge.
Tyler Wilcock
Comment 6 2022-07-08 18:37:06 PDT
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)
Note You need to log in before you can comment on or make changes to this bug.