AccessibleChildren fails in-process on an OOP iframe with overridden role
Categories
(Core :: Disability Access APIs, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox98 | --- | fixed |
People
(Reporter: Jamie, Assigned: Jamie)
References
Details
Attachments
(1 file)
STR (with the NVDA screen reader):
- Open this test case:
data:text/html,before<iframe src="https://example.com/" role="navigation"></iframe>after
- Read the document with the arrow keys.
- Expected: You should see the content of example.com; "Example Domain", etc.
- Actual: The content of the iframe is completely missing.
We can't support IEnumVARIANT in AccessibleHandler for OOP iframes. However, we currently check for IA2_ROLE_INTERNAL_FRAME. Because the role is overridden, this check doesn't work and we try to use HandlerProvider::get_AllChildren, which fails exactly as described in the code comment.
I guess we can just not support IEnumVARIANT if the child count is 1, rather than checking for the role. This is kinda ugly, but it should work.
Originally reported in NVDA issue: https://github.com/nvaccess/nvda/issues/13244#issuecomment-1014901726
Assignee | ||
Comment 1•2 years ago
|
||
We need to handle OOP iframes specially when querying for IEnumVARIANT.
However, we can't rely on the role because it might be overridden by ARIA.
Instead, check for the absence of IAccessibleHyperText (which isn't supported for iframes) and a child count of 1.
This might trigger for a few things other than iframes, but it's not a problem to do what we're doing here whenever the child count is 1.
Pushed by jteh@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/04afde5e03ca Don't use the role to check for iframes in AccessibleHandler. r=morgan
Comment 3•2 years ago
|
||
bugherder |
Updated•2 years ago
|
Description
•