a6f62b6b22e5a712acf27ad4a2d57e5612887f17
[WebKit-https.git] / Source / WebCore / accessibility / isolatedtree / AXIsolatedObject.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/ThreadSafeRefCounted.h>
39 #include <wtf/Variant.h>
40 #include <wtf/Vector.h>
41 #include <wtf/WeakPtr.h>
42
43 namespace WebCore {
44
45 class AXIsolatedTree;
46
47 class AXIsolatedObject final : public AXCoreObject {
48     friend class AXIsolatedTree;
49 public:
50     static Ref<AXIsolatedObject> create(AXCoreObject&, AXIsolatedTreeID, AXID parentID);
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     void attachPlatformWrapper(AccessibilityObjectWrapper*);
58     bool isDetached() const override;
59
60     void setParent(AXID);
61     void setChildrenIDs(Vector<AXID>&& childrenIDs)
62     {
63         // FIXME: The following ASSERT should be met but it is commented out at the
64         // moment because of <rdar://problem/63985646> After calling _AXUIElementUseSecondaryAXThread(true),
65         // still receives client request on main thread.
66         // ASSERT(axObjectCache()->canUseSecondaryAXThread() ? !isMainThread() : isMainThread());
67         m_childrenIDs = childrenIDs;
68     }
69
70 private:
71     void detachRemoteParts(AccessibilityDetachmentType) override;
72     void detachPlatformWrapper(AccessibilityDetachmentType) override;
73
74     AXID parent() const { return m_parentID; }
75
76     AXIsolatedTreeID treeIdentifier() const { return m_treeID; }
77     AXIsolatedTree* tree() const { return m_cachedTree.get(); }
78
79     AXIsolatedObject() = default;
80     AXIsolatedObject(AXCoreObject&, AXIsolatedTreeID, AXID parentID);
81     bool isAXIsolatedObjectInstance() const override { return true; }
82     void initializeAttributeData(AXCoreObject&, bool isRoot);
83     void initializePlatformProperties(const AXCoreObject&);
84     AXCoreObject* associatedAXObject() const
85     {
86         ASSERT(isMainThread());
87         return m_id != InvalidAXID ? axObjectCache()->objectFromAXID(m_id) : nullptr;
88     }
89
90     void setProperty(AXPropertyName, AXPropertyValueVariant&&, bool shouldRemove = false);
91     void setObjectProperty(AXPropertyName, AXCoreObject*);
92     void setObjectVectorProperty(AXPropertyName, const AccessibilityChildrenVector&);
93
94     // FIXME: consolidate all AttributeValue retrieval in a single template method.
95     bool boolAttributeValue(AXPropertyName) const;
96     String stringAttributeValue(AXPropertyName) const;
97     int intAttributeValue(AXPropertyName) const;
98     unsigned unsignedAttributeValue(AXPropertyName) const;
99     double doubleAttributeValue(AXPropertyName) const;
100     float floatAttributeValue(AXPropertyName) const;
101     AXCoreObject* objectAttributeValue(AXPropertyName) const;
102     IntPoint intPointAttributeValue(AXPropertyName) const;
103     Color colorAttributeValue(AXPropertyName) const;
104     URL urlAttributeValue(AXPropertyName) const;
105     uint64_t uint64AttributeValue(AXPropertyName) const;
106     Path pathAttributeValue(AXPropertyName) const;
107     template<typename T> T rectAttributeValue(AXPropertyName) const;
108     template<typename T> Vector<T> vectorAttributeValue(AXPropertyName) const;
109     template<typename T> OptionSet<T> optionSetAttributeValue(AXPropertyName) const;
110     template<typename T> std::pair<T, T> pairAttributeValue(AXPropertyName) const;
111     template<typename T> T propertyValue(AXPropertyName) const;
112
113     void fillChildrenVectorForProperty(AXPropertyName, AccessibilityChildrenVector&) const;
114     void setMathscripts(AXPropertyName, AXCoreObject&);
115     void insertMathPairs(Vector<std::pair<AXID, AXID>>&, AccessibilityMathMultiscriptPairs&);
116     template<typename U> void performFunctionOnMainThread(U&&);
117
118     // Attribute retrieval overrides.
119     bool isHeading() const override { return boolAttributeValue(AXPropertyName::IsHeading); }
120     bool isLandmark() const override { return boolAttributeValue(AXPropertyName::IsLandmark); }
121     bool isLink() const override { return boolAttributeValue(AXPropertyName::IsLink); }
122     bool isPasswordField() const override { return boolAttributeValue(AXPropertyName::IsPasswordField); }
123     bool isSearchField() const override { return boolAttributeValue(AXPropertyName::IsSearchField); }
124     bool isAttachment() const override { return boolAttributeValue(AXPropertyName::IsAttachment); }
125     bool isMediaTimeline() const override { return boolAttributeValue(AXPropertyName::IsMediaTimeline); }
126     bool isMenuRelated() const override { return boolAttributeValue(AXPropertyName::IsMenuRelated); }
127     bool isMenu() const override { return boolAttributeValue(AXPropertyName::IsMenu); }
128     bool isMenuBar() const override { return boolAttributeValue(AXPropertyName::IsMenuBar); }
129     bool isMenuButton() const override { return boolAttributeValue(AXPropertyName::IsMenuButton); }
130     bool isMenuItem() const override { return boolAttributeValue(AXPropertyName::IsMenuItem); }
131     bool isFileUploadButton() const override { return boolAttributeValue(AXPropertyName::IsFileUploadButton); }
132     bool isInputImage() const override { return boolAttributeValue(AXPropertyName::IsInputImage); }
133     bool isProgressIndicator() const override { return boolAttributeValue(AXPropertyName::IsProgressIndicator); }
134     bool isSlider() const override { return boolAttributeValue(AXPropertyName::IsSlider); }
135     bool isControl() const override { return boolAttributeValue(AXPropertyName::IsControl); }
136
137     bool isList() const override { return boolAttributeValue(AXPropertyName::IsList); }
138     bool isUnorderedList() const override { return boolAttributeValue(AXPropertyName::IsUnorderedList); }
139     bool isOrderedList() const override { return boolAttributeValue(AXPropertyName::IsOrderedList); }
140     bool isDescriptionList() const override { return boolAttributeValue(AXPropertyName::IsDescriptionList); }
141     bool isKeyboardFocusable() const override { return boolAttributeValue(AXPropertyName::IsKeyboardFocusable); }
142     
143     // Table support.
144     bool isTable() const override { return boolAttributeValue(AXPropertyName::IsTable); }
145     bool isExposable() const override { return boolAttributeValue(AXPropertyName::IsExposable); }
146     bool isDataTable() const override { return boolAttributeValue(AXPropertyName::IsDataTable); }
147     int tableLevel() const override { return intAttributeValue(AXPropertyName::TableLevel); }
148     bool supportsSelectedRows() const override { return boolAttributeValue(AXPropertyName::SupportsSelectedRows); }
149     AccessibilityChildrenVector columns() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::Columns)); }
150     AccessibilityChildrenVector rows() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::Rows)); }
151     unsigned columnCount() override { return unsignedAttributeValue(AXPropertyName::ColumnCount); }
152     unsigned rowCount() override { return unsignedAttributeValue(AXPropertyName::RowCount); }
153     AccessibilityChildrenVector cells() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::Cells)); }
154     AXCoreObject* cellForColumnAndRow(unsigned, unsigned) override;
155     AccessibilityChildrenVector columnHeaders() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::ColumnHeaders)); }
156     AccessibilityChildrenVector rowHeaders() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::RowHeaders)); }
157     AccessibilityChildrenVector visibleRows() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::VisibleRows)); }
158     AXCoreObject* headerContainer() override { return objectAttributeValue(AXPropertyName::HeaderContainer); }
159     int axColumnCount() const override { return intAttributeValue(AXPropertyName::AXColumnCount); }
160     int axRowCount() const override { return intAttributeValue(AXPropertyName::AXRowCount); }
161
162     // Table cell support.
163     bool isTableCell() const override { return boolAttributeValue(AXPropertyName::IsTableCell); }
164     // Returns the start location and row span of the cell.
165     std::pair<unsigned, unsigned> rowIndexRange() const override { return pairAttributeValue<unsigned>(AXPropertyName::RowIndexRange); }
166     // Returns the start location and column span of the cell.
167     std::pair<unsigned, unsigned> columnIndexRange() const override { return pairAttributeValue<unsigned>(AXPropertyName::ColumnIndexRange); }
168     bool isColumnHeaderCell() const override { return boolAttributeValue(AXPropertyName::IsColumnHeaderCell); }
169     bool isRowHeaderCell() const override { return boolAttributeValue(AXPropertyName::IsRowHeaderCell); }
170     int axColumnIndex() const override { return intAttributeValue(AXPropertyName::AXColumnIndex); }
171     int axRowIndex() const override { return intAttributeValue(AXPropertyName::AXRowIndex); }
172
173     // Table column support.
174     bool isTableColumn() const override { return boolAttributeValue(AXPropertyName::IsTableColumn); }
175     unsigned columnIndex() const override { return unsignedAttributeValue(AXPropertyName::ColumnIndex); }
176     AXCoreObject* columnHeader() override { return objectAttributeValue(AXPropertyName::ColumnHeader); }
177
178     // Table row support.
179     bool isTableRow() const override { return boolAttributeValue(AXPropertyName::IsTableRow); }
180     unsigned rowIndex() const override { return unsignedAttributeValue(AXPropertyName::RowIndex); }
181
182     // ARIA tree/grid row support.
183     bool isARIATreeGridRow() const override { return boolAttributeValue(AXPropertyName::IsARIATreeGridRow); }
184     AccessibilityChildrenVector disclosedRows() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::DisclosedRows)); }
185     AXCoreObject* disclosedByRow() const override { return objectAttributeValue(AXPropertyName::DisclosedByRow); }
186
187     bool isFieldset() const override { return boolAttributeValue(AXPropertyName::IsFieldset); }
188     bool isGroup() const override { return boolAttributeValue(AXPropertyName::IsGroup); }
189     bool isMenuList() const override { return boolAttributeValue(AXPropertyName::IsMenuList); }
190     bool isMenuListPopup() const override { return boolAttributeValue(AXPropertyName::IsMenuListPopup); }
191     bool isMenuListOption() const override { return boolAttributeValue(AXPropertyName::IsMenuListOption); }
192     bool isTextControl() const override { return boolAttributeValue(AXPropertyName::IsTextControl); }
193     bool isButton() const override { return boolAttributeValue(AXPropertyName::IsButton); }
194     bool isRangeControl() const override { return boolAttributeValue(AXPropertyName::IsRangeControl); }
195     bool isMeter() const override { return boolAttributeValue(AXPropertyName::IsMeter); }
196     bool isStyleFormatGroup() const override { return boolAttributeValue(AXPropertyName::IsStyleFormatGroup); }
197     bool isOutput() const override { return boolAttributeValue(AXPropertyName::IsOutput); }
198     bool isChecked() const override { return boolAttributeValue(AXPropertyName::IsChecked); }
199     bool isEnabled() const override { return boolAttributeValue(AXPropertyName::IsEnabled); }
200     bool isSelected() const override { return boolAttributeValue(AXPropertyName::IsSelected); }
201     bool isFocused() const override { return boolAttributeValue(AXPropertyName::IsFocused); }
202     bool isMultiSelectable() const override { return boolAttributeValue(AXPropertyName::IsMultiSelectable); }
203     bool isVisited() const override { return boolAttributeValue(AXPropertyName::IsVisited); }
204     bool isRequired() const override { return boolAttributeValue(AXPropertyName::IsRequired); }
205     bool supportsRequiredAttribute() const override { return boolAttributeValue(AXPropertyName::SupportsRequiredAttribute); }
206     bool isExpanded() const override { return boolAttributeValue(AXPropertyName::IsExpanded); }
207     FloatRect relativeFrame() const override;
208     bool supportsDatetimeAttribute() const override { return boolAttributeValue(AXPropertyName::SupportsDatetimeAttribute); }
209     String datetimeAttributeValue() const override { return stringAttributeValue(AXPropertyName::DatetimeAttributeValue); }
210     bool canSetFocusAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetFocusAttribute); }
211     bool canSetTextRangeAttributes() const override { return boolAttributeValue(AXPropertyName::CanSetTextRangeAttributes); }
212     bool canSetValueAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetValueAttribute); }
213     bool canSetNumericValue() const override { return boolAttributeValue(AXPropertyName::CanSetNumericValue); }
214     bool canSetSelectedAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetSelectedAttribute); }
215     bool canSetSelectedChildrenAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetSelectedChildrenAttribute); }
216     bool canSetExpandedAttribute() const override { return boolAttributeValue(AXPropertyName::CanSetExpandedAttribute); }
217     bool accessibilityIsIgnored() const override { return boolAttributeValue(AXPropertyName::IsAccessibilityIgnored); }
218     bool isShowingValidationMessage() const override { return boolAttributeValue(AXPropertyName::IsShowingValidationMessage); }
219     String validationMessage() const override { return stringAttributeValue(AXPropertyName::ValidationMessage); }
220     unsigned blockquoteLevel() const override { return unsignedAttributeValue(AXPropertyName::BlockquoteLevel); }
221     int headingLevel() const override { return intAttributeValue(AXPropertyName::HeadingLevel); }
222     AccessibilityButtonState checkboxOrRadioValue() const override { return static_cast<AccessibilityButtonState>(intAttributeValue(AXPropertyName::AccessibilityButtonState)); }
223     String valueDescription() const override { return stringAttributeValue(AXPropertyName::ValueDescription); }
224     float valueForRange() const override { return floatAttributeValue(AXPropertyName::ValueForRange); }
225     float maxValueForRange() const override { return floatAttributeValue(AXPropertyName::MaxValueForRange); }
226     float minValueForRange() const override { return floatAttributeValue(AXPropertyName::MinValueForRange); }
227     AXCoreObject* selectedRadioButton() override { return objectAttributeValue(AXPropertyName::SelectedRadioButton); }
228     AXCoreObject* selectedTabItem() override { return objectAttributeValue(AXPropertyName::SelectedTabItem); }
229     int layoutCount() const override { return intAttributeValue(AXPropertyName::LayoutCount); }
230     double estimatedLoadingProgress() const override { return doubleAttributeValue(AXPropertyName::EstimatedLoadingProgress); }
231     bool supportsARIAOwns() const override { return boolAttributeValue(AXPropertyName::SupportsARIAOwns); }
232     bool isActiveDescendantOfFocusedContainer() const override { return boolAttributeValue(AXPropertyName::IsActiveDescendantOfFocusedContainer); }
233     void ariaControlsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAControlsElements, children); }
234     void ariaDetailsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIADetailsElements, children); }
235     void ariaErrorMessageElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAErrorMessageElements, children); }
236     void ariaFlowToElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAFlowToElements, children); }
237     void ariaOwnsElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::ARIAOwnsElements, children); }
238     bool hasPopup() const override { return boolAttributeValue(AXPropertyName::HasPopup); }
239     String popupValue() const override { return stringAttributeValue(AXPropertyName::PopupValue); }
240     bool pressedIsPresent() const override { return boolAttributeValue(AXPropertyName::PressedIsPresent); }
241     bool ariaIsMultiline() const override { return boolAttributeValue(AXPropertyName::ARIAIsMultiline); }
242     String invalidStatus() const override { return stringAttributeValue(AXPropertyName::InvalidStatus); }
243     bool supportsExpanded() const override { return boolAttributeValue(AXPropertyName::SupportsExpanded); }
244     AccessibilitySortDirection sortDirection() const override { return static_cast<AccessibilitySortDirection>(intAttributeValue(AXPropertyName::SortDirection)); }
245     bool canvasHasFallbackContent() const override { return boolAttributeValue(AXPropertyName::CanvasHasFallbackContent); }
246     bool supportsRangeValue() const override { return boolAttributeValue(AXPropertyName::SupportsRangeValue); }
247     String identifierAttribute() const override { return stringAttributeValue(AXPropertyName::IdentifierAttribute); }
248     String linkRelValue() const override { return stringAttributeValue(AXPropertyName::LinkRelValue); }
249     void classList(Vector<String>&) const override;
250     AccessibilityCurrentState currentState() const override { return static_cast<AccessibilityCurrentState>(intAttributeValue(AXPropertyName::CurrentState)); }
251     String currentValue() const override { return stringAttributeValue(AXPropertyName::CurrentValue); }
252     bool supportsCurrent() const override { return boolAttributeValue(AXPropertyName::SupportsCurrent); }
253     const String keyShortcutsValue() const override { return stringAttributeValue(AXPropertyName::KeyShortcutsValue); }
254     bool supportsSetSize() const override { return boolAttributeValue(AXPropertyName::SupportsSetSize); }
255     bool supportsPosInSet() const override { return boolAttributeValue(AXPropertyName::SupportsPosInSet); }
256     int setSize() const override { return intAttributeValue(AXPropertyName::SetSize); }
257     int posInSet() const override { return intAttributeValue(AXPropertyName::PosInSet); }
258     bool supportsDropping() const override { return boolAttributeValue(AXPropertyName::SupportsDropping); }
259     bool supportsDragging() const override { return boolAttributeValue(AXPropertyName::SupportsDragging); }
260     bool isGrabbed() override { return boolAttributeValue(AXPropertyName::IsGrabbed); }
261     Vector<String> determineDropEffects() const override { return vectorAttributeValue<String>(AXPropertyName::DropEffects); }
262     AXCoreObject* accessibilityHitTest(const IntPoint&) const override;
263     AXCoreObject* focusedUIElement() const override;
264     AXCoreObject* parentObject() const override { return parentObjectUnignored(); }
265     AXCoreObject* parentObjectUnignored() const override;
266     void linkedUIElements(AccessibilityChildrenVector& children) const override { fillChildrenVectorForProperty(AXPropertyName::LinkedUIElements, children); }
267     AXCoreObject* titleUIElement() const override { return objectAttributeValue(AXPropertyName::TitleUIElement); }
268     bool exposesTitleUIElement() const override { return boolAttributeValue(AXPropertyName::ExposesTitleUIElement); }
269     AXCoreObject* scrollBar(AccessibilityOrientation) override;
270     AccessibilityRole ariaRoleAttribute() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::ARIARoleAttribute)); }
271     String computedLabel() override { return stringAttributeValue(AXPropertyName::ComputedLabel); }
272     int textLength() const override { return intAttributeValue(AXPropertyName::TextLength); }
273     const String placeholderValue() const override { return stringAttributeValue(AXPropertyName::PlaceholderValue); }
274     String expandedTextValue() const override { return stringAttributeValue(AXPropertyName::ExpandedTextValue); }
275     bool supportsExpandedTextValue() const override { return boolAttributeValue(AXPropertyName::SupportsExpandedTextValue); }
276     SRGBA<uint8_t> colorValue() const override;
277     AccessibilityRole roleValue() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::RoleValue)); }
278     String rolePlatformString() const override { return stringAttributeValue(AXPropertyName::RolePlatformString); }
279     String roleDescription() const override { return stringAttributeValue(AXPropertyName::RoleDescription); }
280     String ariaLandmarkRoleDescription() const override { return stringAttributeValue(AXPropertyName::ARIALandmarkRoleDescription); }
281     bool supportsPressAction() const override { return boolAttributeValue(AXPropertyName::SupportsPressAction); }
282     LayoutRect boundingBoxRect() const override { return rectAttributeValue<LayoutRect>(AXPropertyName::BoundingBoxRect); }
283     LayoutRect elementRect() const override { return rectAttributeValue<LayoutRect>(AXPropertyName::ElementRect); }
284     IntPoint clickPoint() override { return intPointAttributeValue(AXPropertyName::ClickPoint); }
285     void accessibilityText(Vector<AccessibilityText>& texts) const override;
286     String computedRoleString() const override { return stringAttributeValue(AXPropertyName::ComputedRoleString); }
287     bool isValueAutofilled() const override { return boolAttributeValue(AXPropertyName::IsValueAutofilled); }
288     bool isValueAutofillAvailable() const override { return boolAttributeValue(AXPropertyName::IsValueAutofillAvailable); }
289     AutoFillButtonType valueAutofillButtonType() const override { return static_cast<AutoFillButtonType>(intAttributeValue(AXPropertyName::ValueAutofillButtonType)); }
290     void ariaTreeRows(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::ARIATreeRows, children); }
291     void ariaTreeItemContent(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::ARIATreeItemContent, children); }
292     URL url() const override { return urlAttributeValue(AXPropertyName::URL); }
293     String accessKey() const override { return stringAttributeValue(AXPropertyName::AccessKey); }
294     String actionVerb() const override { return stringAttributeValue(AXPropertyName::ActionVerb); }
295     String readOnlyValue() const override { return stringAttributeValue(AXPropertyName::ReadOnlyValue); }
296     String autoCompleteValue() const override { return stringAttributeValue(AXPropertyName::AutoCompleteValue); }
297     OptionSet<SpeakAs> speakAsProperty() const override { return optionSetAttributeValue<SpeakAs>(AXPropertyName::SpeakAs); }
298     bool isMathElement() const override { return boolAttributeValue(AXPropertyName::IsMathElement); }
299     bool isMathFraction() const override { return boolAttributeValue(AXPropertyName::IsMathFraction); }
300     bool isMathFenced() const override { return boolAttributeValue(AXPropertyName::IsMathFenced); }
301     bool isMathSubscriptSuperscript() const override { return boolAttributeValue(AXPropertyName::IsMathSubscriptSuperscript); }
302     bool isMathRow() const override { return boolAttributeValue(AXPropertyName::IsMathRow); }
303     bool isMathUnderOver() const override { return boolAttributeValue(AXPropertyName::IsMathUnderOver); }
304     bool isMathRoot() const override { return boolAttributeValue(AXPropertyName::IsMathRoot); }
305     bool isMathSquareRoot() const override { return boolAttributeValue(AXPropertyName::IsMathSquareRoot); }
306     bool isMathText() const override { return boolAttributeValue(AXPropertyName::IsMathText); }
307     bool isMathNumber() const override { return boolAttributeValue(AXPropertyName::IsMathNumber); }
308     bool isMathOperator() const override { return boolAttributeValue(AXPropertyName::IsMathOperator); }
309     bool isMathFenceOperator() const override { return boolAttributeValue(AXPropertyName::IsMathFenceOperator); }
310     bool isMathSeparatorOperator() const override { return boolAttributeValue(AXPropertyName::IsMathSeparatorOperator); }
311     bool isMathIdentifier() const override { return boolAttributeValue(AXPropertyName::IsMathIdentifier); }
312     bool isMathTable() const override { return boolAttributeValue(AXPropertyName::IsMathTable); }
313     bool isMathTableRow() const override { return boolAttributeValue(AXPropertyName::IsMathTableRow); }
314     bool isMathTableCell() const override { return boolAttributeValue(AXPropertyName::IsMathTableCell); }
315     bool isMathMultiscript() const override { return boolAttributeValue(AXPropertyName::IsMathMultiscript); }
316     bool isMathToken() const override { return boolAttributeValue(AXPropertyName::IsMathToken); }
317     AXCoreObject* mathRadicandObject() override { return objectAttributeValue(AXPropertyName::MathRadicandObject); }
318     AXCoreObject* mathRootIndexObject() override { return objectAttributeValue(AXPropertyName::MathRootIndexObject); }
319     AXCoreObject* mathUnderObject() override { return objectAttributeValue(AXPropertyName::MathUnderObject); }
320     AXCoreObject* mathOverObject() override { return objectAttributeValue(AXPropertyName::MathOverObject); }
321     AXCoreObject* mathNumeratorObject() override { return objectAttributeValue(AXPropertyName::MathNumeratorObject); }
322     AXCoreObject* mathDenominatorObject() override { return objectAttributeValue(AXPropertyName::MathDenominatorObject); }
323     AXCoreObject* mathBaseObject() override { return objectAttributeValue(AXPropertyName::MathBaseObject); }
324     AXCoreObject* mathSubscriptObject() override { return objectAttributeValue(AXPropertyName::MathSubscriptObject); }
325     AXCoreObject* mathSuperscriptObject() override { return objectAttributeValue(AXPropertyName::MathSuperscriptObject); }
326     String mathFencedOpenString() const override { return stringAttributeValue(AXPropertyName::MathFencedOpenString); }
327     String mathFencedCloseString() const override { return stringAttributeValue(AXPropertyName::MathFencedCloseString); }
328     int mathLineThickness() const override { return intAttributeValue(AXPropertyName::MathLineThickness); }
329     bool isAnonymousMathOperator() const override { return boolAttributeValue(AXPropertyName::IsAnonymousMathOperator); }
330     void mathPrescripts(AccessibilityMathMultiscriptPairs&) override;
331     void mathPostscripts(AccessibilityMathMultiscriptPairs&) override;
332     bool fileUploadButtonReturnsValueInTitle() const override { return boolAttributeValue(AXPropertyName::FileUploadButtonReturnsValueInTitle); }
333     String speechHintAttributeValue() const override { return stringAttributeValue(AXPropertyName::SpeechHint); }
334     String descriptionAttributeValue() const override { return stringAttributeValue(AXPropertyName::Description); }
335     String helpTextAttributeValue() const override { return stringAttributeValue(AXPropertyName::HelpText); }
336     String titleAttributeValue() const override { return stringAttributeValue(AXPropertyName::TitleAttributeValue); }
337 #if PLATFORM(COCOA) && !PLATFORM(IOS_FAMILY)
338     bool caretBrowsingEnabled() const override { return boolAttributeValue(AXPropertyName::CaretBrowsingEnabled); }
339 #endif
340     AXCoreObject* focusableAncestor() override { return objectAttributeValue(AXPropertyName::FocusableAncestor); }
341     AXCoreObject* editableAncestor() override { return objectAttributeValue(AXPropertyName::EditableAncestor); }
342     AXCoreObject* highestEditableAncestor() override { return objectAttributeValue(AXPropertyName::HighestEditableAncestor); }
343     AccessibilityOrientation orientation() const override { return static_cast<AccessibilityOrientation>(intAttributeValue(AXPropertyName::Orientation)); }
344     unsigned hierarchicalLevel() const override { return unsignedAttributeValue(AXPropertyName::HierarchicalLevel); }
345     String language() const override { return stringAttributeValue(AXPropertyName::Language); }
346     bool canHaveSelectedChildren() const override { return boolAttributeValue(AXPropertyName::CanHaveSelectedChildren); }
347     void selectedChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::SelectedChildren, children); }
348     void visibleChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::VisibleChildren, children); }
349     void tabChildren(AccessibilityChildrenVector& children) override { fillChildrenVectorForProperty(AXPropertyName::TabChildren, children); }
350     bool hasARIAValueNow() const override { return boolAttributeValue(AXPropertyName::HasARIAValueNow); }
351     String tagName() const override { return stringAttributeValue(AXPropertyName::TagName); }
352     const AccessibilityChildrenVector& children(bool updateChildrenIfNeeded = true) override;
353     void updateChildrenIfNecessary() override { }
354     bool isDetachedFromParent() override;
355     bool supportsLiveRegion(bool = true) const override { return boolAttributeValue(AXPropertyName::SupportsLiveRegion); }
356     bool isInsideLiveRegion(bool = true) const override { return boolAttributeValue(AXPropertyName::IsInsideLiveRegion); }
357     const String liveRegionStatus() const override { return stringAttributeValue(AXPropertyName::LiveRegionStatus); }
358     const String liveRegionRelevant() const override { return stringAttributeValue(AXPropertyName::LiveRegionRelevant); }
359     bool liveRegionAtomic() const override { return boolAttributeValue(AXPropertyName::LiveRegionAtomic); }
360     bool isBusy() const override { return boolAttributeValue(AXPropertyName::IsBusy); }
361     bool isInlineText() const override { return boolAttributeValue(AXPropertyName::IsInlineText); }
362     // Spin button support.
363     AXCoreObject* incrementButton() override { return objectAttributeValue(AXPropertyName::IncrementButton); }
364     AXCoreObject* decrementButton() override { return objectAttributeValue(AXPropertyName::DecrementButton); }
365     bool isIncrementor() const override { return boolAttributeValue(AXPropertyName::IsIncrementor); }
366     AccessibilityChildrenVector documentLinks() override { return tree()->objectsForIDs(vectorAttributeValue<AXID>(AXPropertyName::DocumentLinks)); }
367
368     String stringValue() const override { return stringAttributeValue(AXPropertyName::StringValue); }
369
370     // Parameterized attribute retrieval.
371     Vector<SimpleRange> findTextRanges(const AccessibilitySearchTextCriteria&) const override;
372     Vector<String> performTextOperation(AccessibilityTextOperation const&) override;
373     void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&) override;
374
375     // Attributes retrieved from the root node only so that the data isn't duplicated on each node.
376     uint64_t sessionID() const override;
377     String documentURI() const override;
378     String documentEncoding() const override;
379     bool preventKeyboardDOMEventDispatch() const override;
380
381     PlainTextRange selectedTextRange() const override;
382     VisibleSelection selection() const override;
383     void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override;
384     // TODO: Text ranges and selection.
385     unsigned selectionStart() const override { return 0; }
386     unsigned selectionEnd() const override { return 0; }
387     String selectedText() const override { return String(); }
388     VisiblePositionRange visiblePositionRange() const override { return VisiblePositionRange(); }
389     VisiblePositionRange visiblePositionRangeForLine(unsigned) const override { return VisiblePositionRange(); }
390     Optional<SimpleRange> elementRange() const override { return WTF::nullopt; }
391     VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const override { return VisiblePositionRange(); }
392     VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const override { return VisiblePositionRange(); }
393     VisiblePositionRange positionOfRightWord(const VisiblePosition&) const override { return VisiblePositionRange(); }
394     VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); }
395     VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); }
396     VisiblePositionRange sentenceForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
397     VisiblePositionRange paragraphForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
398     VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
399     VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const override { return VisiblePositionRange(); }
400     VisiblePositionRange lineRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); }
401     Optional<SimpleRange> rangeForPlainTextRange(const PlainTextRange&) const override { return WTF::nullopt; }
402     String stringForRange(const SimpleRange&) const override;
403     IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const override { return IntRect(); }
404     IntRect boundsForRange(const SimpleRange&) const override { return IntRect(); }
405     int lengthForVisiblePositionRange(const VisiblePositionRange&) const override { return 0; }
406     VisiblePosition visiblePositionForBounds(const IntRect&, AccessibilityVisiblePositionForBounds) const override { return VisiblePosition(); }
407     VisiblePosition visiblePositionForPoint(const IntPoint&) const override { return VisiblePosition(); }
408     VisiblePosition nextVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); }
409     VisiblePosition previousVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); }
410     VisiblePosition nextWordEnd(const VisiblePosition&) const override { return VisiblePosition(); }
411     VisiblePosition previousWordStart(const VisiblePosition&) const override { return VisiblePosition(); }
412     VisiblePosition nextLineEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
413     VisiblePosition previousLineStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
414     VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
415     VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
416     VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const override { return VisiblePosition(); }
417     VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const override { return VisiblePosition(); }
418     VisiblePosition visiblePositionForIndex(unsigned, bool /*lastIndexOK */) const override { return VisiblePosition(); }
419     VisiblePosition visiblePositionForIndex(int) const override { return VisiblePosition(); }
420     int indexForVisiblePosition(const VisiblePosition&) const override { return 0; }
421     AXCoreObject* accessibilityObjectForPosition(const VisiblePosition&) const override { return nullptr; }
422     int lineForPosition(const VisiblePosition&) const override { return 0; }
423     PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const override { return PlainTextRange(); }
424     int index(const VisiblePosition&) const override { return 0; }
425     void lineBreaks(Vector<int>&) const override { }
426     PlainTextRange doAXRangeForLine(unsigned) const override { return PlainTextRange(); }
427     PlainTextRange doAXRangeForPosition(const IntPoint&) const override { return PlainTextRange(); }
428     PlainTextRange doAXRangeForIndex(unsigned) const override { return PlainTextRange(); }
429     PlainTextRange doAXStyleRangeForIndex(unsigned) const override { return PlainTextRange(); }
430     String doAXStringForRange(const PlainTextRange&) const override { return String(); }
431     IntRect doAXBoundsForRange(const PlainTextRange&) const override { return IntRect(); }
432     IntRect doAXBoundsForRangeUsingCharacterOffset(const PlainTextRange&) const override { return IntRect(); }
433     unsigned doAXLineForIndex(unsigned) override { return 0; }
434
435     // Attribute setters.
436     void setARIAGrabbed(bool) override;
437     void setIsExpanded(bool) override;
438     bool setValue(float) override;
439     void setSelected(bool) override;
440     void setSelectedRows(AccessibilityChildrenVector&) override;
441     void setFocused(bool) override;
442     void setSelectedText(const String&) override;
443     void setSelectedTextRange(const PlainTextRange&) override;
444     bool setValue(const String&) override;
445 #if PLATFORM(COCOA) && !PLATFORM(IOS_FAMILY)
446     void setCaretBrowsingEnabled(bool) override;
447 #endif
448     void setPreventKeyboardDOMEventDispatch(bool) override;
449
450     // TODO: Functions
451     String textUnderElement(AccessibilityTextUnderElementMode = AccessibilityTextUnderElementMode()) const override { return String(); }
452     Optional<SimpleRange> misspellingRange(const SimpleRange&, AccessibilitySearchDirection) const override { return WTF::nullopt; }
453     FloatRect convertFrameToSpace(const FloatRect&, AccessibilityConversionSpace) const override { return FloatRect(); }
454     void increment() override { }
455     void decrement() override { }
456     bool performDismissAction() override;
457     void scrollToMakeVisible() const override { }
458     void scrollToMakeVisibleWithSubFocus(const IntRect&) const override { }
459     void scrollToGlobalPoint(const IntPoint&) const override { }
460     bool replaceTextInRange(const String&, const PlainTextRange&) override;
461     bool insertText(const String&) override;
462     void makeRangeVisible(const PlainTextRange&) override { }
463     bool press() override;
464     bool performDefaultAction() override;
465
466     // Functions that should never be called on an isolated tree object. ASSERT that these are not reached;
467     bool isAccessibilityObject() const override;
468     bool isAccessibilityNodeObject() const override;
469     bool isAccessibilityRenderObject() const override;
470     bool isAccessibilityScrollbar() const override;
471     bool isAccessibilityScrollViewInstance() const override;
472     bool isAccessibilitySVGRoot() const override;
473     bool isAccessibilitySVGElement() const override;
474     bool isAccessibilityTableInstance() const override;
475     bool isAccessibilityTableColumnInstance() const override;
476     bool isAccessibilityProgressIndicatorInstance() const override;
477
478     bool isAttachmentElement() const override;
479     bool isNativeImage() const override;
480     bool isImageButton() const override;
481     bool isContainedByPasswordField() const override;
482     AXCoreObject* passwordFieldOrContainingPasswordField() override;
483     bool isNativeTextControl() const override;
484     bool isListBoxOption() const override;
485     bool isSliderThumb() const override;
486     bool isInputSlider() const override;
487     bool isLabel() const override;
488     bool isImageMapLink() const override;
489     bool isNativeSpinButton() const override;
490     bool isSpinButtonPart() const override;
491     bool isMockObject() const override;
492     bool isMediaObject() const override;
493     bool isARIATextControl() const override;
494     bool isNonNativeTextControl() const override;
495     bool isFigureElement() const override;
496     bool isHovered() const override;
497     bool isIndeterminate() const override;
498     bool isLoaded() const override { return boolAttributeValue(AXPropertyName::IsLoaded); }
499     bool isOnScreen() const override;
500     bool isOffScreen() const override;
501     bool isPressed() const override;
502     bool isUnvisited() const override { return boolAttributeValue(AXPropertyName::IsUnvisited); }
503     bool isLinked() const override;
504     bool isVisible() const override;
505     bool isCollapsed() const override;
506     bool isSelectedOptionActive() const override;
507     bool hasBoldFont() const override { return boolAttributeValue(AXPropertyName::HasBoldFont); }
508     bool hasItalicFont() const override { return boolAttributeValue(AXPropertyName::HasItalicFont); }
509     bool hasMisspelling() const override;
510     bool hasPlainText() const override { return boolAttributeValue(AXPropertyName::HasPlainText); }
511     bool hasSameFont(const AXCoreObject&) const override;
512     bool hasSameFontColor(const AXCoreObject&) const override;
513     bool hasSameStyle(const AXCoreObject&) const override;
514     bool hasUnderline() const override { return boolAttributeValue(AXPropertyName::HasUnderline); }
515     bool hasHighlighting() const override { return boolAttributeValue(AXPropertyName::HasHighlighting); }
516     Element* element() const override;
517     Node* node() const override;
518     RenderObject* renderer() const override;
519     AccessibilityObjectInclusion defaultObjectInclusion() const override;
520     bool accessibilityIsIgnoredByDefault() const override;
521     float stepValueForRange() const override;
522     AXCoreObject* selectedListItem() override;
523     void ariaActiveDescendantReferencingElements(AccessibilityChildrenVector&) const override;
524     void ariaControlsReferencingElements(AccessibilityChildrenVector&) const override;
525     void ariaDescribedByElements(AccessibilityChildrenVector&) const override;
526     void ariaDescribedByReferencingElements(AccessibilityChildrenVector&) const override;
527     void ariaDetailsReferencingElements(AccessibilityChildrenVector&) const override;
528     void ariaErrorMessageReferencingElements(AccessibilityChildrenVector&) const override;
529     void ariaFlowToReferencingElements(AccessibilityChildrenVector&) const override;
530     void ariaLabelledByElements(AccessibilityChildrenVector&) const override;
531     void ariaLabelledByReferencingElements(AccessibilityChildrenVector&) const override;
532     void ariaOwnsReferencingElements(AccessibilityChildrenVector&) const override;
533     bool hasDatalist() const override;
534     bool supportsHasPopup() const override;
535     bool supportsPressed() const override;
536     bool supportsChecked() const override;
537     bool supportsRowCountChange() const override { return boolAttributeValue(AXPropertyName::SupportsRowCountChange); }
538     bool ignoredFromModalPresence() const override;
539     bool isModalDescendant(Node*) const override;
540     bool isModalNode() const override;
541     AXCoreObject* elementAccessibilityHitTest(const IntPoint&) const override;
542     AXCoreObject* firstChild() const override;
543     AXCoreObject* lastChild() const override;
544     AXCoreObject* previousSibling() const override;
545     AXCoreObject* nextSibling() const override;
546     AXCoreObject* nextSiblingUnignored(int limit) const override;
547     AXCoreObject* previousSiblingUnignored(int limit) const override;
548     AXCoreObject* parentObjectIfExists() const override;
549     bool isDescendantOfBarrenParent() const override;
550     bool isDescendantOfRole(AccessibilityRole) const override;
551     AXCoreObject* observableObject() const override;
552     AXCoreObject* correspondingLabelForControlElement() const override;
553     AXCoreObject* correspondingControlForLabelElement() const override;
554     bool isPresentationalChildOfAriaRole() const override;
555     bool ariaRoleHasPresentationalChildren() const override;
556     bool inheritsPresentationalRole() const override;
557     void setAccessibleName(const AtomString&) override;
558     bool hasAttributesRequiredForInclusion() const override;
559     String accessibilityDescription() const override { return stringAttributeValue(AXPropertyName::AccessibilityDescription); }
560     String title() const override { return stringAttributeValue(AXPropertyName::Title); }
561     String helpText() const override;
562     bool isARIAStaticText() const override;
563     String text() const override;
564     String ariaLabeledByAttribute() const override;
565     String ariaDescribedByAttribute() const override;
566     bool accessibleNameDerivesFromContent() const override;
567     void elementsFromAttribute(Vector<Element*>&, const QualifiedName&) const override;
568     AXObjectCache* axObjectCache() const override;
569     Element* anchorElement() const override;
570     Element* actionElement() const override;
571     Path elementPath() const override { return pathAttributeValue(AXPropertyName::Path); };
572     bool supportsPath() const override { return boolAttributeValue(AXPropertyName::SupportsPath); }
573     TextIteratorBehavior textIteratorBehaviorForTextRange() const override;
574     Widget* widget() const override;
575     PlatformWidget platformWidget() const override;
576     
577     HashMap<String, AXEditingStyleValueVariant> resolvedEditingStyles() const override;
578 #if PLATFORM(COCOA)
579     RemoteAXObjectRef remoteParentObject() const override;
580 #endif
581     Widget* widgetForAttachmentView() const override;
582     Page* page() const override;
583     Document* document() const override;
584     FrameView* documentFrameView() const override;
585     Frame* frame() const override;
586     Frame* mainFrame() const override;
587     Document* topDocument() const override;
588     ScrollView* scrollView() const override;
589     ScrollView* scrollViewAncestor() const override;
590     void childrenChanged() override;
591     void textChanged() override;
592     void updateAccessibilityRole() override;
593     void addChildren() override;
594     void addChild(AXCoreObject*) override;
595     void insertChild(AXCoreObject*, unsigned) override;
596     bool shouldIgnoreAttributeRole() const override;
597     bool canHaveChildren() const override;
598     bool hasChildren() const override { return boolAttributeValue(AXPropertyName::HasChildren); }
599     void setNeedsToUpdateChildren() override;
600     void setNeedsToUpdateSubtree() override;
601     void clearChildren() override;
602     bool needsToUpdateChildren() const override;
603     void detachFromParent() override;
604     bool shouldFocusActiveDescendant() const override;
605     AXCoreObject* activeDescendant() const override;
606     void handleActiveDescendantChanged() override;
607     AXCoreObject* firstAnonymousBlockChild() const override;
608     bool hasAttribute(const QualifiedName&) const override;
609     const AtomString& getAttribute(const QualifiedName&) const override;
610     bool hasTagName(const QualifiedName&) const override;
611     String stringValueForMSAA() const override;
612     String stringRoleForMSAA() const override;
613     String nameForMSAA() const override;
614     String descriptionForMSAA() const override;
615     AccessibilityRole roleValueForMSAA() const override;
616     String passwordFieldValue() const override;
617     AXCoreObject* liveRegionAncestor(bool excludeIfOff = true) const override;
618     bool hasContentEditableAttributeSet() const override;
619     bool supportsReadOnly() const override;
620     bool supportsAutoComplete() const override;
621     bool supportsARIAAttributes() const override;
622     bool scrollByPage(ScrollByPageDirection) const override;
623     IntPoint scrollPosition() const override;
624     IntSize scrollContentsSize() const override;
625     IntRect scrollVisibleContentRect() const override;
626     void scrollToMakeVisible(const ScrollRectToVisibleOptions&) const override;
627     bool lastKnownIsIgnoredValue() override;
628     void setLastKnownIsIgnoredValue(bool) override;
629     void notifyIfIgnoredValueChanged() override;
630     bool isMathScriptObject(AccessibilityMathScriptObjectType) const override;
631     bool isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType) const override;
632     bool isAXHidden() const override;
633     bool isDOMHidden() const override;
634     bool isHidden() const override;
635     void overrideAttachmentParent(AXCoreObject* parent) override;
636     bool accessibilityIgnoreAttachment() const override;
637     AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const override;
638     bool hasApplePDFAnnotationAttribute() const override { return boolAttributeValue(AXPropertyName::HasApplePDFAnnotationAttribute); }
639     const AccessibilityScrollView* ancestorAccessibilityScrollView(bool includeSelf) const override;
640     AXCoreObject* webAreaObject() const override { return objectAttributeValue(AXPropertyName::WebArea); }
641     void setIsIgnoredFromParentData(AccessibilityIsIgnoredFromParentData&) override;
642     void clearIsIgnoredFromParentData() override;
643     void setIsIgnoredFromParentDataForChild(AXCoreObject*) override;
644
645     void updateBackingStore() override;
646
647     AXIsolatedTreeID m_treeID;
648     RefPtr<AXIsolatedTree> m_cachedTree;
649     AXID m_parentID { InvalidAXID };
650     AXID m_id { InvalidAXID };
651     Vector<AXID> m_childrenIDs;
652     Vector<RefPtr<AXCoreObject>> m_children;
653     AXPropertyMap m_propertyMap;
654
655 #if PLATFORM(COCOA)
656     RetainPtr<NSView> m_platformWidget;
657     RetainPtr<RemoteAXObjectRef> m_remoteParent;
658 #else
659     PlatformWidget m_platformWidget;
660 #endif
661 };
662
663 } // namespace WebCore
664
665 SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AXIsolatedObject, isAXIsolatedObjectInstance())
666
667 #endif // ENABLE((ACCESSIBILITY_ISOLATED_TREE))