[webkit-changes] [WebKit/WebKit] a36f0d: AX: Sometimes web content becomes inaccessible to ...

AndresGonzalezApple noreply at github.com
Fri Sep 1 12:11:55 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a36f0d120d303e9829d17eb394a29c5769ebecfb
      https://github.com/WebKit/WebKit/commit/a36f0d120d303e9829d17eb394a29c5769ebecfb
  Author: Andres Gonzalez <andresg_22 at apple.com>
  Date:   2023-09-01 (Fri, 01 Sep 2023)

  Changed paths:
    M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  -----------
  AX: Sometimes web content becomes inaccessible to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=261006
rdar://113994918

Reviewed by Tyler Wilcock.

The problem is caused by the following sequence of events:
1. An AXObjectCache and AXIsolatedTree exist for the current page.
2. When the page is reloaded, the cache is destroyed and the isolated tree ActivityState is set to an empty set. The isolated tree is also queued to be destroyed.
3. VoiceOver queries for the focus off the main thread, but no isolated tree with focus is found sin the ActivityState is now empty or the tree was completely removed at that point.
4. A new AXObjectcache is created, but no new isolated object is created because this new AXObjectCache does not receive any request for the focus, which is one of the triggers of creating a new isolated tree.
The solution in this patch is to dispatch to the main thread the request for the focus in this scenario, which will result in the creation of a new isolated tree.

* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::accessibilityFocusedUIElement):

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




More information about the webkit-changes mailing list