8573b0491a5f4e617cea6a6e567101a1a614a5dd
[WebKit-https.git] / Source / WebCore / accessibility / isolatedtree / AXIsolatedTreeNode.h
1 /*
2 * Copyright (C) 2019 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #pragma once
27
28 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
29
30 #include "AXObjectCache.h"
31 #include "AccessibilityObjectInterface.h"
32 #include "IntPoint.h"
33 #include "LayoutRect.h"
34 #include "Path.h"
35 #include <wtf/Forward.h>
36 #include <wtf/HashMap.h>
37 #include <wtf/RefPtr.h>
38 #include <wtf/RetainPtr.h>
39 #include <wtf/ThreadSafeRefCounted.h>
40 #include <wtf/Variant.h>
41 #include <wtf/Vector.h>
42 #include <wtf/WeakPtr.h>
43
44 namespace WebCore {
45
46 class AXIsolatedTree;
47
48 class AXIsolatedObject final : public AXCoreObject {
49 public:
50     static Ref<AXIsolatedObject> create(AXCoreObject&, bool isRoot);
51     ~AXIsolatedObject();
52
53     void setObjectID(AXID id) override { m_id = id; }
54     AXID objectID() const override { return m_id; }
55     void init() override { }
56
57     AccessibilityObjectWrapper* wrapper() const override { return m_wrapper.get(); }
58     void detach(AccessibilityDetachmentType, AXObjectCache* = nullptr) override { }
59     bool isDetached() const override;
60
61     void setTreeIdentifier(AXIsolatedTreeID);
62     void setParent(AXID);
63     void appendChild(AXID);
64
65 private:
66
67     AXID parent() const { return m_parent; }
68     
69     AXIsolatedTreeID treeIdentifier() const { return m_treeIdentifier; }
70     AXIsolatedTree* tree() const;
71     
72     AXIsolatedObject() = default;
73     AXIsolatedObject(AXCoreObject&, bool isRoot);
74     void initializeAttributeData(AXCoreObject&, bool isRoot);
75     AXCoreObject* associatedAXObject() const { return axObjectCache()->objectFromAXID(objectID()); }
76
77     enum class AXPropertyName : uint8_t {
78         None = 0,
79         AccessKey,
80         ActionVerb,
81         AccessibilityButtonState,
82         AccessibilityText,
83         AutoCompleteValue,
84         ARIAControlsElements,
85         ARIADetailsElements,
86         ARIADropEffects,
87         ARIAErrorMessageElements,
88         ARIAIsMultiline,
89         ARIAFlowToElements,
90         ARIALandmarkRoleDescription,
91         ARIATreeItemContent,
92         ARIATreeItemDisclosedRows,
93         ARIATreeRows,
94         ARIARoleAttribute,
95         ARIAOwnsElements,
96         BlockquoteLevel,
97         BoundingBoxRect,
98         CanHaveSelectedChildren,
99         CanSetExpandedAttribute,
100         CanSetFocusAttribute,
101         CanSetNumericValue,
102         CanSetSelectedAttribute,
103         CanSetSelectedChildrenAttribute,
104         CanSetTextRangeAttributes,
105         CanSetValueAttribute,
106         CanvasHasFallbackContent,
107         CaretBrowsingEnabled,
108         ClassList,
109         ClickPoint,
110         ColorValue,
111         ComputedLabel,
112         ComputedRoleString,
113         CurrentState,
114         CurrentValue,
115         DatetimeAttributeValue,
116         DecrementButton,
117         Description,
118         DocumentEncoding,
119         DocumentURI,
120         EditableAncestor,
121         ElementRect,
122         EstimatedLoadingProgress,
123         ExpandedTextValue,
124         ExposesTitleUIElement,
125         FileUploadButtonReturnsValueInTitle,
126         FocusableAncestor,
127         HasARIAValueNow,
128         HasPopup,
129         HeadingLevel,
130         HelpText,
131         HierarchicalLevel,
132         HighestEditableAncestor,
133         HorizontalScrollBar,
134         IdentifierAttribute,
135         InvalidStatus,
136         IncrementButton,
137         IsAccessibilityIgnored,
138         IsActiveDescendantOfFocusedContainer,
139         IsAnonymousMathOperator,
140         IsARIAGrabbed,
141         IsARIATreeGridRow,
142         IsAttachment,
143         IsButton,
144         IsBusy,
145         IsChecked,
146         IsCollapsed,
147         IsControl,
148         IsEnabled,
149         IsExpanded,
150         IsFieldset,
151         IsFileUploadButton,
152         IsFocused,
153         IsGroup,
154         IsImage,
155         IsImageMapLink,
156         IsIncrementor,
157         IsIndeterminate,
158         IsInlineText,
159         IsInputImage,
160         IsInsideLiveRegion,
161         IsLink,
162         IsLinked,
163         IsList,
164         IsListBox,
165         IsLoaded,
166         IsHeading,
167         IsHovered,
168         IsMathElement,
169         IsMathFraction,
170         IsMathFenced,
171         IsMathSubscriptSuperscript,
172         IsMathRow,
173         IsMathUnderOver,
174         IsMathRoot,
175         IsMathSquareRoot,
176         IsMathText,
177         IsMathNumber,
178         IsMathOperator,
179         IsMathFenceOperator,
180         IsMathSeparatorOperator,
181         IsMathIdentifier,
182         IsMathTable,
183         IsMathTableRow,
184         IsMathTableCell,
185         IsMathMultiscript,
186         IsMathToken,
187         IsMathScriptObject,
188         IsMediaTimeline,
189         IsMenu,
190         IsMenuBar,
191         IsMenuButton,
192         IsMenuItem,
193         IsMenuList,
194         IsMenuListOption,
195         IsMenuListPopup,
196         IsMenuRelated,
197         IsMeter,
198         IsMultiSelectable,
199         IsOffScreen,
200         IsOnScreen,
201         IsOutput,
202         IsPasswordField,
203         IsPressed,
204         IsProgressIndicator,
205         IsRangeControl,
206         IsRequired,
207         IsScrollbar,
208         IsSearchField,
209         IsSelected,
210         IsSelectedOptionActive,
211         IsShowingValidationMessage,
212         IsSlider,
213         IsStyleFormatGroup,
214         IsTable,
215         IsTableCell,
216         IsTableColumn,
217         IsTableRow,
218         IsTextControl,
219         IsTree,
220         IsTreeItem,
221         IsUnvisited,
222         IsValueAutofilled,
223         IsValueAutofillAvailable,
224         IsVisible,
225         IsVisited,
226         KeyShortcutsValue,
227         Language,
228         LayoutCount,
229         LinkRelValue,
230         LinkedUIElements,
231         LiveRegionAtomic,
232         LiveRegionRelevant,
233         LiveRegionStatus,
234         MathFencedOpenString,
235         MathFencedCloseString,
236         MathLineThickness,
237         MathPrescripts,
238         MathPostscripts,
239         MathRadicandObject,
240         MathRootIndexObject,
241         MathUnderObject,
242         MathOverObject,
243         MathNumeratorObject,
244         MathDenominatorObject,
245         MathBaseObject,
246         MathSubscriptObject,
247         MathSuperscriptObject,
248         MaxValueForRange,
249         MinValueForRange,
250         Orientation,
251         PlaceholderValue,
252         PressedIsPresent,
253         PopupValue,
254         PosInSet,
255         PreventKeyboardDOMEventDispatch,
256         ReadOnlyValue,
257         RelativeFrame,
258         RoleValue,
259         RolePlatformString,
260         RoleDescription,
261         SelectedChildren,
262         SelectedRadioButton,
263         SelectedTabItem,
264         SessionID,
265         SetSize,
266         SortDirection,
267         SpeakAs,
268         SpeechHint,
269         SupportsARIADragging,
270         SupportsARIADropping,
271         SupportsARIAOwns,
272         SupportsCurrent,
273         SupportsDatetimeAttribute,
274         SupportsExpanded,
275         SupportsExpandedTextValue,
276         SupportsLiveRegion,
277         SupportsPath,
278         SupportsPosInSet,
279         SupportsPressAction,
280         SupportsRangeValue,
281         SupportsRequiredAttribute,
282         SupportsSetSize,
283         TabChildren,
284         TableLevel,
285         TagName,
286         TextLength,
287         Title,
288         TitleUIElement,
289         URL,
290         ValueAutofillButtonType,
291         ValueDescription,
292         ValueForRange,
293         ValidationMessage,
294         VerticalScrollBar,
295         VisibleChildren,
296     };
297     
298     typedef std::pair<AXID, AXID> AccessibilityIsolatedTreeMathMultiscriptPair;
299     struct AccessibilityIsolatedTreeText {
300         String text;
301         AccessibilityTextSource textSource;
302         Vector<AXID> textElements;
303     };
304     
305     using AttributeValueVariant = Variant<std::nullptr_t, String, bool, int, unsigned, double, float, uint64_t, Color, URL, LayoutRect, AXID, IntPoint, OptionSet<SpeakAs>, Vector<AccessibilityIsolatedTreeText>, Vector<AXID>, Vector<AccessibilityIsolatedTreeMathMultiscriptPair>, Vector<String>>;
306     void setProperty(AXPropertyName, AttributeValueVariant&&, bool shouldRemove = false);
307     void setObjectProperty(AXPropertyName, AXCoreObject*);
308     void setObjectVectorProperty(AXPropertyName, AccessibilityChildrenVector&);
309
310     bool boolAttributeValue(AXPropertyName) const;
311     const String stringAttributeValue(AXPropertyName) const;
312     int intAttributeValue(AXPropertyName) const;
313     unsigned unsignedAttributeValue(AXPropertyName) const;
314     double doubleAttributeValue(AXPropertyName) const;
315     float floatAttributeValue(AXPropertyName) const;
316     AXCoreObject* objectAttributeValue(AXPropertyName) const;
317     IntPoint intPointAttributeValue(AXPropertyName) const;
318     Color colorAttributeValue(AXPropertyName) const;
319     URL urlAttributeValue(AXPropertyName) const;
320     uint64_t uint64AttributeValue(AXPropertyName) const;
321     template<typename T> T rectAttributeValue(AXPropertyName) const;
322     template<typename T> Vector<T> vectorAttributeValue(AXPropertyName) const;
323     template<typename T> OptionSet<T> optionSetAttributeValue(AXPropertyName) const;
324
325     void fillChildrenVectorForProperty(AXPropertyName, AccessibilityChildrenVector&) const;
326     void setMathscripts(AXPropertyName, AXCoreObject&);
327     void insertMathPairs(Vector<AccessibilityIsolatedTreeMathMultiscriptPair>&, AccessibilityMathMultiscriptPairs&);
328     
329     // Attribute retrieval overrides.
330     bool isHeading() const override { return boolAttributeValue(AXPropertyName::IsHeading); }
331     bool isLink() const override { return boolAttributeValue(AXPropertyName::IsLink); }
332     bool isImage() const override { return boolAttributeValue(AXPropertyName::IsImage); }
333     bool isPasswordField() const override { return boolAttributeValue(AXPropertyName::IsPasswordField); }
334     bool isSearchField() const override { return boolAttributeValue(AXPropertyName::IsSearchField); }
335     bool isAttachment() const override { return boolAttributeValue(AXPropertyName::IsAttachment); }
336     bool isMediaTimeline() const override { return boolAttributeValue(AXPropertyName::IsMediaTimeline); }
337     bool isMenuRelated() const override { return boolAttributeValue(AXPropertyName::IsMenuRelated); }
338     bool isMenu() const override { return boolAttributeValue(AXPropertyName::IsMenu); }
339     bool isMenuBar() const override { return boolAttributeValue(AXPropertyName::IsMenuBar); }
340     bool isMenuButton() const override { return boolAttributeValue(AXPropertyName::IsMenuButton); }
341     bool isMenuItem() const override { return boolAttributeValue(AXPropertyName::IsMenuItem); }
342     bool isFileUploadButton() const override { return boolAttributeValue(AXPropertyName::IsFileUploadButton); }
343     bool isInputImage() const override { return boolAttributeValue(AXPropertyName::IsInputImage); }
344     bool isProgressIndicator() const override { return boolAttributeValue(AXPropertyName::IsProgressIndicator); }
345     bool isSlider() const override { return boolAttributeValue(AXPropertyName::IsSlider); }
346     bool isControl() const override { return boolAttributeValue(AXPropertyName::IsControl); }
347     bool isList() const override { return boolAttributeValue(AXPropertyName::IsList); }
348     bool isTable() const override { return boolAttributeValue(AXPropertyName::IsTable); }
349     bool isTableRow() const override { return boolAttributeValue(AXPropertyName::IsTableRow); }
350     bool isTableColumn() const override { return boolAttributeValue(AXPropertyName::IsTableColumn); }
351     bool isTableCell() const override { return boolAttributeValue(AXPropertyName::IsTableCell); }
352     bool isFieldset() const override { return boolAttributeValue(AXPropertyName::IsFieldset); }
353     bool isGroup() const override { return boolAttributeValue(AXPropertyName::IsGroup); }
354     bool isARIATreeGridRow() const override { return boolAttributeValue(AXPropertyName::IsARIATreeGridRow); }
355     bool isMenuList() const override { return boolAttributeValue(AXPropertyName::IsMenuList); }
356     bool isMenuListPopup() const override { return boolAttributeValue(AXPropertyName::IsMenuListPopup); }
357     bool isMenuListOption() const override { return boolAttributeValue(AXPropertyName::IsMenuListOption); }
358     bool isTextControl() const override { return boolAttributeValue(AXPropertyName::IsTextControl); }
359     bool isButton() const override { return boolAttributeValue(AXPropertyName::IsButton); }
360     bool isRangeControl() const override { return boolAttributeValue(AXPropertyName::IsRangeControl); }
361     bool isMeter() const override { return boolAttributeValue(AXPropertyName::IsMeter); }
362     bool isStyleFormatGroup() const override { return boolAttributeValue(AXPropertyName::IsStyleFormatGroup); }
363     bool isOutput() const override { return boolAttributeValue(AXPropertyName::IsOutput); }
364     bool isChecked() const override { return boolAttributeValue(AXPropertyName::IsChecked); }
365     bool isEnabled() const override { return boolAttributeValue(AXPropertyName::IsEnabled); }
366     bool isSelected() const override { return boolAttributeValue(AXPropertyName::IsSelected); }
367     bool isFocused() const override { return boolAttributeValue(AXPropertyName::IsFocused); }
368     bool isMultiSelectable() const override { return boolAttributeValue(AXPropertyName::IsMultiSelectable); }
369     bool isVisited() const override { return boolAttributeValue(AXPropertyName::IsVisited); }
370     bool isRequired() const override { return boolAttributeValue(AXPropertyName::IsRequired); }
371     bool supportsRequiredAttribute() const override { return boolAttributeValue(AXPropertyName::SupportsRequiredAttribute); }
372     bool isExpanded() const override { return boolAttributeValue(AXPropertyName::IsExpanded); }
373     FloatRect relativeFrame() const override { return rectAttributeValue<FloatRect>(AXPropertyName::RelativeFrame); }
374     bool supportsDatetimeAttribute() const override { return boolAttributeValue(AXPropertyName::SupportsDatetimeAttribute); }
375     String datetimeAttributeValue() const override { return stringAttributeValue(AXPropertyName::DatetimeAttributeValue); }
376     bool canSetFocusAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetFocusAttribute); }
377     bool canSetTextRangeAttributes() const override { return boolAttributeValue(AXPropertyName::CanSetTextRangeAttributes); }
378     bool canSetValueAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetValueAttribute); }
379     bool canSetNumericValue() const override { return boolAttributeValue(AXPropertyName::CanSetNumericValue); }
380     bool canSetSelectedAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetSelectedAttribute); }
381     bool canSetSelectedChildrenAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetSelectedChildrenAttribute); }
382     bool canSetExpandedAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetExpandedAttribute); }
383     bool accessibilityIsIgnored() const override { return boolAttributeValue(AXPropertyName::IsAccessibilityIgnored); }
384     bool isShowingValidationMessage() const override { return boolAttributeValue(AXPropertyName::IsShowingValidationMessage); }
385     String validationMessage() const override { return stringAttributeValue(AXPropertyName::ValidationMessage); }
386     unsigned blockquoteLevel() const override { return unsignedAttributeValue(AXPropertyName::BlockquoteLevel); }
387     int headingLevel() const override { return intAttributeValue(AXPropertyName::HeadingLevel); }
388     int tableLevel() const override { return intAttributeValue(AXPropertyName::TableLevel); }
389     AccessibilityButtonState checkboxOrRadioValue() const override { return static_cast<AccessibilityButtonState>(intAttributeValue(AXPropertyName::AccessibilityButtonState)); }
390     String valueDescription() const override { return stringAttributeValue(AXPropertyName::ValueDescription); }
391     float valueForRange() const override { return floatAttributeValue(AXPropertyName::ValueForRange); }
392     float maxValueForRange() const override { return floatAttributeValue(AXPropertyName::MaxValueForRange); }
393     float minValueForRange() const override { return floatAttributeValue(AXPropertyName::MinValueForRange); }
394     AXCoreObject* selectedRadioButton() override { return objectAttributeValue(AXPropertyName::SelectedRadioButton); }
395     AXCoreObject* selectedTabItem() override { return objectAttributeValue(AXPropertyName::SelectedTabItem); }
396     int layoutCount() const override { return intAttributeValue(AXPropertyName::LayoutCount); }
397     double estimatedLoadingProgress() const override { return doubleAttributeValue(AXPropertyName::EstimatedLoadingProgress); }
398     bool supportsARIAOwns() const override { return boolAttributeValue(AXPropertyName::SupportsARIAOwns); }
399     bool isActiveDescendantOfFocusedContainer() const override { return boolAttributeValue(AXPropertyName::IsActiveDescendantOfFocusedContainer); }
400     void ariaControlsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAControlsElements, children); }
401     void ariaDetailsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIADetailsElements, children); }
402     void ariaErrorMessageElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAErrorMessageElements, children); }
403     void ariaFlowToElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAFlowToElements, children); }
404     void ariaOwnsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAOwnsElements, children); }
405     bool hasPopup() const override { return boolAttributeValue(AXPropertyName::HasPopup); }
406     String popupValue() const override { return stringAttributeValue(AXPropertyName::PopupValue); }
407     bool pressedIsPresent() const override { return boolAttributeValue(AXPropertyName::PressedIsPresent); }
408     bool ariaIsMultiline() const override { return boolAttributeValue(AXPropertyName::ARIAIsMultiline); }
409     String invalidStatus() const override { return stringAttributeValue(AXPropertyName::InvalidStatus); }
410     bool supportsExpanded() const override { return boolAttributeValue(AXPropertyName::SupportsExpanded); }
411     AccessibilitySortDirection sortDirection() const override { return static_cast<AccessibilitySortDirection>(intAttributeValue(AXPropertyName::SortDirection)); }
412     bool canvasHasFallbackContent() const override { return boolAttributeValue(AXPropertyName::CanvasHasFallbackContent); }
413     bool supportsRangeValue() const override { return boolAttributeValue(AXPropertyName::SupportsRangeValue); }
414     String identifierAttribute() const override { return stringAttributeValue(AXPropertyName::IdentifierAttribute); }
415     String linkRelValue() const override { return stringAttributeValue(AXPropertyName::LinkRelValue); }
416     void classList(Vector<String>&) const override;
417     AccessibilityCurrentState currentState() const override { return static_cast<AccessibilityCurrentState>(intAttributeValue(AXPropertyName::CurrentState)); }
418     String currentValue() const override { return stringAttributeValue(AXPropertyName::CurrentValue); }
419     bool supportsCurrent() const override { return boolAttributeValue(AXPropertyName::SupportsCurrent); }
420     const String keyShortcutsValue() const override { return stringAttributeValue(AXPropertyName::KeyShortcutsValue); }
421     bool supportsSetSize() const override { return boolAttributeValue(AXPropertyName::SupportsSetSize); }
422     bool supportsPosInSet() const override { return boolAttributeValue(AXPropertyName::SupportsPosInSet); }
423     int setSize() const override { return intAttributeValue(AXPropertyName::SetSize); }
424     int posInSet() const override { return intAttributeValue(AXPropertyName::PosInSet); }
425     bool supportsARIADropping() const override { return boolAttributeValue(AXPropertyName::SupportsARIADropping); }
426     bool supportsARIADragging() const override { return boolAttributeValue(AXPropertyName::SupportsARIADragging); }
427     bool isARIAGrabbed() override { return boolAttributeValue(AXPropertyName::IsARIAGrabbed); }
428     Vector<String> determineARIADropEffects() override { return vectorAttributeValue<String>(AXPropertyName::ARIADropEffects); }
429     AXCoreObject* accessibilityHitTest(const IntPoint&) const override;
430     AXCoreObject* focusedUIElement() const override;
431     AXCoreObject* parentObject() const override { return parentObjectUnignored(); }
432     AXCoreObject* parentObjectUnignored() const override;
433     void linkedUIElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::LinkedUIElements, children); }
434     AXCoreObject* titleUIElement() const override { return objectAttributeValue(AXPropertyName::TitleUIElement); }
435     bool exposesTitleUIElement() const override { return boolAttributeValue(AXPropertyName::ExposesTitleUIElement); }
436     AXCoreObject* scrollBar(AccessibilityOrientation) override;
437     AccessibilityRole ariaRoleAttribute() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::ARIARoleAttribute)); }
438     String computedLabel() override { return stringAttributeValue(AXPropertyName::ComputedLabel); }
439     int textLength() const override { return intAttributeValue(AXPropertyName::TextLength); }
440     const String placeholderValue() const override { return stringAttributeValue(AXPropertyName::PlaceholderValue); }
441     String expandedTextValue() const override { return stringAttributeValue(AXPropertyName::ExpandedTextValue); }
442     bool supportsExpandedTextValue() const override { return boolAttributeValue(AXPropertyName::SupportsExpandedTextValue); }
443     void colorValue(int&, int&, int&) const override;
444     AccessibilityRole roleValue() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::RoleValue)); }
445     String rolePlatformString() const override { return stringAttributeValue(AXPropertyName::RolePlatformString); }
446     String roleDescription() const override { return stringAttributeValue(AXPropertyName::RoleDescription); }
447     String ariaLandmarkRoleDescription() const override { return stringAttributeValue(AXPropertyName::ARIALandmarkRoleDescription); }
448     bool supportsPressAction() const override { return boolAttributeValue(AXPropertyName::SupportsPressAction); }
449     LayoutRect boundingBoxRect() const override { return rectAttributeValue<LayoutRect>(AXPropertyName::BoundingBoxRect); }
450     LayoutRect elementRect() const override { return rectAttributeValue<LayoutRect>(AXPropertyName::ElementRect); }
451     IntPoint clickPoint() override { return intPointAttributeValue(AXPropertyName::ClickPoint); }
452     void accessibilityText(Vector<AccessibilityText>& texts) const override;
453     String computedRoleString() const override { return stringAttributeValue(AXPropertyName::ComputedRoleString); }
454     bool isValueAutofilled() const override { return boolAttributeValue(AXPropertyName::IsValueAutofilled); }
455     bool isValueAutofillAvailable() const override { return boolAttributeValue(AXPropertyName::IsValueAutofillAvailable); }
456     AutoFillButtonType valueAutofillButtonType() const override { return static_cast<AutoFillButtonType>(intAttributeValue(AXPropertyName::ValueAutofillButtonType)); }
457     void ariaTreeRows(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::ARIATreeRows, children); }
458     void ariaTreeItemDisclosedRows(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::ARIATreeItemDisclosedRows, children); }
459     void ariaTreeItemContent(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::ARIATreeItemContent, children); }
460     URL url() const override { return urlAttributeValue(AXPropertyName::URL); }
461     String accessKey() const override { return stringAttributeValue(AXPropertyName::AccessKey); }
462     String actionVerb() const override { return stringAttributeValue(AXPropertyName::ActionVerb); }
463     String readOnlyValue() const override { return stringAttributeValue(AXPropertyName::ReadOnlyValue); }
464     String autoCompleteValue() const override { return stringAttributeValue(AXPropertyName::AutoCompleteValue); }
465     OptionSet<SpeakAs> speakAsProperty() const override { return optionSetAttributeValue<SpeakAs>(AXPropertyName::SpeakAs); }
466     bool isMathElement() const override { return boolAttributeValue(AXPropertyName::IsMathElement); }
467     bool isMathFraction() const override { return boolAttributeValue(AXPropertyName::IsMathFraction); }
468     bool isMathFenced() const override { return boolAttributeValue(AXPropertyName::IsMathFenced); }
469     bool isMathSubscriptSuperscript() const override { return boolAttributeValue(AXPropertyName::IsMathSubscriptSuperscript); }
470     bool isMathRow() const override { return boolAttributeValue(AXPropertyName::IsMathRow); }
471     bool isMathUnderOver() const override { return boolAttributeValue(AXPropertyName::IsMathUnderOver); }
472     bool isMathRoot() const override { return boolAttributeValue(AXPropertyName::IsMathRoot); }
473     bool isMathSquareRoot() const override { return boolAttributeValue(AXPropertyName::IsMathSquareRoot); }
474     bool isMathText() const override { return boolAttributeValue(AXPropertyName::IsMathText); }
475     bool isMathNumber() const override { return boolAttributeValue(AXPropertyName::IsMathNumber); }
476     bool isMathOperator() const override { return boolAttributeValue(AXPropertyName::IsMathOperator); }
477     bool isMathFenceOperator() const override { return boolAttributeValue(AXPropertyName::IsMathFenceOperator); }
478     bool isMathSeparatorOperator() const override { return boolAttributeValue(AXPropertyName::IsMathSeparatorOperator); }
479     bool isMathIdentifier() const override { return boolAttributeValue(AXPropertyName::IsMathIdentifier); }
480     bool isMathTable() const override { return boolAttributeValue(AXPropertyName::IsMathTable); }
481     bool isMathTableRow() const override { return boolAttributeValue(AXPropertyName::IsMathTableRow); }
482     bool isMathTableCell() const override { return boolAttributeValue(AXPropertyName::IsMathTableCell); }
483     bool isMathMultiscript() const override { return boolAttributeValue(AXPropertyName::IsMathMultiscript); }
484     bool isMathToken() const override { return boolAttributeValue(AXPropertyName::IsMathToken); }
485     AXCoreObject* mathRadicandObject() override { return objectAttributeValue(AXPropertyName::MathRadicandObject); }
486     AXCoreObject* mathRootIndexObject() override { return objectAttributeValue(AXPropertyName::MathRootIndexObject); }
487     AXCoreObject* mathUnderObject() override { return objectAttributeValue(AXPropertyName::MathUnderObject); }
488     AXCoreObject* mathOverObject() override { return objectAttributeValue(AXPropertyName::MathOverObject); }
489     AXCoreObject* mathNumeratorObject() override { return objectAttributeValue(AXPropertyName::MathNumeratorObject); }
490     AXCoreObject* mathDenominatorObject() override { return objectAttributeValue(AXPropertyName::MathDenominatorObject); }
491     AXCoreObject* mathBaseObject() override { return objectAttributeValue(AXPropertyName::MathBaseObject); }
492     AXCoreObject* mathSubscriptObject() override { return objectAttributeValue(AXPropertyName::MathSubscriptObject); }
493     AXCoreObject* mathSuperscriptObject() override { return objectAttributeValue(AXPropertyName::MathSuperscriptObject); }
494     String mathFencedOpenString() const override { return stringAttributeValue(AXPropertyName::MathFencedOpenString); }
495     String mathFencedCloseString() const override { return stringAttributeValue(AXPropertyName::MathFencedCloseString); }
496     int mathLineThickness() const override { return intAttributeValue(AXPropertyName::MathLineThickness); }
497     bool isAnonymousMathOperator() const override { return boolAttributeValue(AXPropertyName::IsAnonymousMathOperator); }
498     void mathPrescripts(AccessibilityMathMultiscriptPairs&) override;
499     void mathPostscripts(AccessibilityMathMultiscriptPairs&) override;
500     bool fileUploadButtonReturnsValueInTitle() const override { return boolAttributeValue(AXPropertyName::FileUploadButtonReturnsValueInTitle); }
501     String speechHintAttributeValue() const override { return stringAttributeValue(AXPropertyName::SpeechHint); }
502     String descriptionAttributeValue() const override { return stringAttributeValue(AXPropertyName::Description); }
503     String helpTextAttributeValue() const override { return stringAttributeValue(AXPropertyName::HelpText); }
504     String titleAttributeValue() const override { return stringAttributeValue(AXPropertyName::Title); }
505     bool caretBrowsingEnabled() const override { return boolAttributeValue(AXPropertyName::CaretBrowsingEnabled); }
506     AXCoreObject* focusableAncestor() override { return objectAttributeValue(AXPropertyName::FocusableAncestor); }
507     AXCoreObject* editableAncestor() override { return objectAttributeValue(AXPropertyName::EditableAncestor); }
508     AXCoreObject* highestEditableAncestor() override { return objectAttributeValue(AXPropertyName::HighestEditableAncestor); }
509     AccessibilityOrientation orientation() const override { return static_cast<AccessibilityOrientation>(intAttributeValue(AXPropertyName::Orientation)); }
510     unsigned hierarchicalLevel() const override { return unsignedAttributeValue(AXPropertyName::HierarchicalLevel); }
511     String language() const override { return stringAttributeValue(AXPropertyName::Language); }
512     bool canHaveSelectedChildren() const override { return boolAttributeValue(AXPropertyName::CanHaveSelectedChildren); }
513     void selectedChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::SelectedChildren, children); }
514     void visibleChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::VisibleChildren, children); }
515     void tabChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::TabChildren, children); }
516     bool hasARIAValueNow() const override { return boolAttributeValue(AXPropertyName::HasARIAValueNow); }
517     String tagName() const override { return stringAttributeValue(AXPropertyName::TagName); }
518     const AccessibilityChildrenVector& children(bool updateChildrenIfNeeded = true) override;
519     void updateChildrenIfNecessary() override { }
520     bool isDetachedFromParent() override;
521     bool supportsLiveRegion(bool = true) const override { return boolAttributeValue(AXPropertyName::SupportsLiveRegion); }
522     bool isInsideLiveRegion(bool = true) const override { return boolAttributeValue(AXPropertyName::IsInsideLiveRegion); }
523     const String liveRegionStatus() const override { return stringAttributeValue(AXPropertyName::LiveRegionStatus); }
524     const String liveRegionRelevant() const override { return stringAttributeValue(AXPropertyName::LiveRegionRelevant); }
525     bool liveRegionAtomic() const override { return boolAttributeValue(AXPropertyName::LiveRegionAtomic); }
526     bool isBusy() const override { return boolAttributeValue(AXPropertyName::IsBusy); }
527     bool isInlineText() const override { return boolAttributeValue(AXPropertyName::IsInlineText); }
528     // Spin button support.
529     AXCoreObject* incrementButton() override { return objectAttributeValue(AXPropertyName::IncrementButton); }
530     AXCoreObject* decrementButton() override { return objectAttributeValue(AXPropertyName::DecrementButton); }
531     bool isIncrementor() const override { return boolAttributeValue(AXPropertyName::IsIncrementor); }
532
533     // Parameterized attribute retrieval.
534     Vector<RefPtr<Range>> findTextRanges(AccessibilitySearchTextCriteria const&) const override;
535     Vector<String> performTextOperation(AccessibilityTextOperation const&) override;
536     void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&) override;
537
538     // Attributes retrieved from the root node only so that the data isn't duplicated on each node.
539     uint64_t sessionID() const override;
540     String documentURI() const override;
541     String documentEncoding() const override;
542     bool preventKeyboardDOMEventDispatch() const override;
543
544     // TODO: Text ranges and selection.
545     PlainTextRange selectedTextRange() const override { return PlainTextRange(); }
546     unsigned selectionStart() const override { return 0; }
547     unsigned selectionEnd() const override { return 0; }
548     VisibleSelection selection() const override { return VisibleSelection(); }
549     String selectedText() const override { return String(); }
550     VisiblePositionRange visiblePositionRange() const override { return VisiblePositionRange(); }
551     VisiblePositionRange visiblePositionRangeForLine(unsigned) const override { return VisiblePositionRange(); }
552     RefPtr<Range> elementRange() const override { return nullptr; }
553     VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const override { return VisiblePositionRange(); }
554     VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const override { return VisiblePositionRange(); }
555     VisiblePositionRange positionOfRightWord(const VisiblePosition&) const override { return VisiblePositionRange(); }
556     VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); }
557     VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); }
558     VisiblePositionRange sentenceForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
559     VisiblePositionRange paragraphForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
560     VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
561     VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const override { return VisiblePositionRange(); }
562     VisiblePositionRange lineRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
563     RefPtr<Range> rangeForPlainTextRange(const PlainTextRange&) const override { return nullptr; }
564     String stringForRange(RefPtr<Range>) const override { return String(); }
565     IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const override { return IntRect(); }
566     IntRect boundsForRange(const RefPtr<Range>) const override { return IntRect(); }
567     int lengthForVisiblePositionRange(const VisiblePositionRange&) const override { return 0; }
568     void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override { }
569     VisiblePosition visiblePositionForBounds(const IntRect&, AccessibilityVisiblePositionForBounds) const override { return VisiblePosition(); }
570     VisiblePosition visiblePositionForPoint(const IntPoint&) const override { return VisiblePosition(); }
571     VisiblePosition nextVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); }
572     VisiblePosition previousVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); }
573     VisiblePosition nextWordEnd(const VisiblePosition&) const override { return VisiblePosition(); }
574     VisiblePosition previousWordStart(const VisiblePosition&) const override { return VisiblePosition(); }
575     VisiblePosition nextLineEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
576     VisiblePosition previousLineStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
577     VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
578     VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
579     VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
580     VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
581     VisiblePosition visiblePositionForIndex(unsigned, bool /*lastIndexOK */) const override { return VisiblePosition(); }
582     VisiblePosition visiblePositionForIndex(int) const override { return VisiblePosition(); }
583     int indexForVisiblePosition(const VisiblePosition&) const override { return 0; }
584     AXCoreObject* accessibilityObjectForPosition(const VisiblePosition&) const override { return nullptr; }
585     int lineForPosition(const VisiblePosition&) const override { return 0; }
586     PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const override { return PlainTextRange(); }
587     int index(const VisiblePosition&) const override { return 0; }
588     void lineBreaks(Vector<int>&) const override { }
589     PlainTextRange doAXRangeForLine(unsigned) const override { return PlainTextRange(); }
590     PlainTextRange doAXRangeForPosition(const IntPoint&) const override { return PlainTextRange(); }
591     PlainTextRange doAXRangeForIndex(unsigned) const override { return PlainTextRange(); }
592     PlainTextRange doAXStyleRangeForIndex(unsigned) const override { return PlainTextRange(); }
593     String doAXStringForRange(const PlainTextRange&) const override { return String(); }
594     IntRect doAXBoundsForRange(const PlainTextRange&) const override { return IntRect(); }
595     IntRect doAXBoundsForRangeUsingCharacterOffset(const PlainTextRange&) const override { return IntRect(); }
596     unsigned doAXLineForIndex(unsigned) override { return 0; }
597
598     // TODO: Attribute setters.
599     void setARIAGrabbed(bool) override { }
600     void setIsExpanded(bool) override { }
601     void setValue(float) override { }
602     void setSelected(bool) override { }
603     void setSelectedRows(AccessibilityChildrenVector&) override { }
604     void setFocused(bool) override { }
605     void setSelectedText(const String&) override { }
606     void setSelectedTextRange(const PlainTextRange&) override { }
607     void setValue(const String&) override { }
608     void setCaretBrowsingEnabled(bool) override { }
609     void setPreventKeyboardDOMEventDispatch(bool) override { }
610
611     // TODO: Functions
612     String textUnderElement(AccessibilityTextUnderElementMode = AccessibilityTextUnderElementMode()) const override { return String(); }
613     RefPtr<Range> getMisspellingRange(RefPtr<Range> const&, AccessibilitySearchDirection) const override { return nullptr; }
614     FloatRect convertFrameToSpace(const FloatRect&, AccessibilityConversionSpace) const override { return FloatRect(); }
615     void increment() override { }
616     void decrement() override { }
617     void scrollToMakeVisible() const override { }
618     void scrollToMakeVisibleWithSubFocus(const IntRect&) const override { }
619     void scrollToGlobalPoint(const IntPoint&) const override { }
620     bool replaceTextInRange(const String&, const PlainTextRange&) override;
621     bool insertText(const String&) override;
622     void makeRangeVisible(const PlainTextRange&) override { }
623     bool press() override;
624     bool performDefaultAction() override;
625
626     // Functions that should never be called on an isolated tree object. ASSERT that these are not reached;
627     bool isAccessibilityObject() const override;
628     bool isAccessibilityNodeObject() const override;
629     bool isAccessibilityRenderObject() const override;
630     bool isAccessibilityScrollbar() const override;
631     bool isAccessibilityScrollView() const override;
632     bool isAccessibilitySVGRoot() const override;
633     bool isAccessibilitySVGElement() const override;
634     bool containsText(String const&) const override;
635     bool isAttachmentElement() const override;
636     bool isNativeImage() const override;
637     bool isImageButton() const override;
638     bool isContainedByPasswordField() const override;
639     AXCoreObject* passwordFieldOrContainingPasswordField() override;
640     bool isNativeTextControl() const override;
641     bool isNativeListBox() const override;
642     bool isListBoxOption() const override;
643     bool isSliderThumb() const override;
644     bool isInputSlider() const override;
645     bool isLabel() const override;
646     bool isDataTable() const override;
647     bool isImageMapLink() const override;
648     bool isNativeSpinButton() const override;
649     bool isSpinButtonPart() const override;
650     bool isMockObject() const override;
651     bool isMediaObject() const override;
652     bool isARIATextControl() const override;
653     bool isNonNativeTextControl() const override;
654     bool isBlockquote() const override;
655     bool isLandmark() const override;
656     bool isFigureElement() const override;
657     bool isKeyboardFocusable() const override;
658     bool isHovered() const override;
659     bool isIndeterminate() const override;
660     bool isLoaded() const override { return boolAttributeValue(AXPropertyName::IsLoaded); }
661     bool isOnScreen() const override;
662     bool isOffScreen() const override;
663     bool isPressed() const override;
664     bool isUnvisited() const override;
665     bool isLinked() const override;
666     bool isVisible() const override;
667     bool isCollapsed() const override;
668     bool isSelectedOptionActive() const override;
669     bool hasBoldFont() const override;
670     bool hasItalicFont() const override;
671     bool hasMisspelling() const override;
672     bool hasPlainText() const override;
673     bool hasSameFont(RenderObject*) const override;
674     bool hasSameFontColor(RenderObject*) const override;
675     bool hasSameStyle(RenderObject*) const override;
676     bool isStaticText() const override;
677     bool hasUnderline() const override;
678     bool hasHighlighting() const override;
679     Element* element() const override;
680     Node* node() const override;
681     RenderObject* renderer() const override;
682     AccessibilityObjectInclusion defaultObjectInclusion() const override;
683     bool accessibilityIsIgnoredByDefault() const override;
684     float stepValueForRange() const override;
685     AXCoreObject* selectedListItem() override;
686     void ariaActiveDescendantReferencingElements(AccessibilityChildrenVector&) const override;
687     void ariaControlsReferencingElements(AccessibilityChildrenVector&) const override;
688     void ariaDescribedByElements(AccessibilityChildrenVector&) const override;
689     void ariaDescribedByReferencingElements(AccessibilityChildrenVector&) const override;
690     void ariaDetailsReferencingElements(AccessibilityChildrenVector&) const override;
691     void ariaErrorMessageReferencingElements(AccessibilityChildrenVector&) const override;
692     void ariaFlowToReferencingElements(AccessibilityChildrenVector&) const override;
693     void ariaLabelledByElements(AccessibilityChildrenVector&) const override;
694     void ariaLabelledByReferencingElements(AccessibilityChildrenVector&) const override;
695     void ariaOwnsReferencingElements(AccessibilityChildrenVector&) const override;
696     bool hasDatalist() const override;
697     bool supportsHasPopup() const override;
698     bool supportsPressed() const override;
699     bool supportsChecked() const override;
700     bool ignoredFromModalPresence() const override;
701     bool isModalDescendant(Node*) const override;
702     bool isModalNode() const override;
703     AXCoreObject* elementAccessibilityHitTest(const IntPoint&) const override;
704     AXCoreObject* firstChild() const override;
705     AXCoreObject* lastChild() const override;
706     AXCoreObject* previousSibling() const override;
707     AXCoreObject* nextSibling() const override;
708     AXCoreObject* nextSiblingUnignored(int limit) const override;
709     AXCoreObject* previousSiblingUnignored(int limit) const override;
710     AXCoreObject* parentObjectIfExists() const override;
711     bool isDescendantOfBarrenParent() const override;
712     bool isDescendantOfRole(AccessibilityRole) const override;
713     AXCoreObject* observableObject() const override;
714     AXCoreObject* correspondingLabelForControlElement() const override;
715     AXCoreObject* correspondingControlForLabelElement() const override;
716     bool isPresentationalChildOfAriaRole() const override;
717     bool ariaRoleHasPresentationalChildren() const override;
718     bool inheritsPresentationalRole() const override;
719     void setAccessibleName(const AtomString&) override;
720     bool hasAttributesRequiredForInclusion() const override;
721     String accessibilityDescription() const override;
722     String title() const override;
723     String helpText() const override;
724     bool isARIAStaticText() const override;
725     String stringValue() const override;
726     String text() const override;
727     String ariaLabeledByAttribute() const override;
728     String ariaDescribedByAttribute() const override;
729     bool accessibleNameDerivesFromContent() const override;
730     void elementsFromAttribute(Vector<Element*>&, const QualifiedName&) const override;
731     AXObjectCache* axObjectCache() const override;
732     Element* anchorElement() const override;
733     Element* actionElement() const override;
734     Path elementPath() const override;
735     bool supportsPath() const override { return boolAttributeValue(AXPropertyName::SupportsPath); }
736     TextIteratorBehavior textIteratorBehaviorForTextRange() const override;
737     Widget* widget() const override;
738     Widget* widgetForAttachmentView() const override;
739     Page* page() const override;
740     Document* document() const override;
741     FrameView* documentFrameView() const override;
742     Frame* frame() const override;
743     Frame* mainFrame() const override;
744     Document* topDocument() const override;
745     ScrollView* scrollViewAncestor() const override;
746     void childrenChanged() override;
747     void textChanged() override;
748     void updateAccessibilityRole() override;
749     void addChildren() override;
750     void addChild(AXCoreObject*) override;
751     void insertChild(AXCoreObject*, unsigned) override;
752     bool shouldIgnoreAttributeRole() const override;
753     bool canHaveChildren() const override;
754     bool hasChildren() const override;
755     void setNeedsToUpdateChildren() override;
756     void setNeedsToUpdateSubtree() override;
757     void clearChildren() override;
758     bool needsToUpdateChildren() const override;
759     void detachFromParent() override;
760     bool shouldFocusActiveDescendant() const override;
761     AXCoreObject* activeDescendant() const override;
762     void handleActiveDescendantChanged() override;
763     void handleAriaExpandedChanged() override;
764     bool isDescendantOfObject(const AXCoreObject*) const override;
765     bool isAncestorOfObject(const AXCoreObject*) const override;
766     AXCoreObject* firstAnonymousBlockChild() const override;
767     bool hasAttribute(const QualifiedName&) const override;
768     const AtomString& getAttribute(const QualifiedName&) const override;
769     bool hasTagName(const QualifiedName&) const override;
770     String stringValueForMSAA() const override;
771     String stringRoleForMSAA() const override;
772     String nameForMSAA() const override;
773     String descriptionForMSAA() const override;
774     AccessibilityRole roleValueForMSAA() const override;
775     String passwordFieldValue() const override;
776     AXCoreObject* liveRegionAncestor(bool excludeIfOff = true) const override;
777     bool hasContentEditableAttributeSet() const override;
778     bool supportsReadOnly() const override;
779     bool supportsAutoComplete() const override;
780     bool supportsARIAAttributes() const override;
781     bool scrollByPage(ScrollByPageDirection) const override;
782     IntPoint scrollPosition() const override;
783     IntSize scrollContentsSize() const override;
784     IntRect scrollVisibleContentRect() const override;
785     void scrollToMakeVisible(const ScrollRectToVisibleOptions&) const override;
786     bool lastKnownIsIgnoredValue() override;
787     void setLastKnownIsIgnoredValue(bool) override;
788     void notifyIfIgnoredValueChanged() override;
789     bool isMathScriptObject(AccessibilityMathScriptObjectType) const override;
790     bool isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType) const override;
791     bool isAXHidden() const override;
792     bool isDOMHidden() const override;
793     bool isHidden() const override;
794     void overrideAttachmentParent(AXCoreObject* parent) override;
795     bool accessibilityIgnoreAttachment() const override;
796     AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const override;
797     bool hasApplePDFAnnotationAttribute() const override;
798     const AccessibilityScrollView* ancestorAccessibilityScrollView(bool includeSelf) const override;
799     void setIsIgnoredFromParentData(AccessibilityIsIgnoredFromParentData&) override;
800     void clearIsIgnoredFromParentData() override;
801     void setIsIgnoredFromParentDataForChild(AXCoreObject*) override;
802
803     void updateBackingStore() override;
804     void setWrapper(AccessibilityObjectWrapper* wrapper) override { m_wrapper = wrapper; }
805     
806     AXID m_parent { InvalidAXID };
807     AXID m_id { InvalidAXID };
808     bool m_initialized { false };
809     AXIsolatedTreeID m_treeIdentifier;
810     RefPtr<AXIsolatedTree> m_cachedTree;
811     Vector<AXID> m_childrenIDs;
812     Vector<RefPtr<AXCoreObject>> m_children;
813
814 #if PLATFORM(COCOA)
815     RetainPtr<WebAccessibilityObjectWrapper> m_wrapper;
816 #endif
817
818     HashMap<AXPropertyName, AttributeValueVariant, WTF::IntHash<AXPropertyName>, WTF::StrongEnumHashTraits<AXPropertyName>> m_attributeMap;
819 };
820
821 } // namespace WebCore
822
823 #endif // ENABLE((ACCESSIBILITY_ISOLATED_TREE))