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 "MOXAccessibleProtocol.h"
11 #import "GeckoTextMarker.h"
12 
13 #include "AccessibleOrProxy.h"
14 
15 @interface MOXTextMarkerDelegate : NSObject <MOXTextMarkerSupport> {
16   mozilla::a11y::AccessibleOrProxy mGeckoDocAccessible;
17   id mSelection;
18   id mCaret;
19   id mPrevCaret;
20 }
21 
22 + (id)getOrCreateForDoc:(mozilla::a11y::AccessibleOrProxy)aDoc;
23 
24 + (void)destroyForDoc:(mozilla::a11y::AccessibleOrProxy)aDoc;
25 
26 - (id)initWithDoc:(mozilla::a11y::AccessibleOrProxy)aDoc;
27 
28 - (void)dealloc;
29 
30 - (void)setSelectionFrom:(mozilla::a11y::AccessibleOrProxy)startContainer
31                       at:(int32_t)startOffset
32                       to:(mozilla::a11y::AccessibleOrProxy)endContainer
33                       at:(int32_t)endOffset;
34 
35 - (void)setCaretOffset:(mozilla::a11y::AccessibleOrProxy)container
36                     at:(int32_t)offset;
37 
38 - (NSDictionary*)selectionChangeInfo;
39 
40 - (void)invalidateSelection;
41 
42 - (mozilla::a11y::GeckoTextMarkerRange)selection;
43 
44 // override
45 - (id)moxStartTextMarker;
46 
47 // override
48 - (id)moxEndTextMarker;
49 
50 // override
51 - (id)moxSelectedTextMarkerRange;
52 
53 // override
54 - (NSNumber*)moxLengthForTextMarkerRange:(id)textMarkerRange;
55 
56 // override
57 - (NSString*)moxStringForTextMarkerRange:(id)textMarkerRange;
58 
59 // override
60 - (id)moxTextMarkerRangeForUnorderedTextMarkers:(NSArray*)textMarkers;
61 
62 // override
63 - (id)moxStartTextMarkerForTextMarkerRange:(id)textMarkerRange;
64 
65 // override
66 - (id)moxEndTextMarkerForTextMarkerRange:(id)textMarkerRange;
67 
68 // override
69 - (id)moxLeftWordTextMarkerRangeForTextMarker:(id)textMarker;
70 
71 // override
72 - (id)moxRightWordTextMarkerRangeForTextMarker:(id)textMarker;
73 
74 // override
75 - (id)moxLineTextMarkerRangeForTextMarker:(id)textMarker;
76 
77 // override
78 - (id)moxLeftLineTextMarkerRangeForTextMarker:(id)textMarker;
79 
80 // override
81 - (id)moxRightLineTextMarkerRangeForTextMarker:(id)textMarker;
82 
83 // override
84 - (id)moxParagraphTextMarkerRangeForTextMarker:(id)textMarker;
85 
86 // override
87 - (id)moxStyleTextMarkerRangeForTextMarker:(id)textMarker;
88 
89 // override
90 - (id)moxNextTextMarkerForTextMarker:(id)textMarker;
91 
92 // override
93 - (id)moxPreviousTextMarkerForTextMarker:(id)textMarker;
94 
95 // override
96 - (NSAttributedString*)moxAttributedStringForTextMarkerRange:
97     (id)textMarkerRange;
98 
99 // override
100 - (NSValue*)moxBoundsForTextMarkerRange:(id)textMarkerRange;
101 
102 // override
103 - (id)moxUIElementForTextMarker:(id)textMarker;
104 
105 // override
106 - (id)moxTextMarkerRangeForUIElement:(id)element;
107 
108 // override
109 - (NSString*)moxMozDebugDescriptionForTextMarker:(id)textMarker;
110 
111 // override
112 - (void)moxSetSelectedTextMarkerRange:(id)textMarkerRange;
113 
114 @end
115 
116 namespace mozilla {
117 namespace a11y {
118 
119 enum AXTextEditType {
120   AXTextEditTypeUnknown,
121   AXTextEditTypeDelete,
122   AXTextEditTypeInsert,
123   AXTextEditTypeTyping,
124   AXTextEditTypeDictation,
125   AXTextEditTypeCut,
126   AXTextEditTypePaste,
127   AXTextEditTypeAttributesChange
128 };
129 
130 enum AXTextStateChangeType {
131   AXTextStateChangeTypeUnknown,
132   AXTextStateChangeTypeEdit,
133   AXTextStateChangeTypeSelectionMove,
134   AXTextStateChangeTypeSelectionExtend
135 };
136 
137 enum AXTextSelectionDirection {
138   AXTextSelectionDirectionUnknown,
139   AXTextSelectionDirectionBeginning,
140   AXTextSelectionDirectionEnd,
141   AXTextSelectionDirectionPrevious,
142   AXTextSelectionDirectionNext,
143   AXTextSelectionDirectionDiscontiguous
144 };
145 
146 enum AXTextSelectionGranularity {
147   AXTextSelectionGranularityUnknown,
148   AXTextSelectionGranularityCharacter,
149   AXTextSelectionGranularityWord,
150   AXTextSelectionGranularityLine,
151   AXTextSelectionGranularitySentence,
152   AXTextSelectionGranularityParagraph,
153   AXTextSelectionGranularityPage,
154   AXTextSelectionGranularityDocument,
155   AXTextSelectionGranularityAll
156 };
157 }
158 }
159