Bug 1543313 part 2: Support getting an IAccessible for a ProxyAccessible in an out-of-process iframe. r=eeejay
☠☠ backed out by 523d45768463 ☠ ☠
authorJames Teh <jteh@mozilla.com>
Thu, 23 May 2019 20:13:00 +0000
changeset 476306 30b106088985198cfdc755e09173bd663ca657c7
parent 476305 85d11dab6b63d60a229f3dc42734bc7d0ab27fbd
child 476307 15f3e6bb3ba913aa9d67687edd59899873b671ae
push id36092
push userarchaeopteryx@coole-files.de
push dateFri, 31 May 2019 17:03:46 +0000
treeherdermozilla-central@8384972e1f6a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerseeejay
bugs1543313
milestone69.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1543313 part 2: Support getting an IAccessible for a ProxyAccessible in an out-of-process iframe. r=eeejay Previously, a COM proxy was only sent from content for top level documents. Now, a COM proxy is also sent (and needed) for out-of-process iframe documents. This change adjusts GetProxiedAccessibleInSubtree accordingly. Differential Revision: https://phabricator.services.mozilla.com/D32283
accessible/windows/msaa/AccessibleWrap.cpp
--- a/accessible/windows/msaa/AccessibleWrap.cpp
+++ b/accessible/windows/msaa/AccessibleWrap.cpp
@@ -1300,25 +1300,25 @@ static Accessible* GetAccessibleInSubtre
   return nullptr;
 }
 
 static already_AddRefed<IDispatch> GetProxiedAccessibleInSubtree(
     const DocAccessibleParent* aDoc, const VARIANT& aVarChild) {
   auto wrapper = static_cast<DocProxyAccessibleWrap*>(WrapperFor(aDoc));
   RefPtr<IAccessible> comProxy;
   int32_t docWrapperChildId = AccessibleWrap::GetChildIDFor(wrapper);
-  // Only top level document accessible proxies are created with a pointer to
-  // their COM proxy.
-  if (aDoc->IsTopLevel()) {
+  // Only document accessible proxies at the top level of their content process
+  // are created with a pointer to their COM proxy.
+  if (aDoc->IsTopLevelInContentProcess()) {
     wrapper->GetNativeInterface(getter_AddRefs(comProxy));
   } else {
     auto tab = static_cast<dom::BrowserParent*>(aDoc->Manager());
     MOZ_ASSERT(tab);
     DocAccessibleParent* topLevelDoc = tab->GetTopLevelDocAccessible();
-    MOZ_ASSERT(topLevelDoc && topLevelDoc->IsTopLevel());
+    MOZ_ASSERT(topLevelDoc && topLevelDoc->IsTopLevelInContentProcess());
     VARIANT docId = {{{VT_I4}}};
     docId.lVal = docWrapperChildId;
     RefPtr<IDispatch> disp = GetProxiedAccessibleInSubtree(topLevelDoc, docId);
     if (!disp) {
       return nullptr;
     }
 
     DebugOnly<HRESULT> hr =