mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-17 06:09:19 +00:00
![James Teh](/assets/img/avatar_default.png)
Windows screen readers must call IAccessible2::attributes for every show or text inserted event in order to determine whether the inserted content is within a live region, since this is only exposed via an object attribute. These attributes include group position attributes: posinset, setsize and level. When thousands of items are being inserted into a container such as a list, these queries can become expensive, even despite some of the information being cached. For IA2, including group position attributes is redundant in most cases, since there is a dedicated IAccessible2::groupPosition property for this purpose. Similarly, Mac code sometimes calls Accessible::Attributes, but it never uses the group position attributes, since it can use Accessible::GroupPosition() instead. That said, I don't know of a case where this is actually a problem in practice on mac. To address this: 1. No longer return group position attributes in Accessible::Attributes. 2. XPCOM clients, including tests and DevTools, still depend on these attributes, so update xpcAccessible::GetAttributes to include them. 3. ATK has no dedicated group position query, so update the ATK code to include these attributes too. 4. On Android, we could call GroupPosition directly, but it's easier to just pass AccAttributes to AccessibleWrap::GetRoleDescription, so include these attributes there too. 5. As an exception, IA2 requires the level attribute for headings, so include them just for roles::HEADING. Differential Revision: https://phabricator.services.mozilla.com/D231653