mirror of https://github.com/roytam1/UXP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.6 KiB
156 lines
3.6 KiB
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
/* This Source Code Form is subject to the terms of the Mozilla Public |
|
* License, v. 2.0. If a copy of the MPL was not distributed with this |
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
|
|
#include "sdnDocAccessible.h" |
|
|
|
#include "ISimpleDOMDocument_i.c" |
|
|
|
#include "nsNameSpaceManager.h" |
|
|
|
using namespace mozilla; |
|
using namespace mozilla::a11y; |
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
// sdnDocAccessible |
|
//////////////////////////////////////////////////////////////////////////////// |
|
|
|
IMPL_IUNKNOWN_QUERY_HEAD(sdnDocAccessible) |
|
IMPL_IUNKNOWN_QUERY_IFACE(ISimpleDOMDocument) |
|
IMPL_IUNKNOWN_QUERY_TAIL_AGGREGATED(mAccessible) |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::get_URL(BSTR __RPC_FAR* aURL) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aURL) |
|
return E_INVALIDARG; |
|
*aURL = nullptr; |
|
|
|
if (mAccessible->IsDefunct()) |
|
return CO_E_OBJNOTCONNECTED; |
|
|
|
nsAutoString URL; |
|
mAccessible->URL(URL); |
|
if (URL.IsEmpty()) |
|
return S_FALSE; |
|
|
|
*aURL = ::SysAllocStringLen(URL.get(), URL.Length()); |
|
return *aURL ? S_OK : E_OUTOFMEMORY; |
|
|
|
A11Y_TRYBLOCK_END |
|
} |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::get_title(BSTR __RPC_FAR* aTitle) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aTitle) |
|
return E_INVALIDARG; |
|
*aTitle = nullptr; |
|
|
|
if (mAccessible->IsDefunct()) |
|
return CO_E_OBJNOTCONNECTED; |
|
|
|
nsAutoString title; |
|
mAccessible->Title(title); |
|
*aTitle = ::SysAllocStringLen(title.get(), title.Length()); |
|
return *aTitle ? S_OK : E_OUTOFMEMORY; |
|
|
|
A11Y_TRYBLOCK_END |
|
} |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::get_mimeType(BSTR __RPC_FAR* aMimeType) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aMimeType) |
|
return E_INVALIDARG; |
|
*aMimeType = nullptr; |
|
|
|
if (mAccessible->IsDefunct()) |
|
return CO_E_OBJNOTCONNECTED; |
|
|
|
nsAutoString mimeType; |
|
mAccessible->MimeType(mimeType); |
|
if (mimeType.IsEmpty()) |
|
return S_FALSE; |
|
|
|
*aMimeType = ::SysAllocStringLen(mimeType.get(), mimeType.Length()); |
|
return *aMimeType ? S_OK : E_OUTOFMEMORY; |
|
|
|
A11Y_TRYBLOCK_END |
|
} |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::get_docType(BSTR __RPC_FAR* aDocType) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aDocType) |
|
return E_INVALIDARG; |
|
*aDocType = nullptr; |
|
|
|
if (mAccessible->IsDefunct()) |
|
return CO_E_OBJNOTCONNECTED; |
|
|
|
nsAutoString docType; |
|
mAccessible->DocType(docType); |
|
if (docType.IsEmpty()) |
|
return S_FALSE; |
|
|
|
*aDocType = ::SysAllocStringLen(docType.get(), docType.Length()); |
|
return *aDocType ? S_OK : E_OUTOFMEMORY; |
|
|
|
A11Y_TRYBLOCK_END |
|
} |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::get_nameSpaceURIForID(short aNameSpaceID, |
|
BSTR __RPC_FAR* aNameSpaceURI) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aNameSpaceURI) |
|
return E_INVALIDARG; |
|
*aNameSpaceURI = nullptr; |
|
|
|
if (mAccessible->IsDefunct()) |
|
return CO_E_OBJNOTCONNECTED; |
|
|
|
if (aNameSpaceID < 0) |
|
return E_INVALIDARG; // -1 is kNameSpaceID_Unknown |
|
|
|
nsAutoString nameSpaceURI; |
|
nsNameSpaceManager* nameSpaceManager = nsNameSpaceManager::GetInstance(); |
|
if (nameSpaceManager) |
|
nameSpaceManager->GetNameSpaceURI(aNameSpaceID, nameSpaceURI); |
|
|
|
if (nameSpaceURI.IsEmpty()) |
|
return S_FALSE; |
|
|
|
*aNameSpaceURI = ::SysAllocStringLen(nameSpaceURI.get(), |
|
nameSpaceURI.Length()); |
|
|
|
return *aNameSpaceURI ? S_OK : E_OUTOFMEMORY; |
|
|
|
A11Y_TRYBLOCK_END |
|
} |
|
|
|
STDMETHODIMP |
|
sdnDocAccessible::put_alternateViewMediaTypes(BSTR __RPC_FAR* aCommaSeparatedMediaTypes) |
|
{ |
|
A11Y_TRYBLOCK_BEGIN |
|
|
|
if (!aCommaSeparatedMediaTypes) |
|
return E_INVALIDARG; |
|
*aCommaSeparatedMediaTypes = nullptr; |
|
|
|
return mAccessible->IsDefunct() ? CO_E_OBJNOTCONNECTED : E_NOTIMPL; |
|
|
|
A11Y_TRYBLOCK_END |
|
}
|
|
|