The public interface to Blink accessibility currently has over 100 functions used to retrieve accessibility attributes from each object in the accessibility tree.
This is an inefficient way to retrieve this information, because *most* attributes are empty / not applicable to most objects.
In Chrome, we serialize the full state of every accessibility object and send the data to the browser process. Since we know we often want *all* accessibility attributes but most of them are rare, it's quite wasteful to do it this way.
In particular, consider calling these functions in a row:
ariaActiveDescendant()
ariaControls()
ariaFlowTo()
placeholder()
Each one of these requires calling Element::getAttribute() with a rather obscure attribute.
Instead, we could iterate over the attributes of an element once, and dispatch based on that.
Comment 1 by bugdroid1@chromium.org
, Jan 23 2017