15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008 Nuanti Ltd.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1.  Redistributions of source code must retain the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2.  Redistributions in binary form must reproduce the above copyright
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer in the
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     documentation and/or other materials provided with the distribution.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     its contributors may be used to endorse or promote products derived
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     from this software without specific prior written permission.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef AccessibilityObject_h
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AccessibilityObject_h
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/TextIterator.h"
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/VisiblePosition.h"
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/FloatQuad.h"
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/LayoutRect.h"
37591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Forward.h"
38591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/RefPtr.h"
39591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Vector.h"
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class AccessibilityObject;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class AXObjectCache;
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Element;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Frame;
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FrameView;
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLAnchorElement;
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLAreaElement;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class IntPoint;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class IntSize;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Node;
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Page;
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderObject;
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderListItem;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ScrollableArea;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class VisibleSelection;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Widget;
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef unsigned AXID;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AccessibilityRole {
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AnnotationRole = 1,
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationRole,
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationAlertRole,
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationAlertDialogRole,
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationDialogRole,
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationLogRole,
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationMarqueeRole,
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ApplicationStatusRole,
7153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    ApplicationTimerRole,
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    BrowserRole,
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    BusyIndicatorRole,
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ButtonRole,
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    CanvasRole,
7653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    CellRole,
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    CheckBoxRole,
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ColorWellRole,
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ColumnRole,
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ColumnHeaderRole,
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ComboBoxRole,
82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    DefinitionRole,
83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    DescriptionListTermRole,
84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    DescriptionListDetailRole,
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DirectoryRole,
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DisclosureTriangleRole,
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DivRole,
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DocumentRole,
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DocumentArticleRole,
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DocumentMathRole,
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DocumentNoteRole,
9253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    DocumentRegionRole,
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DrawerRole,
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    EditableTextRole,
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    FooterRole,
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    FormRole,
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    GridRole,
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    GroupRole,
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    GrowAreaRole,
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HeadingRole,
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HelpTagRole,
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HorizontalRuleRole,
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IgnoredRole,
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ImageRole,
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ImageMapRole,
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ImageMapLinkRole,
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IncrementorRole,
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LabelRole,
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkApplicationRole,
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkBannerRole,
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkComplementaryRole,
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkContentInfoRole,
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkMainRole,
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkNavigationRole,
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LandmarkSearchRole,
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LegendRole,
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LinkRole,
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ListRole,
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ListBoxRole,
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ListBoxOptionRole,
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ListItemRole,
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ListMarkerRole,
123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    MathElementRole,
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MatteRole,
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuRole,
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuBarRole,
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuButtonRole,
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuItemRole,
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuListPopupRole,
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MenuListOptionRole,
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    OutlineRole,
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ParagraphRole,
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PopUpButtonRole,
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PresentationalRole,
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ProgressIndicatorRole,
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RadioButtonRole,
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RadioGroupRole,
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RowHeaderRole,
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RowRole,
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RulerRole,
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RulerMarkerRole,
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ScrollAreaRole,
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ScrollBarRole,
144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    SeamlessWebAreaRole,
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SheetRole,
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SliderRole,
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SliderThumbRole,
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SpinButtonRole,
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SpinButtonPartRole,
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SplitGroupRole,
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SplitterRole,
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    StaticTextRole,
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SystemWideRole,
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SVGRootRole,
1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TabGroupRole,
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TabListRole,
15753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    TabPanelRole,
1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TabRole,
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TableRole,
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TableHeaderContainerRole,
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TextAreaRole,
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TreeRole,
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TreeGridRole,
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TreeItemRole,
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TextFieldRole,
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ToggleButtonRole,
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ToolbarRole,
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    UnknownRole,
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    UserInterfaceTooltipRole,
17053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    ValueIndicatorRole,
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebAreaRole,
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebCoreLinkRole,
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WindowRole,
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AccessibilityTextSource {
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AlternativeText,
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ChildrenText,
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SummaryText,
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HelpText,
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    VisibleText,
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TitleTagText,
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PlaceholderText,
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LabelByElementText,
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
18653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct AccessibilityText {
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String text;
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityTextSource textSource;
1905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    RefPtr<AccessibilityObject> textElement;
19153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityText(const String& t, const AccessibilityTextSource& s)
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    : text(t)
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    , textSource(s)
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    { }
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityText(const String& t, const AccessibilityTextSource& s, const RefPtr<AccessibilityObject> element)
1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    : text(t)
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    , textSource(s)
2005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    , textElement(element)
2015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    { }
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
20353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AccessibilityOrientation {
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityOrientationVertical,
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityOrientationHorizontal,
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
20853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AccessibilityObjectInclusion {
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IncludeObject,
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IgnoreObject,
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DefaultBehavior,
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
21453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AccessibilityButtonState {
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ButtonStateOff = 0,
21753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    ButtonStateOn,
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ButtonStateMixed,
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
22053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct VisiblePositionRange {
2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    VisiblePosition start;
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    VisiblePosition end;
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    VisiblePositionRange() {}
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    VisiblePositionRange(const VisiblePosition& s, const VisiblePosition& e)
2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        : start(s)
2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        , end(e)
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    { }
2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isNull() const { return start.isNull() || end.isNull(); }
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct PlainTextRange {
23753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned start;
2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned length;
24053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PlainTextRange()
2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        : start(0)
2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        , length(0)
2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    { }
24553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PlainTextRange(unsigned s, unsigned l)
2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        : start(s)
2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        , length(l)
2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    { }
25053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isNull() const { return !start && !length; }
2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class AccessibilityObject : public RefCounted<AccessibilityObject> {
25553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)public:
25653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    typedef Vector<RefPtr<AccessibilityObject> > AccessibilityChildrenVector;
25753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected:
2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityObject();
26053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~AccessibilityObject();
263926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // After constructing an AccessibilityObject, it must be given a
265926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // unique ID, then added to AXObjectCache, and finally init() must
266926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // be called last.
267926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void setAXObjectID(AXID axObjectID) { m_id = axObjectID; }
268926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void init() { }
269926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
270926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // When the corresponding WebCore object that this AccessibilityObject
271926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // wraps is deleted, it must be detached.
2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void detach();
2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isDetached() const;
2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // The AXObjectCache that owns this object, and its unique ID within this cache.
2765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    AXObjectCache* axObjectCache() const;
27753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    AXID axObjectID() const { return m_id; }
27853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
27953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Lays out the page so that the accessibility tree is based on up-to-date information.
28053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    void updateBackingStore();
28153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
28253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Determine subclass type.
28353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isAccessibilityNodeObject() const { return false; }
2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAccessibilityRenderObject() const { return false; }
2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAccessibilityScrollbar() const { return false; }
2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAccessibilityScrollView() const { return false; }
2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAccessibilitySVGRoot() const { return false; }
2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Check object role or purpose.
29053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityRole roleValue() const { return m_role; }
2915267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isARIATextControl() const;
29253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isARIATreeGridRow() const { return false; }
29353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isAccessibilityTable() const { return false; }
2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAnchor() const { return false; }
2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isAttachment() const { return false; }
2965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isButton() const;
2975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isCanvas() const { return roleValue() == CanvasRole; }
2985267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isCheckbox() const { return roleValue() == CheckBoxRole; }
2995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isCheckboxOrRadio() const { return isCheckbox() || isRadioButton(); }
3005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isColorWell() const { return roleValue() == ColorWellRole; }
3015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isComboBox() const { return roleValue() == ComboBoxRole; }
30253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isControl() const { return false; }
30353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isDataTable() const { return false; }
30453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isFieldset() const { return false; }
30553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isFileUploadButton() const { return false; }
3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isHeading() const { return false; }
3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isImage() const { return false; }
30853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isImageMapLink() const { return false; }
30953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isInputImage() const { return false; }
31053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isLink() const { return false; }
31153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isList() const { return false; }
3125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isListItem() const { return roleValue() == ListItemRole; }
3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isMenu() const { return false; }
3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isMenuButton() const { return false; }
3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isMenuList() const { return false; }
3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isMenuListOption() const { return false; }
31753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isMenuListPopup() const { return false; }
318521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    bool isMenuRelated() const;
31953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isMockObject() const { return false; }
320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual bool isNativeSpinButton() const { return false; }
321591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    virtual bool isNativeTextControl() const { return false; } // input or textarea
322591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    virtual bool isNonNativeTextControl() const { return false; } // contenteditable or role=textbox
32353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isPasswordField() const { return false; }
32453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isProgressIndicator() const { return false; }
3255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isRadioButton() const { return roleValue() == RadioButtonRole; }
3265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isScrollbar() const { return roleValue() == ScrollBarRole; }
3275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isSeamlessWebArea() const { return roleValue() == SeamlessWebAreaRole; }
32853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isSlider() const { return false; }
32953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isSpinButton() const { return roleValue() == SpinButtonRole; }
3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isSpinButtonPart() const { return false; }
3315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isTabItem() const { return roleValue() == TabRole; }
33253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isTableCell() const { return false; }
33353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isTableRow() const { return false; }
3345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isTextControl() const;
3355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isTree() const { return roleValue() == TreeRole; }
3365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isTreeItem() const { return roleValue() == TreeItemRole; }
3375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isWebArea() const { return roleValue() == WebAreaRole; }
33853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
33953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Check object state.
3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isChecked() const { return false; }
34153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isCollapsed() const { return false; }
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isEnabled() const { return false; }
3435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool isExpanded() const;
3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isFocused() const { return false; }
3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isHovered() const { return false; }
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isIndeterminate() const { return false; }
34753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isLinked() const { return false; }
3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isLoaded() const { return false; }
3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isMultiSelectable() const { return false; }
3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isOffScreen() const { return false; }
3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isPressed() const { return false; }
3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isReadOnly() const { return false; }
3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isRequired() const { return false; }
35453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isSelected() const { return false; }
35553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isSelectedOptionActive() const { return false; }
3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isVisible() const { return true; }
35753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isVisited() const { return false; }
3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Check whether certain properties can be modified.
36053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canSetFocusAttribute() const { return false; }
36153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canSetValueAttribute() const { return false; }
36253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canSetSelectedAttribute() const { return false; }
36353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canSetSelectedChildrenAttribute() const { return false; }
3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Whether objects are ignored, i.e. not included in the tree.
3665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool accessibilityIsIgnored() const;
3675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool accessibilityIsIgnoredByDefault() const;
36853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const;
369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual AccessibilityObjectInclusion defaultObjectInclusion() const;
3705267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool lastKnownIsIgnoredValue();
3715267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void setLastKnownIsIgnoredValue(bool);
37253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
37353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Properties of static elements.
37453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual const AtomicString& accessKey() const { return nullAtom; }
37553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canvasHasFallbackContent() const { return false; }
37653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool exposesTitleUIElement() const { return true; }
3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual int headingLevel() const { return 0; }
37853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // 1-based, to match the aria-level spec.
37953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual unsigned hierarchicalLevel() const { return 0; }
38053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityOrientation orientation() const;
3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual int tableLevel() const { return 0; }
38253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual String text() const { return String(); }
38353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual int textLength() const { return 0; }
38453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* titleUIElement() const { return 0; }
38553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual KURL url() const { return KURL(); }
38653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
38753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Properties of interactive elements.
3885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual String actionVerb() const;
3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual AccessibilityButtonState checkboxOrRadioValue() const;
39053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void colorValue(int& r, int& g, int& b) const { r = 0; g = 0; b = 0; }
3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual String valueDescription() const { return String(); }
3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual float valueForRange() const { return 0.0f; }
3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual float maxValueForRange() const { return 0.0f; }
3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual float minValueForRange() const { return 0.0f; }
3955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    const AtomicString& placeholderValue() const;
39653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void selectedChildren(AccessibilityChildrenVector&) { }
39753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual String stringValue() const { return String(); }
39853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
39953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // ARIA attributes.
40053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* activeDescendant() const { return 0; }
40153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual String ariaDescribedByAttribute() const { return String(); }
4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void ariaFlowToElements(AccessibilityChildrenVector&) const { }
4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool ariaHasPopup() const { return false; }
4045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool ariaIsMultiline() const;
40553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual String ariaLabeledByAttribute() const { return String(); }
4065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool ariaPressedIsPresent() const;
40753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityRole ariaRoleAttribute() const { return UnknownRole; }
40853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool ariaRoleHasPresentationalChildren() const { return false; }
4095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    const AtomicString& invalidStatus() const;
4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isARIAGrabbed() { return false; }
41153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isPresentationalChildOfAriaRole() const { return false; }
41253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool shouldFocusActiveDescendant() const { return false; }
4135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool supportsARIAAttributes() const;
41453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool supportsARIADragging() const { return false; }
41553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool supportsARIADropping() const { return false; }
41653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool supportsARIAFlowTo() const { return false; }
41753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool supportsARIAOwns() const { return false; }
4185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool supportsRangeValue() const;
4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // ARIA trees.
42153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Used by an ARIA tree to get all its rows.
42253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    void ariaTreeRows(AccessibilityChildrenVector&);
4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // ARIA live-region features.
42553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    bool supportsARIALiveRegion() const;
42653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual const AtomicString& ariaLiveRegionStatus() const { return nullAtom; }
42753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom; }
42853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool ariaLiveRegionAtomic() const { return false; }
42953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool ariaLiveRegionBusy() const { return false; }
4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Accessibility Text.
4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void accessibilityText(Vector<AccessibilityText>&) { };
43353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual String textUnderElement() const { return String(); }
4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Accessibility Text - (To be deprecated).
4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual String accessibilityDescription() const { return String(); }
4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual String title() const { return String(); }
4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual String helpText() const { return String(); }
4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44081a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)    // Location and click point in frame-relative coordinates.
441f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    virtual LayoutRect elementRect() const { return m_explicitElementRect; }
442f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    void setElementRect(LayoutRect r) { m_explicitElementRect = r; }
44381a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)    virtual void markCachedElementRectDirty() const;
4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual IntPoint clickPoint();
44553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
44653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Hit testing.
44753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Called on the root AX object to return the deepest available element.
44853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const { return 0; }
44953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Called on the AX object after the render tree determines which is the right AccessibilityRenderObject.
45053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
45153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
45253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // High-level accessibility tree access. Other modules should only use these functions.
45353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    const AccessibilityChildrenVector& children();
45453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* parentObject() const = 0;
4555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    AccessibilityObject* parentObjectUnignored() const;
45653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* parentObjectIfExists() const { return 0; }
45753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
45853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Low-level accessibility tree exploration, only for use within the accessibility module.
45953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* firstChild() const { return 0; }
46053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* nextSibling() const { return 0; }
46153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    static AccessibilityObject* firstAccessibleObjectFromNode(const Node*);
46253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void addChildren() { }
46353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool canHaveChildren() const { return true; }
4645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool hasChildren() const { return m_haveChildren; }
46553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void updateChildrenIfNecessary();
46653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void setNeedsToUpdateChildren() { }
46753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void clearChildren();
46853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void detachFromParent() { }
46953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* observableObject() const { return 0; }
47053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual AccessibilityObject* scrollBar(AccessibilityOrientation) { return 0; }
47153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
47253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Properties of the object's owning document or page.
47353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual double estimatedLoadingProgress() const { return 0; }
4745267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    AccessibilityObject* focusedUIElement() const;
47553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
47653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // DOM and Render tree access.
47753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual Node* node() const { return 0; }
47853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual RenderObject* renderer() const { return 0; }
47953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual Document* document() const;
48053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual FrameView* documentFrameView() const;
48153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual Element* anchorElement() const { return 0; }
48253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual Element* actionElement() const { return 0; }
48353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual Widget* widgetForAttachmentView() const { return 0; }
48453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    Page* page() const;
48553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    String language() const;
48653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    bool hasAttribute(const QualifiedName&) const;
48753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    const AtomicString& getAttribute(const QualifiedName&) const;
48853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
48953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Selected text.
4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TextIteratorBehavior textIteratorBehaviorForTextRange() const;
4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); }
4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned selectionStart() const { return selectedTextRange().start; }
4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned selectionEnd() const { return selectedTextRange().length; }
4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual String selectedText() const { return String(); }
49553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
49653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Modify or take an action on an object.
49753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void increment() { }
49853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void decrement() { }
4995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool performDefaultAction() const { return press(); }
50053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool press() const;
50153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Make this object visible by scrolling as many nested scrollable views as needed.
5025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void scrollToMakeVisible() const;
50353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Same, but if the whole object can't be made visible, try for this subrect, in local coordinates.
5045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void scrollToMakeVisibleWithSubFocus(const IntRect&) const;
50553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Scroll this object to a given point in global coordinates of the top-level window.
5065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void scrollToGlobalPoint(const IntPoint&) const;
5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void setFocused(bool) { }
50853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void setSelected(bool) { }
5095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void setSelectedText(const String&) { }
5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void setSelectedTextRange(const PlainTextRange&) { }
5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void setValue(const String&) { }
5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void setValue(float) { }
5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Notifications that this object may have changed.
5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void childrenChanged() { }
5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void handleActiveDescendantChanged() { }
5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void handleAriaExpandedChanged() { }
5185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void notifyIfIgnoredValueChanged();
519591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    virtual void selectionChanged();
52053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void textChanged() { }
52153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void updateAccessibilityRole() { }
5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Text metrics. Most of these should be deprecated, needs major cleanup.
5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual VisiblePositionRange visiblePositionRange() const { return VisiblePositionRange(); }
5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const { return IntRect(); }
5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual VisiblePosition visiblePositionForIndex(int) const { return VisiblePosition(); }
5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int lineForPosition(const VisiblePosition&) const;
5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual int index(const VisiblePosition&) const { return -1; }
5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void lineBreaks(Vector<int>&) const { }
53053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
53153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    // Static helper functions.
53253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    static bool isARIAControl(AccessibilityRole);
53353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    static bool isARIAInput(AccessibilityRole);
53453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    static AccessibilityRole ariaRoleToWebCoreRole(const String&);
53581a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)    static IntRect boundingBoxForQuads(RenderObject*, const Vector<FloatQuad>&);
5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected:
5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AXID m_id;
5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityChildrenVector m_children;
5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    mutable bool m_haveChildren;
5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AccessibilityRole m_role;
542926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    AccessibilityObjectInclusion m_lastKnownIsIgnoredValue;
543f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    LayoutRect m_explicitElementRect;
544926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
545926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual bool computeAccessibilityIsIgnored() const { return true; }
546926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // If this object itself scrolls, return its ScrollableArea.
5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ScrollableArea* getScrollableAreaIfScrollable() const { return 0; }
5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void scrollTo(const IntPoint&) const { }
5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    AccessibilityRole buttonRoleType() const;
552926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool ariaIsHidden() const;
553926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool allowsTextRanges() const { return isTextControl(); }
5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned getLengthForTextRange() const { return text().length(); }
5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_detached;
5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if !HAVE(ACCESSIBILITY)
5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)inline const AccessibilityObject::AccessibilityChildrenVector& AccessibilityObject::children() { return m_children; }
5625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)inline String AccessibilityObject::actionVerb() const { return emptyString(); }
5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)inline int AccessibilityObject::lineForPosition(const VisiblePosition&) const { return -1; }
5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)inline void AccessibilityObject::updateBackingStore() { }
5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif
5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // AccessibilityObject_h
570