Bug 1890277: part 2) Add `require-trusted-types-for` directive to CSP parser, guarded...
[gecko.git] / accessible / xpcom / xpcAccessibleGeneric.h
blob65df7e6ec73000f8515725bdc4686ebec73dd89e
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/. */
7 #ifndef mozilla_a11y_xpcAccessibleGeneric_h_
8 #define mozilla_a11y_xpcAccessibleGeneric_h_
10 #include "xpcAccessible.h"
11 #include "xpcAccessibleHyperLink.h"
12 #include "xpcAccessibleSelectable.h"
13 #include "xpcAccessibleValue.h"
15 #include "LocalAccessible.h"
16 #include "mozilla/a11y/Accessible.h"
17 #include "mozilla/a11y/RemoteAccessible.h"
19 namespace mozilla {
20 namespace a11y {
22 /**
23 * XPCOM wrapper around Accessible class.
25 class xpcAccessibleGeneric : public xpcAccessible,
26 public xpcAccessibleHyperLink,
27 public xpcAccessibleSelectable,
28 public xpcAccessibleValue {
29 public:
30 explicit xpcAccessibleGeneric(Accessible* aInternal)
31 : mIntl(aInternal), mSupportedIfaces(0) {
32 if (aInternal->IsSelect()) mSupportedIfaces |= eSelectable;
33 if (aInternal->HasNumericValue()) mSupportedIfaces |= eValue;
34 if (aInternal->IsLink()) mSupportedIfaces |= eHyperLink;
37 NS_DECL_ISUPPORTS
39 // nsIAccessible
40 LocalAccessible* ToInternalAccessible() final;
41 Accessible* ToInternalGeneric() final { return mIntl; }
43 // xpcAccessibleGeneric
44 virtual void Shutdown();
46 protected:
47 virtual ~xpcAccessibleGeneric();
49 Accessible* mIntl;
51 enum {
52 eSelectable = 1 << 0,
53 eValue = 1 << 1,
54 eHyperLink = 1 << 2,
55 eText = 1 << 3
57 uint8_t mSupportedIfaces;
59 private:
60 friend class LocalAccessible;
61 friend class xpcAccessible;
62 friend class xpcAccessibleHyperLink;
63 friend class xpcAccessibleSelectable;
64 friend class xpcAccessibleValue;
66 xpcAccessibleGeneric(const xpcAccessibleGeneric&) = delete;
67 xpcAccessibleGeneric& operator=(const xpcAccessibleGeneric&) = delete;
70 inline LocalAccessible* xpcAccessible::Intl() {
71 if (!static_cast<xpcAccessibleGeneric*>(this)->mIntl) {
72 return nullptr;
74 return static_cast<xpcAccessibleGeneric*>(this)->mIntl->AsLocal();
77 inline Accessible* xpcAccessible::IntlGeneric() {
78 return static_cast<xpcAccessibleGeneric*>(this)->mIntl;
81 inline Accessible* xpcAccessibleHyperLink::Intl() {
82 return static_cast<xpcAccessibleGeneric*>(this)->mIntl;
85 inline Accessible* xpcAccessibleSelectable::Intl() {
86 return static_cast<xpcAccessibleGeneric*>(this)->mIntl;
89 inline Accessible* xpcAccessibleValue::Intl() {
90 return static_cast<xpcAccessibleGeneric*>(this)->mIntl;
93 } // namespace a11y
94 } // namespace mozilla
96 #endif