18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
22fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Nuanti Ltd.
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     documentation and/or other materials provided with the distribution.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     its contributors may be used to endorse or promote products derived
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     from this software without specific prior written permission.
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef AccessibilityObject_h
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define AccessibilityObject_h
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "IntRect.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "VisiblePosition.h"
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "VisibleSelection.h"
36dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h>
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefPtr.h>
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h>
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC)
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RetainPtr.h>
42d0825bca7fe65beaee391d30da42e937db621564Steve Block#elif PLATFORM(WIN) && !OS(WINCE)
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "AccessibilityObjectWrapperWin.h"
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "COMPtr.h"
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#elif PLATFORM(CHROMIUM)
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "AccessibilityObjectWrapper.h"
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _NSRange NSRange;
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __OBJC__
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class AccessibilityObjectWrapper;
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSArray;
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSAttributedString;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSData;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSMutableAttributedString;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSString;
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSValue;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSView;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSArray;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSAttributedString;
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSData;
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSMutableAttributedString;
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSString;
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSValue;
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSView;
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(GTK)
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _AtkObject AtkObject;
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _AtkObject AccessibilityObjectWrapper;
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AccessibilityObjectWrapper;
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AXObjectCache;
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Element;
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame;
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass FrameView;
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HTMLAnchorElement;
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HTMLAreaElement;
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass IntPoint;
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass IntSize;
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Node;
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderObject;
88231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass RenderListItem;
898f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianclass VisibleSelection;
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Widget;
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
92231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocktypedef unsigned AXID;
93231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum AccessibilityRole {
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    UnknownRole = 1,
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ButtonRole,
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RadioButtonRole,
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CheckBoxRole,
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SliderRole,
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    TabGroupRole,
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    TextFieldRole,
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    StaticTextRole,
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    TextAreaRole,
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ScrollAreaRole,
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PopUpButtonRole,
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MenuButtonRole,
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    TableRole,
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ApplicationRole,
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    GroupRole,
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RadioGroupRole,
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ListRole,
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ScrollBarRole,
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ValueIndicatorRole,
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ImageRole,
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MenuBarRole,
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MenuRole,
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MenuItemRole,
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ColumnRole,
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RowRole,
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ToolbarRole,
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    BusyIndicatorRole,
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ProgressIndicatorRole,
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WindowRole,
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    DrawerRole,
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SystemWideRole,
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    OutlineRole,
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IncrementorRole,
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    BrowserRole,
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ComboBoxRole,
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SplitGroupRole,
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SplitterRole,
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ColorWellRole,
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    GrowAreaRole,
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SheetRole,
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HelpTagRole,
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MatteRole,
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RulerRole,
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RulerMarkerRole,
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    LinkRole,
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    DisclosureTriangleRole,
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    GridRole,
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CellRole,
1435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    ColumnHeaderRole,
1445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    RowHeaderRole,
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // AppKit includes SortButtonRole but it is misnamed and really a subrole of ButtonRole so we do not include it here.
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // WebCore-specific roles
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebCoreLinkRole,
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ImageMapLinkRole,
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ImageMapRole,
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ListMarkerRole,
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebAreaRole,
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HeadingRole,
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ListBoxRole,
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ListBoxOptionRole,
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    TableHeaderContainerRole,
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    DefinitionListTermRole,
1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    DefinitionListDefinitionRole,
1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    AnnotationRole,
160231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    SliderThumbRole,
161cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    IgnoredRole,
16206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    PresentationalRole,
163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    TabRole,
164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    TabListRole,
165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    TabPanelRole,
166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    TreeRole,
167d0825bca7fe65beaee391d30da42e937db621564Steve Block    TreeGridRole,
168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    TreeItemRole,
169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    DirectoryRole,
170d0825bca7fe65beaee391d30da42e937db621564Steve Block    EditableTextRole,
171d0825bca7fe65beaee391d30da42e937db621564Steve Block    ListItemRole,
172d0825bca7fe65beaee391d30da42e937db621564Steve Block    MenuListPopupRole,
173d0825bca7fe65beaee391d30da42e937db621564Steve Block    MenuListOptionRole,
1742bde8e466a4451c7319e3a072d118917957d6554Steve Block    ParagraphRole,
1752bde8e466a4451c7319e3a072d118917957d6554Steve Block    LabelRole,
1762bde8e466a4451c7319e3a072d118917957d6554Steve Block    DivRole,
1772bde8e466a4451c7319e3a072d118917957d6554Steve Block    FormRole,
178d0825bca7fe65beaee391d30da42e937db621564Steve Block
179231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // ARIA Grouping roles
180231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkApplicationRole,
181231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkBannerRole,
182231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkComplementaryRole,
183231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkContentInfoRole,
184231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkMainRole,
185231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkNavigationRole,
186231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LandmarkSearchRole,
187231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    ApplicationAlertRole,
189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    ApplicationAlertDialogRole,
190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    ApplicationDialogRole,
191231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ApplicationLogRole,
192231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ApplicationMarqueeRole,
193231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ApplicationStatusRole,
194231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ApplicationTimerRole,
195231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
196231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    DocumentRole,
197231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    DocumentArticleRole,
198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    DocumentMathRole,
199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    DocumentNoteRole,
200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    DocumentRegionRole,
201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
202231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    UserInterfaceTooltipRole
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochenum AccessibilityOrientation {
2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    AccessibilityOrientationVertical,
2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    AccessibilityOrientationHorizontal,
2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch};
2090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
210dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockenum AccessibilityObjectInclusion {
211cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    IncludeObject,
212cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    IgnoreObject,
213cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    DefaultBehavior,
214cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block};
2150617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
2160617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenenum AccessibilityButtonState {
2170617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ButtonStateOff = 0,
2180617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ButtonStateOn,
2190617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ButtonStateMixed,
2200617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen};
2212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
2222fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockenum AccessibilitySortDirection {
2232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    SortDirectionNone,
2242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    SortDirectionAscending,
2252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    SortDirectionDescending,
2262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block};
227cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct VisiblePositionRange {
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition start;
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition end;
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange() {}
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange(const VisiblePosition& s, const VisiblePosition& e)
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        : start(s)
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        , end(e)
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    { }
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool isNull() const { return start.isNull() || end.isNull(); }
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct PlainTextRange {
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    unsigned start;
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    unsigned length;
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PlainTextRange()
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        : start(0)
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        , length(0)
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    { }
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PlainTextRange(unsigned s, unsigned l)
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        : start(s)
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        , length(l)
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    { }
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isNull() const { return !start && !length; }
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AccessibilityObject : public RefCounted<AccessibilityObject> {
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected:
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityObject();
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual ~AccessibilityObject();
2660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void detach();
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    typedef Vector<RefPtr<AccessibilityObject> > AccessibilityChildrenVector;
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isAccessibilityRenderObject() const { return false; }
27128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    virtual bool isAccessibilityScrollbar() const { return false; }
272cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual bool isAccessibilityScrollView() const { return false; }
273cad810f21b803229eb11403f9209855525a25d57Steve Block
274643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isAnchor() const { return false; }
275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isAttachment() const { return false; }
276643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isHeading() const { return false; }
277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isLink() const { return false; }
278643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isImage() const { return false; }
279643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isNativeImage() const { return false; }
280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isImageButton() const { return false; }
281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isPasswordField() const { return false; }
282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isNativeTextControl() const { return false; }
283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isWebArea() const { return false; }
284967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    virtual bool isCheckbox() const { return roleValue() == CheckBoxRole; }
285967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    virtual bool isRadioButton() const { return roleValue() == RadioButtonRole; }
286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isListBox() const { return roleValue() == ListBoxRole; }
287231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual bool isMediaTimeline() const { return false; }
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isMenuRelated() const { return false; }
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isMenu() const { return false; }
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isMenuBar() const { return false; }
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isMenuButton() const { return false; }
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isMenuItem() const { return false; }
293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isFileUploadButton() const { return false; }
294635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool isInputImage() const { return false; }
295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isProgressIndicator() const { return false; }
296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isSlider() const { return false; }
297f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual bool isInputSlider() const { return false; }
298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isControl() const { return false; }
299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isList() const { return false; }
300e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual bool isAccessibilityTable() const { return false; }
301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isDataTable() const { return false; }
302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isTableRow() const { return false; }
303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isTableColumn() const { return false; }
304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isTableCell() const { return false; }
305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isFieldset() const { return false; }
306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isGroup() const { return false; }
307d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isARIATreeGridRow() const { return false; }
308d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isImageMapLink() const { return false; }
309d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isMenuList() const { return false; }
310d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isMenuListPopup() const { return false; }
311d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isMenuListOption() const { return false; }
312f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    bool isTextControl() const { return roleValue() == TextAreaRole || roleValue() == TextFieldRole; }
313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isTabList() const { return roleValue() == TabListRole; }
314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isTabItem() const { return roleValue() == TabRole; }
3150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool isRadioGroup() const { return roleValue() == RadioGroupRole; }
316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isComboBox() const { return roleValue() == ComboBoxRole; }
317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isTree() const { return roleValue() == TreeRole; }
318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isTreeItem() const { return roleValue() == TreeItemRole; }
319643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isScrollbar() const { return roleValue() == ScrollBarRole; }
320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool isButton() const { return roleValue() == ButtonRole; }
32106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    bool isListItem() const { return roleValue() == ListItemRole; }
322967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool isCheckboxOrRadio() const { return isCheckbox() || isRadioButton(); }
323cad810f21b803229eb11403f9209855525a25d57Steve Block    bool isScrollView() const { return roleValue() == ScrollAreaRole; }
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
325643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isChecked() const { return false; }
326643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isEnabled() const { return false; }
327643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isSelected() const { return false; }
328643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isFocused() const { return false; }
329643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isHovered() const { return false; }
330643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isIndeterminate() const { return false; }
331643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isLoaded() const { return false; }
332d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isMultiSelectable() const { return false; }
333643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isOffScreen() const { return false; }
334643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isPressed() const { return false; }
335643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isReadOnly() const { return false; }
336643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isVisited() const { return false; }
337643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isRequired() const { return false; }
338643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isLinked() const { return false; }
339cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual bool isExpanded() const;
340d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isVisible() const { return true; }
341d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isCollapsed() const { return false; }
342643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void setIsExpanded(bool) { }
343643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
344643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool canSetFocusAttribute() const { return false; }
345643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool canSetTextRangeAttributes() const { return false; }
346643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool canSetValueAttribute() const { return false; }
347cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual bool canSetNumericValue() const { return false; }
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool canSetSelectedAttribute() const { return false; }
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool canSetSelectedChildrenAttribute() const { return false; }
350643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool canSetExpandedAttribute() const { return false; }
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
352dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // A programmatic way to set a name on an AccessibleObject.
353dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void setAccessibleName(String&) { }
354dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
355967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    virtual Node* node() const { return 0; }
3562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual RenderObject* renderer() const { return 0; }
357643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool accessibilityIsIgnored() const  { return true; }
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual int headingLevel() const { return 0; }
3600617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    virtual AccessibilityButtonState checkboxOrRadioValue() const;
3610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String valueDescription() const { return String(); }
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual float valueForRange() const { return 0.0f; }
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual float maxValueForRange() const { return 0.0f; }
3645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    virtual float minValueForRange() const { return 0.0f; }
3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* selectedRadioButton() { return 0; }
366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual AccessibilityObject* selectedTabItem() { return 0; }
3670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual int layoutCount() const { return 0; }
368d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual double estimatedLoadingProgress() const { return 0; }
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static bool isARIAControl(AccessibilityRole);
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static bool isARIAInput(AccessibilityRole);
371643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool supportsARIAOwns() const { return false; }
372643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void ariaOwnsElements(AccessibilityChildrenVector&) const { }
373643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool supportsARIAFlowTo() const { return false; }
374643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void ariaFlowToElements(AccessibilityChildrenVector&) const { }
375dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool ariaHasPopup() const { return false; }
376f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    bool ariaIsMultiline() const;
377f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual const AtomicString& invalidStatus() const;
378cad810f21b803229eb11403f9209855525a25d57Steve Block    bool supportsARIAExpanded() const;
3792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    AccessibilitySortDirection sortDirection() const;
380cad810f21b803229eb11403f9209855525a25d57Steve Block
381643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // ARIA drag and drop
382dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool supportsARIADropping() const { return false; }
383dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual bool supportsARIADragging() const { return false; }
384643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isARIAGrabbed() { return false; }
385643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void setARIAGrabbed(bool) { }
386643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void determineARIADropEffects(Vector<String>&) { }
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
388f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // Called on the root AX object to return the deepest available element.
389f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const { return 0; }
390f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // Called on the AX object after the render tree determines which is the right AccessibilityRenderObject.
391cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
392f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
393cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual AccessibilityObject* focusedUIElement() const;
3940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
3950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* firstChild() const { return 0; }
3960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* lastChild() const { return 0; }
3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* previousSibling() const { return 0; }
3980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* nextSibling() const { return 0; }
3990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* parentObject() const = 0;
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual AccessibilityObject* parentObjectUnignored() const;
4010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* parentObjectIfExists() const { return 0; }
402231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    static AccessibilityObject* firstAccessibleObjectFromNode(const Node*);
4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
4040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* observableObject() const { return 0; }
4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void linkedUIElements(AccessibilityChildrenVector&) const { }
4060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityObject* titleUIElement() const { return 0; }
4075f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    virtual bool exposesTitleUIElement() const { return true; }
4082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual AccessibilityObject* correspondingLabelForControlElement() const { return 0; }
409231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; }
410cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual AccessibilityObject* scrollBar(AccessibilityOrientation) const { return 0; }
411cad810f21b803229eb11403f9209855525a25d57Steve Block
4120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityRole ariaRoleAttribute() const { return UnknownRole; }
4130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual bool isPresentationalChildOfAriaRole() const { return false; }
4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual bool ariaRoleHasPresentationalChildren() const { return false; }
4150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
4160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setRoleValue(AccessibilityRole role) { m_role = role; }
4170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityRole roleValue() const { return m_role; }
4180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String ariaLabeledByAttribute() const { return String(); }
4190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String ariaDescribedByAttribute() const { return String(); }
4200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String accessibilityDescription() const { return String(); }
4210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
422cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual AXObjectCache* axObjectCache() const;
423231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    AXID axObjectID() const { return m_id; }
424231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAXObjectID(AXID axObjectID) { m_id = axObjectID; }
4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    static AccessibilityObject* anchorElementForNode(Node*);
4270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual Element* anchorElement() const { return 0; }
4280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual Element* actionElement() const { return 0; }
4290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual IntRect boundingBoxRect() const { return IntRect(); }
4300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual IntRect elementRect() const = 0;
431cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual IntSize size() const { return elementRect().size(); }
4320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual IntPoint clickPoint() const;
4330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
4340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); }
4350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    unsigned selectionStart() const { return selectedTextRange().start; }
4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    unsigned selectionEnd() const { return selectedTextRange().length; }
4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual KURL url() const { return KURL(); }
4390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisibleSelection selection() const { return VisibleSelection(); }
4400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String stringValue() const { return String(); }
4410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String title() const { return String(); }
4420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String helpText() const { return String(); }
4430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String textUnderElement() const { return String(); }
4440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String text() const { return String(); }
4450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual int textLength() const { return 0; }
4460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String selectedText() const { return String(); }
4470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual const AtomicString& accessKey() const { return nullAtom; }
4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const String& actionVerb() const;
4490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual Widget* widget() const { return 0; }
4500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual Widget* widgetForAttachmentView() const { return 0; }
4512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual Document* document() const;
4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual FrameView* topDocumentFrameView() const { return 0; }
4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual FrameView* documentFrameView() const;
454967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    String language() const;
455643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual unsigned hierarchicalLevel() const { return 0; }
456dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    const AtomicString& placeholderValue() const;
457643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
4580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setFocused(bool) { }
4590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setSelectedText(const String&) { }
4600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setSelectedTextRange(const PlainTextRange&) { }
4610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setValue(const String&) { }
462cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual void setValue(float) { }
4630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setSelected(bool) { }
464643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void setSelectedRows(AccessibilityChildrenVector&) { }
465643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
4660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void makeRangeVisible(const PlainTextRange&) { }
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool press() const;
4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool performDefaultAction() const { return press(); }
469643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
4700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual AccessibilityOrientation orientation() const;
471643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void increment() { }
472643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void decrement() { }
4730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
4740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void childrenChanged() { }
475d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual void contentChanged() { }
4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual const AccessibilityChildrenVector& children() { return m_children; }
4770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void addChildren() { }
4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool canHaveChildren() const { return true; }
4790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual bool hasChildren() const { return m_haveChildren; }
480cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual void updateChildrenIfNecessary();
4810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void selectedChildren(AccessibilityChildrenVector&) { }
4820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void visibleChildren(AccessibilityChildrenVector&) { }
483643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual void tabChildren(AccessibilityChildrenVector&) { }
4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool shouldFocusActiveDescendant() const { return false; }
4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual AccessibilityObject* activeDescendant() const { return 0; }
4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void handleActiveDescendantChanged() { }
48706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void handleAriaExpandedChanged() { }
48806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
489643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    static AccessibilityRole ariaRoleToWebCoreRole(const String&);
490967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    const AtomicString& getAttribute(const QualifiedName&) const;
491dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
4920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisiblePositionRange visiblePositionRange() const { return VisiblePositionRange(); }
4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const { return VisiblePositionRange(); }
4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const;
4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const;
4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange positionOfRightWord(const VisiblePosition&) const;
4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const;
4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const;
5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange sentenceForPosition(const VisiblePosition&) const;
5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange paragraphForPosition(const VisiblePosition&) const;
5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const;
5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const;
5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    String stringForVisiblePositionRange(const VisiblePositionRange&) const;
5060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const { return IntRect(); }
5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int lengthForVisiblePositionRange(const VisiblePositionRange&) const;
5080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void setSelectedVisiblePositionRange(const VisiblePositionRange&) const { }
5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const { return VisiblePosition(); }
5110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    VisiblePosition nextVisiblePosition(const VisiblePosition& visiblePos) const { return visiblePos.next(); }
5120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    VisiblePosition previousVisiblePosition(const VisiblePosition& visiblePos) const { return visiblePos.previous(); }
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition nextWordEnd(const VisiblePosition&) const;
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition previousWordStart(const VisiblePosition&) const;
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition nextLineEndPosition(const VisiblePosition&) const;
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition previousLineStartPosition(const VisiblePosition&) const;
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const;
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const;
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const;
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const;
5210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisiblePosition visiblePositionForIndex(unsigned, bool /*lastIndexOK */) const { return VisiblePosition(); }
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual VisiblePosition visiblePositionForIndex(int) const { return VisiblePosition(); }
5240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual int indexForVisiblePosition(const VisiblePosition&) const { return 0; }
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityObject* accessibilityObjectForPosition(const VisiblePosition&) const;
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int lineForPosition(const VisiblePosition&) const;
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const;
5290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual int index(const VisiblePosition&) const { return -1; }
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual PlainTextRange doAXRangeForLine(unsigned) const { return PlainTextRange(); }
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PlainTextRange doAXRangeForPosition(const IntPoint&) const;
5330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual PlainTextRange doAXRangeForIndex(unsigned) const { return PlainTextRange(); }
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PlainTextRange doAXStyleRangeForIndex(unsigned) const;
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual String doAXStringForRange(const PlainTextRange&) const { return String(); }
5370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual IntRect doAXBoundsForRange(const PlainTextRange&) const { return IntRect(); }
538231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    String listMarkerTextForNodeAndPosition(Node*, const VisiblePosition&) const;
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    unsigned doAXLineForIndex(unsigned);
5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
542643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String stringValueForMSAA() const { return String(); }
543643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String stringRoleForMSAA() const { return String(); }
544643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String nameForMSAA() const { return String(); }
545643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String descriptionForMSAA() const { return String(); }
546d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual AccessibilityRole roleValueForMSAA() const { return roleValue(); }
547d0825bca7fe65beaee391d30da42e937db621564Steve Block
548643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // Used by an ARIA tree to get all its rows.
549643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void ariaTreeRows(AccessibilityChildrenVector&);
550643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // Used by an ARIA tree item to get all of its direct rows that it can disclose.
551643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void ariaTreeItemDisclosedRows(AccessibilityChildrenVector&);
552643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // Used by an ARIA tree item to get only its content, and not its child tree items and groups.
553643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void ariaTreeItemContent(AccessibilityChildrenVector&);
554643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
555d0825bca7fe65beaee391d30da42e937db621564Steve Block    // ARIA live-region features.
556d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool supportsARIALiveRegion() const;
557d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool isInsideARIALiveRegion() const;
558d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual const AtomicString& ariaLiveRegionStatus() const { return nullAtom; }
559d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom; }
560d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool ariaLiveRegionAtomic() const { return false; }
561d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool ariaLiveRegionBusy() const { return false; }
562d0825bca7fe65beaee391d30da42e937db621564Steve Block
563dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    bool supportsARIAAttributes() const;
564dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
565a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    // CSS3 Speech properties.
566a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual ESpeak speakProperty() const { return SpeakNormal; }
567a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if HAVE(ACCESSIBILITY)
5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(GTK)
5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityObjectWrapper* wrapper() const;
5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setWrapper(AccessibilityObjectWrapper*);
5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityObjectWrapper* wrapper() const { return m_wrapper.get(); }
5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setWrapper(AccessibilityObjectWrapper* wrapper)
5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_wrapper = wrapper;
5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
581635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if HAVE(ACCESSIBILITY)
582dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // a platform-specific method for determining if an attachment is ignored
5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool accessibilityIgnoreAttachment() const;
584cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    // gives platforms the opportunity to indicate if and how an object should be included
585dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const;
586cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#else
587dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    bool accessibilityIgnoreAttachment() const { return true; }
588dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const { return DefaultBehavior; }
589cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#endif
590cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
591635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // allows for an AccessibilityObject to update its render tree or perform
592635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // other operations update type operations
5930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual void updateBackingStore() { }
5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected:
596231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    AXID m_id;
5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityChildrenVector m_children;
5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable bool m_haveChildren;
5990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    AccessibilityRole m_role;
6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void clearChildren();
6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isDetached() const { return true; }
603231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
604db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#if PLATFORM(GTK)
605db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    bool allowsTextRanges() const;
60668513a70bcd92384395513322f1b801e7bf9c729Steve Block    unsigned getLengthForTextRange() const;
607db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#else
608db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    bool allowsTextRanges() const { return isTextControl(); }
60968513a70bcd92384395513322f1b801e7bf9c729Steve Block    unsigned getLengthForTextRange() const { return text().length(); }
610db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#endif
611db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC)
6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RetainPtr<AccessibilityObjectWrapper> m_wrapper;
614d0825bca7fe65beaee391d30da42e937db621564Steve Block#elif PLATFORM(WIN) && !OS(WINCE)
6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    COMPtr<AccessibilityObjectWrapper> m_wrapper;
6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#elif PLATFORM(GTK)
6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AtkObject* m_wrapper;
6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#elif PLATFORM(CHROMIUM)
6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<AccessibilityObjectWrapper> m_wrapper;
6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // AccessibilityObject_h
626