• Dominic Mazzoni's avatar
    Add support for accessible tables with missing/bad data. · 3ae311d8
    Dominic Mazzoni authored
    Previously we relied on Blink to correctly fill in the
    row and column index of every cell in a table. This
    tends to be expensive to do in Blink because it
    requires invalidating and reserializing the entire table
    if any cell changes.
    
    Instead, try to defer as much of those calculations to
    downstream to be computed when AT actually requests
    table attributes.
    
    This is more efficient, because Blink accessibility code
    needs to run any time the page is updated, like when a
    table is being built dynamically using JS - whereas AT
    typically only queries table attributes when users
    explore a table explicitly, so it makes sense to defer
    computation until then.
    
    This is also more accurate and less error-prone, as it
    allows us to completely validate the table in a single
    pass and fix any errors in table indexes.
    
    Finally, a potential added benefit is that this makes it
    easier to handle tables from Views or Arc++ that
    don't have all of the table attributes set, we can
    compute them automatically.
    
    A follow-up change will remove the code that computes
    some of these table attributes from Blink.
    
    Bug: 832289
    
    Change-Id: I252a592c854e47cf6d6e5bd6b7c4bc5d51775e72
    Reviewed-on: https://chromium-review.googlesource.com/c/1307840Reviewed-by: default avatarAaron Leventhal <aleventhal@chromium.org>
    Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#606940}
    3ae311d8
ax_table_info.cc 15.2 KB