Fission a11y: Add embedded OOP iframe DocAccessibleParent as child of embedder DocAccessibleParent

RESOLVED FIXED in Firefox 69

Status

()

enhancement
P1
normal
RESOLVED FIXED
3 months ago
Last month

People

(Reporter: Jamie, Assigned: Jamie)

Tracking

(Blocks 2 bugs)

unspecified
mozilla69
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Fission Milestone:M3, firefox69 fixed)

Details

Attachments

(1 attachment)

For e10s, iframes are in the same process as their embedder document, so the content process directly tells the parent process to add the embedded iframe document as a child of the embedder iframe accessible. For Fission, the iframe document is in a different process. When the embedded iframe content process tells the parent process about the iframe document, it will not have the actor for the parent document accessible, nor will it know the accessible id of the embedding iframe.

Bug 1543282 will expose the iframe accessible id on BrowserBridgeParent. With that, when the parent process is notified that the embedded iframe document has been added (TabParent::RecvPDocAccessibleConstructor with no parent doc or id), it must:

  1. Find the DocAccessibleParent for the embedder document. This will be done by getting the embedded CanonicalBrowsingContext from the embedded TabParent, getting the embedder WindowGlobalParent from that CanonicalBrowsingContext, getting the embedder TabParent from that WindowGlobalParent and finally getting the embedder DocAccessibleParent from that TabParent. (This requires bug 1525427.) If this doesn't exist, it isn't an embedded document; it is top level and the existing behaviour for top level documents should apply.
  2. Find the id for the embedder iframe accessible. This will be done by getting the BrowserBridgeParent from the embedded TabParent and getting the iframe id from there as exposed in bug 1543282.
  3. Add the embedded iframe document as a child of the embedder document (using DocAccessibleParent::AddChildDoc), similar to the existing behaviour for e10s when the aParentDoc and aParentID arguments are provided.
Blocks: 1543298
Blocks: 1543313
Depends on: 1543575
Blocks: 1543575
No longer depends on: 1543575
Fission Milestone: --- → M2
Fission Milestone: M2 → M3

For iframes in a different process to their embedder, when the embedded iframe content process tells the parent process about the iframe document, it does not have the actor for the parent document accessible, nor does it know the accessible id of the embedding iframe.
However, in these cases, we have this information in the parent process already, so we can use that instead.

Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/dd9b4c826f73
Add embedded out-of-process iframe DocAccessibleParent as a child of its embedder DocAccessibleParent. r=eeejay,nika
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla69
Blocks: a11y-fission
You need to log in before you can comment on or make changes to this bug.