IAccessibleHolder CreateHolderFromAccessible(NotNull<Accessible*> aAccToWrap) { MOZ_ASSERT(NS_IsMainThread()); STAUniquePtr<IAccessible> iaToProxy; aAccToWrap->GetNativeInterface(mscom::getter_AddRefs(iaToProxy)); MOZ_DIAGNOSTIC_ASSERT(iaToProxy); if (!iaToProxy) { return nullptr; } static const bool useHandler = Preferences::GetBool("accessibility.handler.enabled", false) && IsHandlerRegistered(); RefPtr<HandlerProvider> payload; if (useHandler) { payload = new HandlerProvider(IID_IAccessible, mscom::ToInterceptorTargetPtr(iaToProxy)); } ProxyUniquePtr<IAccessible> intercepted; HRESULT hr = MainThreadHandoff::WrapInterface(Move(iaToProxy), payload, (IAccessible**) mscom::getter_AddRefs(intercepted)); MOZ_ASSERT(SUCCEEDED(hr)); if (FAILED(hr)) { return nullptr; } return IAccessibleHolder(Move(intercepted)); }
bool DocAccessibleChild::ConstructChildDocInParentProcess( DocAccessibleChild* aNewChildDoc, uint64_t aUniqueID, uint32_t aMsaaID) { if (IsConstructedInParentProcess()) { // We may send the constructor immediately auto tabChild = static_cast<dom::TabChild*>(Manager()); MOZ_ASSERT(tabChild); bool result = tabChild->SendPDocAccessibleConstructor(aNewChildDoc, this, aUniqueID, aMsaaID, IAccessibleHolder()); if (result) { aNewChildDoc->SetConstructedInParentProcess(); } return result; } PushDeferredEvent(MakeUnique<SerializedChildDocConstructor>(aNewChildDoc, this, aUniqueID, aMsaaID)); return true; }