Closed Bug 1628582 Opened 5 years ago Closed 5 years ago

Fission a11y: Set DocAccessibleParent::mDocProxyStream on child doc, not parent doc

Categories

(Core :: Disability Access APIs, defect, P2)

Desktop
Windows
defect

Tracking

()

RESOLVED FIXED
mozilla78
Fission Milestone M7
Tracking Status
firefox78 --- fixed

People

(Reporter: Jamie, Assigned: Jamie)

References

Details

Attachments

(1 file)

DocAccessibleParent::AddChildDoc sends a COM proxy for the embedded document to the embedder process hosting the iframe. This gets returned as the child of the embedder OuterDocAccessible. Whenever we send a proxy to a content process, we must hold a PreservedStreamPtr in the parent process. In this case, currently, we set mDocProxyStream on the parent (embedder) document. It occurred to me that if a document has multiple OOP iframes, we'll end up losing the PreservedStreamPtr for all but the last added child OOP document. I think we should set mDocProxyStream on the child document instead.

This feels like an m5 bug to me, but I'm not quite sure how the m5, m5a and m5b milestones should be used.

Blocks: a11y-fission
Fission Milestone: --- → ?

Curiously, nothing seemed to break in a quick test with the current code; I could still retrieve both child documents:
data:text/html,foo<iframe src="https://google.com/nf"></iframe>bar<iframe src="https://files.jantrid.net/nf"></iframe>
I'm still pretty sure this is wrong, though. I will investigate further.

That said, it can probably be m6 given that it doesn't seem to break anything.

Fission Milestone: ? → M6
Fission Milestone: M6 → M7

DocAccessibleParent::AddChildDoc sends a COM proxy for the embedded document to the embedder process hosting the iframe.
This gets returned as the child of the embedder OuterDocAccessible.
Whenever we send a proxy to a content process, we must hold a PreservedStreamPtr in the parent process.
Previously, we set mDocProxyStream on the parent (embedder) document.
However, if a document had multiple OOP iframes, this meant we ended up losing the PreservedStreamPtr for all but the last added child OOP document.
We now set mDocProxyStream on the child document instead, since there can only be one embedder OuterDocAccessible per child document.

Pushed by jteh@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fed64af04da3 Set DocAccessibleParent::mDocProxyStream on the child document, not the parent document. r=yzen
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla78
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: