Always defer focus events after clean layout
In the attached bug (which has recently been re-introduced), 1. focus is requested on a node 2. in response, the page triggers some type of re-flow which causes the layout object of the node to be invalidated 3. some amount of non-determinism occurs where we might call AXObject CacheImpl::GetOrCreate on a node (keyed by layout object). This sometimes results in us creating a brand new AXLayoutObject or AXNodeObject for a Node that hasn't been destroyed. 4. when it arrives in the browser or in ChromeVox, the target of the focus looks like it was destroyed, so the focus event never gets fired. Test: browser_tests --gtest_filter=Automation*.ForceLayout Bug: 885244 Change-Id: I2f7747a98d15a6ae5b3ed75638a93d1078526015 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1872422 Commit-Queue: David Tseng <dtseng@chromium.org> Reviewed-by:Alice Boxhall <aboxhall@chromium.org> Reviewed-by:
Dominic Mazzoni <dmazzoni@chromium.org> Cr-Commit-Position: refs/heads/master@{#709303}
Showing
Please register or sign in to comment