• Dominic Mazzoni's avatar
    Use PaintInvalidator to optimize AX bounding boxes · fd1c45a7
    Dominic Mazzoni authored
    Previously, any time there was a layout, the accessibility
    serialization code would scan every AXObject to see if any
    needed to update their bounding box.
    
    Instead, replace this with a mechanism that uses
    PaintInvalidator to mark AXObjects that might have
    dirty bounding boxes.
    
    Existing tests already provide some coverage; if you
    comment out the code in paint_invalidator.cc, a
    handful of browser tests fail.
    
    To provide even more coverage, a debug-only check
    walks the entire tree and ensures that no nodes
    have incorrect bounding boxes. If you try commenting
    out the code in paint_invalidator.cc now, hundreds
    of browser tests fail. This provides some good
    confidence that it's working correctly.
    
    Finally, add a new blink perf test demonstrating a
    simple scenario where this results in a dramatic
    speedup, just by focusing links in a document with a
    few thousand nodes.
    
    Bug: 1109081
    AX-Relnotes: makes accessibility less sluggish on very large web pages
    
    Change-Id: I51a89d0b37ff356c5443b324080acefe0e7f3fbf
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2319411
    Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
    Reviewed-by: default avatarXianzhu Wang <wangxianzhu@chromium.org>
    Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
    Reviewed-by: default avatarNektarios Paisios <nektar@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#792949}
    fd1c45a7
focus-links.html 2.18 KB