nvda
93bd4eae - Support for out-of-process iframes in Firefox (#10707)

Commit
6 years ago
Support for out-of-process iframes in Firefox (#10707) * gecko_ia2 vbuf getNVDAObjectFromIdentifier: Use getNVDAObjectFromEvent instead of accChild on the document. This was changed to use accChild on the document in the theoretical hope that it might be slightly faster, since it doesn't need to go via the parent process. However, this was never proved to be a performance benefit in real terms. In Firefox, when an iframe document is rendered in a separate process to its embedder, the embedder has no knowledge of children in the embedded document and cannot communicate with the embedded document at all. This means that accChild for accessibles in the embedded document fails. The root accessible is in the parent process and can fetch children in all content documents, so using AccessibleObjectFromEvent works as expected. * gecko_ia2 vbuf __contains__: If accChild fails, try the embedder iframe(s). In Firefox, when an iframe/frame document is rendered in a separate process to its embedder, accChild for accessibles in the embedded document fails. If this is the case, we can get the embedder frame and try accChild with the iframe's id. There can be nested out-of-process frames, so we keep trying this until there are no more frames in the hierarchy (or until we hit the buffer's root id). We cache frames because walking frames is expensive, and when trying to work out what TreeInterceptor an object belongs to, we'll need to query the frames for each TreeInterceptor.
Author
Parents
Loading