Line data Source code
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 file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #include "xpcAccessibleGeneric.h"
8 :
9 : using namespace mozilla::a11y;
10 :
11 : ////////////////////////////////////////////////////////////////////////////////
12 : // nsISupports
13 :
14 0 : NS_INTERFACE_MAP_BEGIN(xpcAccessibleGeneric)
15 0 : NS_INTERFACE_MAP_ENTRY(nsIAccessible)
16 0 : NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIAccessibleSelectable,
17 : mSupportedIfaces & eSelectable)
18 0 : NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIAccessibleValue,
19 : mSupportedIfaces & eValue)
20 0 : NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIAccessibleHyperLink,
21 : mSupportedIfaces & eHyperLink)
22 0 : NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessible)
23 0 : NS_INTERFACE_MAP_END
24 :
25 0 : NS_IMPL_ADDREF(xpcAccessibleGeneric)
26 0 : NS_IMPL_RELEASE(xpcAccessibleGeneric)
27 :
28 0 : xpcAccessibleGeneric::~xpcAccessibleGeneric()
29 : {
30 0 : if (mIntl.IsNull()) {
31 0 : return;
32 : }
33 :
34 0 : xpcAccessibleDocument* xpcDoc = nullptr;
35 0 : if (mIntl.IsAccessible()) {
36 0 : Accessible* acc = mIntl.AsAccessible();
37 0 : if (!acc->IsDoc() && !acc->IsApplication()) {
38 0 : xpcDoc = GetAccService()->GetXPCDocument(acc->Document());
39 0 : xpcDoc->NotifyOfShutdown(acc);
40 : }
41 : } else {
42 0 : ProxyAccessible* proxy = mIntl.AsProxy();
43 0 : if (!proxy->IsDoc()) {
44 0 : xpcDoc = GetAccService()->GetXPCDocument(proxy->Document());
45 0 : xpcDoc->NotifyOfShutdown(proxy);
46 : }
47 : }
48 0 : }
49 :
50 : ////////////////////////////////////////////////////////////////////////////////
51 : // nsIAccessible
52 :
53 : Accessible*
54 0 : xpcAccessibleGeneric::ToInternalAccessible() const
55 : {
56 0 : return mIntl.AsAccessible();
57 : }
58 :
59 : ////////////////////////////////////////////////////////////////////////////////
60 : // xpcAccessibleGeneric
61 :
62 : void
63 0 : xpcAccessibleGeneric::Shutdown()
64 : {
65 0 : mIntl = nullptr;
66 0 : }
|