Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: edd3aebf883a942b39a45c649da0218e74b9b4c2
      
https://github.com/WebKit/WebKit/commit/edd3aebf883a942b39a45c649da0218e74b9b4c2
  Author: Tyler Wilcock <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    A LayoutTests/accessibility/self-deleting-select-element-expected.txt
    A LayoutTests/accessibility/self-deleting-select-element.html
    M Source/WebCore/accessibility/AccessibilityObject.cpp

  Log Message:
  -----------
  AX: VoiceOver hangs in Safari when a select element deletes itself as a 
result of an onchange event
https://bugs.webkit.org/show_bug.cgi?id=286690
rdar://143830006

Reviewed by Chris Fleizach.

AccessibilityObject::documentFrameView() is called a result of isIgnored(). 
When we process tree updates as a result
of a select element removing itself from the DOM, we can get into an infinite 
loop, as there may be strong references
to the select accessibility object on the stack, but its renderer and node are 
gone. So when a descendant iterates up
to it in AccessibilityObject::documentFrameView(), we try to use it to get a 
documentFrameView() because it
isAccessibilityRenderObject(), even though it no longer has a renderer. Then 
the descendant continues trying to find
a documentFrameView(), hits the renderer-less and node-less ancestor select 
again, repeating forever.

Fix this by making AccessibilityObject::documentFrameView() ensure the 
AccessibilityRenderObject or AccessibilityNodeObject
it iterates to actually has a valid node or renderer.

* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::documentFrameView const):
* LayoutTests/accessibility/self-deleting-select-element-expected.txt: Added.
* LayoutTests/accessibility/self-deleting-select-element.html: Added.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to