accessible/src/windows/sdn/sdnDocAccessible.cpp

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:9263ba71e63e
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "sdnDocAccessible.h"
8
9 #include "ISimpleDOMDocument_i.c"
10
11 using namespace mozilla;
12 using namespace mozilla::a11y;
13
14 ////////////////////////////////////////////////////////////////////////////////
15 // sdnDocAccessible
16 ////////////////////////////////////////////////////////////////////////////////
17
18 IMPL_IUNKNOWN_QUERY_HEAD(sdnDocAccessible)
19 IMPL_IUNKNOWN_QUERY_IFACE(ISimpleDOMDocument)
20 IMPL_IUNKNOWN_QUERY_TAIL_AGGREGATED(mAccessible)
21
22 STDMETHODIMP
23 sdnDocAccessible::get_URL(BSTR __RPC_FAR* aURL)
24 {
25 A11Y_TRYBLOCK_BEGIN
26
27 if (!aURL)
28 return E_INVALIDARG;
29 *aURL = nullptr;
30
31 if (mAccessible->IsDefunct())
32 return CO_E_OBJNOTCONNECTED;
33
34 nsAutoString URL;
35 nsresult rv = mAccessible->GetURL(URL);
36 if (NS_FAILED(rv))
37 return E_FAIL;
38
39 if (URL.IsEmpty())
40 return S_FALSE;
41
42 *aURL = ::SysAllocStringLen(URL.get(), URL.Length());
43 return *aURL ? S_OK : E_OUTOFMEMORY;
44
45 A11Y_TRYBLOCK_END
46 }
47
48 STDMETHODIMP
49 sdnDocAccessible::get_title(BSTR __RPC_FAR* aTitle)
50 {
51 A11Y_TRYBLOCK_BEGIN
52
53 if (!aTitle)
54 return E_INVALIDARG;
55 *aTitle = nullptr;
56
57 if (mAccessible->IsDefunct())
58 return CO_E_OBJNOTCONNECTED;
59
60 nsAutoString title;
61 nsresult rv = mAccessible->GetTitle(title);
62 if (NS_FAILED(rv))
63 return E_FAIL;
64
65 *aTitle = ::SysAllocStringLen(title.get(), title.Length());
66 return *aTitle ? S_OK : E_OUTOFMEMORY;
67
68 A11Y_TRYBLOCK_END
69 }
70
71 STDMETHODIMP
72 sdnDocAccessible::get_mimeType(BSTR __RPC_FAR* aMimeType)
73 {
74 A11Y_TRYBLOCK_BEGIN
75
76 if (!aMimeType)
77 return E_INVALIDARG;
78 *aMimeType = nullptr;
79
80 if (mAccessible->IsDefunct())
81 return CO_E_OBJNOTCONNECTED;
82
83 nsAutoString mimeType;
84 nsresult rv = mAccessible->GetMimeType(mimeType);
85 if (NS_FAILED(rv))
86 return E_FAIL;
87
88 if (mimeType.IsEmpty())
89 return S_FALSE;
90
91 *aMimeType = ::SysAllocStringLen(mimeType.get(), mimeType.Length());
92 return *aMimeType ? S_OK : E_OUTOFMEMORY;
93
94 A11Y_TRYBLOCK_END
95 }
96
97 STDMETHODIMP
98 sdnDocAccessible::get_docType(BSTR __RPC_FAR* aDocType)
99 {
100 A11Y_TRYBLOCK_BEGIN
101
102 if (!aDocType)
103 return E_INVALIDARG;
104 *aDocType = nullptr;
105
106 if (mAccessible->IsDefunct())
107 return CO_E_OBJNOTCONNECTED;
108
109 nsAutoString docType;
110 nsresult rv = mAccessible->GetDocType(docType);
111 if (NS_FAILED(rv))
112 return E_FAIL;
113
114 if (docType.IsEmpty())
115 return S_FALSE;
116
117 *aDocType = ::SysAllocStringLen(docType.get(), docType.Length());
118 return *aDocType ? S_OK : E_OUTOFMEMORY;
119
120 A11Y_TRYBLOCK_END
121 }
122
123 STDMETHODIMP
124 sdnDocAccessible::get_nameSpaceURIForID(short aNameSpaceID,
125 BSTR __RPC_FAR* aNameSpaceURI)
126 {
127 A11Y_TRYBLOCK_BEGIN
128
129 if (!aNameSpaceURI)
130 return E_INVALIDARG;
131 *aNameSpaceURI = nullptr;
132
133 if (mAccessible->IsDefunct())
134 return CO_E_OBJNOTCONNECTED;
135
136 if (aNameSpaceID < 0)
137 return E_INVALIDARG; // -1 is kNameSpaceID_Unknown
138
139 nsAutoString nameSpaceURI;
140 nsresult rv = mAccessible->GetNameSpaceURIForID(aNameSpaceID, nameSpaceURI);
141 if (NS_FAILED(rv))
142 return E_FAIL;
143
144 if (nameSpaceURI.IsEmpty())
145 return S_FALSE;
146
147 *aNameSpaceURI = ::SysAllocStringLen(nameSpaceURI.get(),
148 nameSpaceURI.Length());
149
150 return *aNameSpaceURI ? S_OK : E_OUTOFMEMORY;
151
152 A11Y_TRYBLOCK_END
153 }
154
155 STDMETHODIMP
156 sdnDocAccessible::put_alternateViewMediaTypes(BSTR __RPC_FAR* aCommaSeparatedMediaTypes)
157 {
158 A11Y_TRYBLOCK_BEGIN
159
160 if (!aCommaSeparatedMediaTypes)
161 return E_INVALIDARG;
162 *aCommaSeparatedMediaTypes = nullptr;
163
164 return mAccessible->IsDefunct() ? CO_E_OBJNOTCONNECTED : E_NOTIMPL;
165
166 A11Y_TRYBLOCK_END
167 }

mercurial