Closed Bug 1543298 Opened 5 years ago Closed 5 years ago

Fission a11y: Expose COM proxy for embedded OOP iframe document on embedder BrowserBridgeChild

Categories

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

All
Windows
task

Tracking

()

RESOLVED FIXED
mozilla69
Fission Milestone M3
Tracking Status
firefox69 --- fixed

People

(Reporter: Jamie, Assigned: Jamie)

References

Details

Attachments

(3 files)

On Windows, a11y clients communicate directly with accessibles in the content process using COM. For e10s, embedded iframe documents are in the same process as their embedder iframe, so they use the same a11y tree and thus no additional work is required to support iframes. For Fission, iframe documents can be in a different process.

In order to expose an OOP iframe document as a child of the embedder iframe via COM, the embedder process needs a COM proxy for the iframe document.

  1. The embedded iframe document must send its COM proxy to the parent process. This will occur in PBrowser::PDocAccessible constructor as it does for top level documents.
  2. After bug 1543287, TabParent::RecvPDocAccessibleConstructor will call DocAccessibleParent::AddChildDoc on the embedder document.
  3. The parent process must send the proxy received in (1) to the embedder document's content process. In AddChildDoc, a new PBrowserBridge method will need to be called which sends this proxy to be used as the child of the iframe. This will be exposed on BrowserBridgeChild.
Blocks: 1543307

For an out-of-process iframe, we need to be able to return a remote embedder accessible as a child of an OuterDocAccessible.
For parent process OuterDocAccessibles, we use the ProxyAccessible for the embedded document.
In the case of out-of-process iframes, there is no ProxyAccessible for the embedded document, since the iframe is in a content process and ProxyAccessibles only exist in the parent process.
Like ProxyAccessibleWrap, the only real method that gets called is GetNativeInterface, which returns a COM proxy for the document.

This will be later exposed as a child of the embedder OuterDocAccessible.

Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/eed17a01f44f
part 1: Add a stub AccessibleWrap used in a Windows content process for an embedded document residing in another content process. r=eeejay
https://hg.mozilla.org/integration/autoland/rev/02b71771b27b
part 2: Add PBrowserBridge::SetEmbeddedDocAccessibleCOMProxy so the parent can send the child the COM proxy for the embedded document accessible. r=eeejay,nika
https://hg.mozilla.org/integration/autoland/rev/aa4c140e2192
part 3: For out-of-process iframes, send the embedded document accessible's COM proxy to the embedder. r=eeejay
Fission Milestone: --- → M3
Blocks: a11y-fission
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: