[Webkit-unassigned] [Bug 234841] AX: Make more tests async to pass in isolated tree mode

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jan 5 07:10:14 PST 2022


https://bugs.webkit.org/show_bug.cgi?id=234841

--- Comment #6 from Carlos Garcia Campos <cgarcia at igalia.com> ---
I've analyzed in more detail what happens. Let's use a simple test as an example, like accessibility/language-attribute.html.

1- AccessibilityController::focusedElement() is called, when getting the root element the axObjectCache creates the isolated tree:
2- AXIsolatedTree::generateSubtree() is called for the root object, that already has one child, the web area.
 2.1-  AXIsolatedTree::createSubtree is called for the root object.
 2.2- AXIsolatedTree::createSubtree is called for the web area, but web area childrenCount is 0 a this point.
 2.3- AXIsolatedTree::generateSubtree() finished with 2 pending children updates
3- AccessibilityController::focusedElement() returns the web area element
4- AccessibilityUIElement::childAtIndex(0) is called on web area element
 4.1- executeOnAXThreadAndWait() is called to get the element first child
 4.2- On the main thread update backing store is called, so AXIsolatedTree::applyPendingChanges() is called and the 2 pending children updates are processed
 4.3- AXIsolatedObject::children() is called on web area element, and returns an empty array, so nullptr is returned as child.
 4.4- AXObjectCache::notificationPostTimerFired is called on the main thread (executeOnAXThreadAndWait iterates the main thread while waiting for the ax thread to complete the task), and that calls AXObjectCache::updateIsolatedTree() that ends up calling AXIsolatedTree::updateChildren() and now is when the rest of the isolated tree is populated, but it's too late because the ax thread already returned nullptr for the child.

The test fails with:

CONSOLE MESSAGE: TypeError: null is not an object (evaluating 'accessibilityObject.childrenCount')

accessibilityObject is webArea.childAtIndex(0) for which we returned null. 

This is what I tried to fix in bug #232141 by notifying about children changed earlier.

I can try other solutions like processing main thread loop also before going to the ax thread.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220105/223b59a5/attachment.htm>


More information about the webkit-unassigned mailing list