[webkit-changes] [WebKit/WebKit] 059da5: AX: VoiceOver hangs in Safari when selecting "Sign...

Tyler Wilcock noreply at github.com
Fri Jan 20 10:27:30 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 059da518e6c00d18d6305e7864251f16eeefac87
      https://github.com/WebKit/WebKit/commit/059da518e6c00d18d6305e7864251f16eeefac87
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2023-01-20 (Fri, 20 Jan 2023)

  Changed paths:
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp

  Log Message:
  -----------
  AX: VoiceOver hangs in Safari when selecting "Sign in with Apple" on kickstarter.com and elsewhere
https://bugs.webkit.org/show_bug.cgi?id=250867
rdar://problem/104449619

Reviewed by Chris Fleizach.

"Sign in with Apple" on kickstarter.com triggers sync IPC through
WebChromeClient::createWindow. Depending on how the client handles this
request, this IPC may not return for an arbitrary amount of time. In
this case, Safari opens a native dialog, and the sync IPC does not
return until the dialog is closed.

This causes web content to become unresponsive to VoiceOver because the
main-thread is hung. This patch fixes this by using IPC::SendSyncOption::InformPlatformProcessWillSuspend
to tell VoiceOver we will become unresponsive until the IPC completes.

I couldn't find a good way to test this in an automated fashion.

* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):

Canonical link: https://commits.webkit.org/259147@main




More information about the webkit-changes mailing list