1 /* clang-format off */
2 /* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
3 /* clang-format on */
4 /* This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7
8 #import <Cocoa/Cocoa.h>
9
10 #import "mozAccessibleProtocol.h"
11 #import "MOXAccessibleProtocol.h"
12
13 #include "Platform.h"
14
GetObjectOrRepresentedView(id<mozAccessible> aObject)15 inline id<mozAccessible> GetObjectOrRepresentedView(id<mozAccessible> aObject) {
16 if (!mozilla::a11y::ShouldA11yBeEnabled()) {
17 // If platform a11y is not enabled, don't return represented view.
18 // This is mostly for our mochitest environment because the represented
19 // ChildView checks `ShouldA11yBeEnabled` before proxying accessibility
20 // methods to mozAccessibles.
21 return aObject;
22 }
23
24 return [aObject hasRepresentedView] ? [aObject representedView] : aObject;
25 }
26
27 @interface MOXAccessibleBase : NSObject <mozAccessible, MOXAccessible> {
28 BOOL mIsExpired;
29 }
30
31 #pragma mark - mozAccessible/widget
32
33 // override
34 - (BOOL)hasRepresentedView;
35
36 // override
37 - (id)representedView;
38
39 // override
40 - (BOOL)isRoot;
41
42 #pragma mark - mozAccessible/NSAccessibility
43
44 // The methods below interface with the platform through NSAccessibility.
45 // They should not be called directly or overridden in subclasses.
46
47 // override, final
48 - (NSArray*)accessibilityAttributeNames;
49
50 // override, final
51 - (id)accessibilityAttributeValue:(NSString*)attribute;
52
53 // override, final
54 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute;
55
56 // override, final
57 - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute;
58
59 // override, final
60 - (NSArray*)accessibilityActionNames;
61
62 // override, final
63 - (void)accessibilityPerformAction:(NSString*)action;
64
65 // override, final
66 - (NSString*)accessibilityActionDescription:(NSString*)action;
67
68 // override, final
69 - (NSArray*)accessibilityParameterizedAttributeNames;
70
71 // override, final
72 - (id)accessibilityAttributeValue:(NSString*)attribute
73 forParameter:(id)parameter;
74
75 // override, final
76 - (id)accessibilityHitTest:(NSPoint)point;
77
78 // override, final
79 - (id)accessibilityFocusedUIElement;
80
81 // override, final
82 - (BOOL)isAccessibilityElement;
83
84 // final
85 - (BOOL)accessibilityNotifiesWhenDestroyed;
86
87 #pragma mark - MOXAccessible protocol
88
89 // override
90 - (id)moxHitTest:(NSPoint)point;
91
92 // override
93 - (id)moxFocusedUIElement;
94
95 // override
96 - (void)moxPostNotification:(NSString*)notification;
97
98 // override
99 - (void)moxPostNotification:(NSString*)notification
100 withUserInfo:(NSDictionary*)userInfo;
101
102 // override
103 - (BOOL)moxBlockSelector:(SEL)selector;
104
105 // override
106 - (NSArray*)moxUnignoredChildren;
107
108 // override
109 - (NSArray*)moxChildren;
110
111 // override
112 - (id<mozAccessible>)moxUnignoredParent;
113
114 // override
115 - (id<mozAccessible>)moxParent;
116
117 // override
118 - (NSNumber*)moxIndexForChildUIElement:(id)child;
119
120 // override
121 - (id)moxTopLevelUIElement;
122
123 // override
124 - (id<MOXTextMarkerSupport>)moxTextMarkerDelegate;
125
126 // override
127 - (BOOL)moxIsLiveRegion;
128
129 // override
130 - (id<MOXAccessible>)moxFindAncestor:(BOOL (^)(id<MOXAccessible> moxAcc,
131 BOOL* stop))findBlock;
132
133 #pragma mark -
134
135 - (NSString*)description;
136
137 - (BOOL)isExpired;
138
139 // makes ourselves "expired". after this point, we might be around if someone
140 // has retained us (e.g., a third-party), but we really contain no information.
141 - (void)expire;
142
143 @end
144