bug 1196460 - create different proxy wrappers depending on the type of the proxy r=surkov
--- a/accessible/windows/msaa/Platform.cpp
+++ b/accessible/windows/msaa/Platform.cpp
@@ -30,28 +30,36 @@ void
a11y::PlatformShutdown()
{
::DestroyCaret();
nsWinUtils::ShutdownWindowEmulation();
}
void
-a11y::ProxyCreated(ProxyAccessible* aProxy, uint32_t)
+a11y::ProxyCreated(ProxyAccessible* aProxy, uint32_t aInterfaces)
{
- ProxyAccessibleWrap* wrapper = new ProxyAccessibleWrap(aProxy);
+ AccessibleWrap* wrapper = nullptr;
+ if (aInterfaces & Interfaces::DOCUMENT) {
+ wrapper = new DocProxyAccessibleWrap(aProxy);
+ } else if (aInterfaces & Interfaces::HYPERTEXT) {
+ wrapper = new HyperTextProxyAccessibleWrap(aProxy);
+ } else {
+ wrapper = new ProxyAccessibleWrap(aProxy);
+ }
+
wrapper->AddRef();
aProxy->SetWrapper(reinterpret_cast<uintptr_t>(wrapper));
}
void
a11y::ProxyDestroyed(ProxyAccessible* aProxy)
{
- ProxyAccessibleWrap* wrapper =
- reinterpret_cast<ProxyAccessibleWrap*>(aProxy->GetWrapper());
+ AccessibleWrap* wrapper =
+ reinterpret_cast<AccessibleWrap*>(aProxy->GetWrapper());
MOZ_ASSERT(wrapper);
if (!wrapper)
return;
wrapper->Shutdown();
aProxy->SetWrapper(0);
wrapper->Release();
}