2
* Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
3
* Copyright (C) 2008 Nuanti Ltd.
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
* 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15
* its contributors may be used to endorse or promote products derived
16
* from this software without specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
#ifndef AccessibilityObject_h
31
#define AccessibilityObject_h
33
#include "FloatQuad.h"
34
#include "LayoutRect.h"
35
#include "TextIterator.h"
36
#include "VisiblePosition.h"
37
#include "VisibleSelection.h"
38
#include <wtf/Forward.h>
39
#include <wtf/RefPtr.h>
40
#include <wtf/Vector.h>
43
#include <wtf/RetainPtr.h>
44
#elif PLATFORM(WIN) && !OS(WINCE)
45
#include "AccessibilityObjectWrapperWin.h"
51
typedef struct _NSRange NSRange;
54
OBJC_CLASS NSAttributedString;
56
OBJC_CLASS NSMutableAttributedString;
60
OBJC_CLASS WebAccessibilityObjectWrapper;
62
typedef WebAccessibilityObjectWrapper AccessibilityObjectWrapper;
64
#elif PLATFORM(GTK) || PLATFORM(EFL)
65
typedef struct _AtkObject AtkObject;
66
typedef struct _AtkObject AccessibilityObjectWrapper;
67
#elif PLATFORM(CHROMIUM)
68
// Chromium does not use a wrapper.
70
class AccessibilityObjectWrapper;
75
class AccessibilityObject;
80
class HTMLAnchorElement;
81
class HTMLAreaElement;
89
class VisibleSelection;
92
typedef unsigned AXID;
94
enum AccessibilityRole {
98
ApplicationAlertDialogRole,
99
ApplicationDialogRole,
101
ApplicationMarqueeRole,
102
ApplicationStatusRole,
103
ApplicationTimerRole,
114
DefinitionListTermRole,
115
DefinitionListDefinitionRole,
117
DisclosureTriangleRole,
140
LandmarkApplicationRole,
142
LandmarkComplementaryRole,
143
LandmarkContentInfoRole,
145
LandmarkNavigationRole,
166
ProgressIndicatorRole,
190
TableHeaderContainerRole,
199
UserInterfaceTooltipRole,
206
enum AccessibilityTextSource {
217
struct AccessibilityText {
219
AccessibilityTextSource textSource;
220
Vector<RefPtr<AccessibilityObject> > textElements;
222
AccessibilityText(const String& t, const AccessibilityTextSource& s)
227
AccessibilityText(const String& t, const AccessibilityTextSource& s, const Vector<RefPtr<AccessibilityObject> > elements)
230
, textElements(elements)
233
AccessibilityText(const String& t, const AccessibilityTextSource& s, const RefPtr<AccessibilityObject> element)
237
textElements.append(element);
241
enum AccessibilityOrientation {
242
AccessibilityOrientationVertical,
243
AccessibilityOrientationHorizontal,
246
enum AccessibilityObjectInclusion {
252
enum AccessibilityButtonState {
258
enum AccessibilitySortDirection {
260
SortDirectionAscending,
261
SortDirectionDescending,
264
enum AccessibilitySearchDirection {
265
SearchDirectionNext = 1,
266
SearchDirectionPrevious
269
enum AccessibilitySearchKey {
270
AnyTypeSearchKey = 1,
271
BlockquoteSameLevelSearchKey,
277
DifferentTypeSearchKey,
279
FontColorChangeSearchKey,
282
HeadingLevel1SearchKey,
283
HeadingLevel2SearchKey,
284
HeadingLevel3SearchKey,
285
HeadingLevel4SearchKey,
286
HeadingLevel5SearchKey,
287
HeadingLevel6SearchKey,
288
HeadingSameLevelSearchKey,
290
HighlightedSearchKey,
296
MisspelledWordSearchKey,
301
StyleChangeSearchKey,
302
TableSameLevelSearchKey,
306
UnvisitedLinkSearchKey,
310
struct AccessibilitySearchCriteria {
311
AccessibilityObject* startObject;
312
AccessibilitySearchDirection searchDirection;
313
AccessibilitySearchKey searchKey;
315
unsigned resultsLimit;
318
struct VisiblePositionRange {
320
VisiblePosition start;
323
VisiblePositionRange() {}
325
VisiblePositionRange(const VisiblePosition& s, const VisiblePosition& e)
330
bool isNull() const { return start.isNull() || end.isNull(); }
333
struct PlainTextRange {
343
PlainTextRange(unsigned s, unsigned l)
348
bool isNull() const { return !start && !length; }
351
class AccessibilityObject : public RefCounted<AccessibilityObject> {
353
AccessibilityObject();
356
virtual ~AccessibilityObject();
357
virtual void detach();
358
virtual bool isDetached() const;
360
typedef Vector<RefPtr<AccessibilityObject> > AccessibilityChildrenVector;
362
virtual bool isAccessibilityNodeObject() const { return false; }
363
virtual bool isAccessibilityRenderObject() const { return false; }
364
virtual bool isAccessibilityScrollbar() const { return false; }
365
virtual bool isAccessibilityScrollView() const { return false; }
366
virtual bool isAccessibilitySVGRoot() const { return false; }
368
bool accessibilityObjectContainsText(String *) const;
370
virtual bool isAnchor() const { return false; }
371
virtual bool isAttachment() const { return false; }
372
virtual bool isHeading() const { return false; }
373
virtual bool isLink() const { return false; }
374
virtual bool isImage() const { return false; }
375
virtual bool isNativeImage() const { return false; }
376
virtual bool isImageButton() const { return false; }
377
virtual bool isPasswordField() const { return false; }
378
virtual bool isNativeTextControl() const { return false; }
379
virtual bool isSearchField() const { return false; }
380
virtual bool isWebArea() const { return false; }
381
virtual bool isCheckbox() const { return roleValue() == CheckBoxRole; }
382
virtual bool isRadioButton() const { return roleValue() == RadioButtonRole; }
383
virtual bool isListBox() const { return roleValue() == ListBoxRole; }
384
virtual bool isMediaTimeline() const { return false; }
385
virtual bool isMenuRelated() const { return false; }
386
virtual bool isMenu() const { return false; }
387
virtual bool isMenuBar() const { return false; }
388
virtual bool isMenuButton() const { return false; }
389
virtual bool isMenuItem() const { return false; }
390
virtual bool isFileUploadButton() const { return false; }
391
virtual bool isInputImage() const { return false; }
392
virtual bool isProgressIndicator() const { return false; }
393
virtual bool isSlider() const { return false; }
394
virtual bool isInputSlider() const { return false; }
395
virtual bool isControl() const { return false; }
396
virtual bool isList() const { return false; }
397
virtual bool isAccessibilityTable() const { return false; }
398
virtual bool isDataTable() const { return false; }
399
virtual bool isTableRow() const { return false; }
400
virtual bool isTableColumn() const { return false; }
401
virtual bool isTableCell() const { return false; }
402
virtual bool isFieldset() const { return false; }
403
virtual bool isGroup() const { return false; }
404
virtual bool isARIATreeGridRow() const { return false; }
405
virtual bool isImageMapLink() const { return false; }
406
virtual bool isMenuList() const { return false; }
407
virtual bool isMenuListPopup() const { return false; }
408
virtual bool isMenuListOption() const { return false; }
409
virtual bool isSpinButton() const { return roleValue() == SpinButtonRole; }
410
virtual bool isSpinButtonPart() const { return false; }
411
virtual bool isMockObject() const { return false; }
412
virtual bool isMediaControlLabel() const { return false; }
413
bool isTextControl() const { return roleValue() == TextAreaRole || roleValue() == TextFieldRole; }
414
bool isARIATextControl() const;
415
bool isTabList() const { return roleValue() == TabListRole; }
416
bool isTabItem() const { return roleValue() == TabRole; }
417
bool isRadioGroup() const { return roleValue() == RadioGroupRole; }
418
bool isComboBox() const { return roleValue() == ComboBoxRole; }
419
bool isTree() const { return roleValue() == TreeRole; }
420
bool isTreeItem() const { return roleValue() == TreeItemRole; }
421
bool isScrollbar() const { return roleValue() == ScrollBarRole; }
422
bool isButton() const;
423
bool isListItem() const { return roleValue() == ListItemRole; }
424
bool isCheckboxOrRadio() const { return isCheckbox() || isRadioButton(); }
425
bool isScrollView() const { return roleValue() == ScrollAreaRole; }
426
bool isCanvas() const { return roleValue() == CanvasRole; }
427
bool isBlockquote() const;
428
bool isLandmark() const;
430
virtual bool isChecked() const { return false; }
431
virtual bool isEnabled() const { return false; }
432
virtual bool isSelected() const { return false; }
433
virtual bool isFocused() const { return false; }
434
virtual bool isHovered() const { return false; }
435
virtual bool isIndeterminate() const { return false; }
436
virtual bool isLoaded() const { return false; }
437
virtual bool isMultiSelectable() const { return false; }
438
virtual bool isOffScreen() const { return false; }
439
virtual bool isPressed() const { return false; }
440
virtual bool isReadOnly() const { return false; }
441
virtual bool isUnvisited() const { return false; }
442
virtual bool isVisited() const { return false; }
443
virtual bool isRequired() const { return false; }
444
virtual bool isLinked() const { return false; }
445
virtual bool isExpanded() const;
446
virtual bool isVisible() const { return true; }
447
virtual bool isCollapsed() const { return false; }
448
virtual void setIsExpanded(bool) { }
450
// In a multi-select list, many items can be selected but only one is active at a time.
451
virtual bool isSelectedOptionActive() const { return false; }
453
virtual bool hasBoldFont() const { return false; }
454
virtual bool hasItalicFont() const { return false; }
455
bool hasMisspelling() const;
456
virtual bool hasPlainText() const { return false; }
457
virtual bool hasSameFont(RenderObject*) const { return false; }
458
virtual bool hasSameFontColor(RenderObject*) const { return false; }
459
virtual bool hasSameStyle(RenderObject*) const { return false; }
460
bool hasStaticText() const { return roleValue() == StaticTextRole; }
461
virtual bool hasUnderline() const { return false; }
462
bool hasHighlighting() const;
464
virtual bool canSetFocusAttribute() const { return false; }
465
virtual bool canSetTextRangeAttributes() const { return false; }
466
virtual bool canSetValueAttribute() const { return false; }
467
virtual bool canSetNumericValue() const { return false; }
468
virtual bool canSetSelectedAttribute() const { return false; }
469
virtual bool canSetSelectedChildrenAttribute() const { return false; }
470
virtual bool canSetExpandedAttribute() const { return false; }
472
virtual Node* node() const { return 0; }
473
virtual RenderObject* renderer() const { return 0; }
474
virtual bool accessibilityIsIgnored() const { return true; }
476
int blockquoteLevel() const;
477
virtual int headingLevel() const { return 0; }
478
virtual int tableLevel() const { return 0; }
479
virtual AccessibilityButtonState checkboxOrRadioValue() const;
480
virtual String valueDescription() const { return String(); }
481
virtual float valueForRange() const { return 0.0f; }
482
virtual float maxValueForRange() const { return 0.0f; }
483
virtual float minValueForRange() const { return 0.0f; }
484
virtual float stepValueForRange() const { return 0.0f; }
485
virtual AccessibilityObject* selectedRadioButton() { return 0; }
486
virtual AccessibilityObject* selectedTabItem() { return 0; }
487
virtual int layoutCount() const { return 0; }
488
virtual double estimatedLoadingProgress() const { return 0; }
489
static bool isARIAControl(AccessibilityRole);
490
static bool isARIAInput(AccessibilityRole);
491
virtual bool supportsARIAOwns() const { return false; }
492
virtual void ariaOwnsElements(AccessibilityChildrenVector&) const { }
493
virtual bool supportsARIAFlowTo() const { return false; }
494
virtual void ariaFlowToElements(AccessibilityChildrenVector&) const { }
495
virtual bool ariaHasPopup() const { return false; }
496
virtual bool ariaPressedIsPresent() const;
497
bool ariaIsMultiline() const;
498
virtual const AtomicString& invalidStatus() const;
499
bool supportsARIAExpanded() const;
500
AccessibilitySortDirection sortDirection() const;
501
virtual bool canvasHasFallbackContent() const { return false; }
502
bool supportsRangeValue() const;
504
// ARIA drag and drop
505
virtual bool supportsARIADropping() const { return false; }
506
virtual bool supportsARIADragging() const { return false; }
507
virtual bool isARIAGrabbed() { return false; }
508
virtual void setARIAGrabbed(bool) { }
509
virtual void determineARIADropEffects(Vector<String>&) { }
511
// Called on the root AX object to return the deepest available element.
512
virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const { return 0; }
513
// Called on the AX object after the render tree determines which is the right AccessibilityRenderObject.
514
virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
516
virtual AccessibilityObject* focusedUIElement() const;
518
virtual AccessibilityObject* firstChild() const { return 0; }
519
virtual AccessibilityObject* lastChild() const { return 0; }
520
virtual AccessibilityObject* previousSibling() const { return 0; }
521
virtual AccessibilityObject* nextSibling() const { return 0; }
522
virtual AccessibilityObject* parentObject() const = 0;
523
virtual AccessibilityObject* parentObjectUnignored() const;
524
virtual AccessibilityObject* parentObjectIfExists() const { return 0; }
525
static AccessibilityObject* firstAccessibleObjectFromNode(const Node*);
526
void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&);
528
virtual AccessibilityObject* observableObject() const { return 0; }
529
virtual void linkedUIElements(AccessibilityChildrenVector&) const { }
530
virtual AccessibilityObject* titleUIElement() const { return 0; }
531
virtual bool exposesTitleUIElement() const { return true; }
532
virtual AccessibilityObject* correspondingLabelForControlElement() const { return 0; }
533
virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; }
534
virtual AccessibilityObject* scrollBar(AccessibilityOrientation) { return 0; }
536
virtual AccessibilityRole ariaRoleAttribute() const { return UnknownRole; }
537
virtual bool isPresentationalChildOfAriaRole() const { return false; }
538
virtual bool ariaRoleHasPresentationalChildren() const { return false; }
540
// Accessibility Text
541
virtual void accessibilityText(Vector<AccessibilityText>&) { };
543
// A programmatic way to set a name on an AccessibleObject.
544
virtual void setAccessibleName(const AtomicString&) { }
546
// Accessibility Text - (To be deprecated).
547
virtual String accessibilityDescription() const { return String(); }
548
virtual String title() const { return String(); }
549
virtual String helpText() const { return String(); }
551
// Methods for determining accessibility text.
552
virtual String stringValue() const { return String(); }
553
virtual String textUnderElement() const { return String(); }
554
virtual String text() const { return String(); }
555
virtual int textLength() const { return 0; }
556
virtual String ariaLabeledByAttribute() const { return String(); }
557
virtual String ariaDescribedByAttribute() const { return String(); }
558
const AtomicString& placeholderValue() const;
560
void setRoleValue(AccessibilityRole role) { m_role = role; }
561
virtual AccessibilityRole roleValue() const { return m_role; }
563
virtual AXObjectCache* axObjectCache() const;
564
AXID axObjectID() const { return m_id; }
565
void setAXObjectID(AXID axObjectID) { m_id = axObjectID; }
567
static AccessibilityObject* anchorElementForNode(Node*);
568
virtual Element* anchorElement() const { return 0; }
569
virtual Element* actionElement() const { return 0; }
570
virtual LayoutRect boundingBoxRect() const { return LayoutRect(); }
571
IntRect pixelSnappedBoundingBoxRect() const { return pixelSnappedIntRect(boundingBoxRect()); }
572
virtual LayoutRect elementRect() const = 0;
573
IntRect pixelSnappedElementRect() const { return pixelSnappedIntRect(elementRect()); }
574
LayoutSize size() const { return elementRect().size(); }
575
IntSize pixelSnappedSize() const { return elementRect().pixelSnappedSize(); }
576
virtual IntPoint clickPoint();
577
static IntRect boundingBoxForQuads(RenderObject*, const Vector<FloatQuad>&);
579
TextIteratorBehavior textIteratorBehaviorForTextRange() const;
580
virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); }
581
unsigned selectionStart() const { return selectedTextRange().start; }
582
unsigned selectionEnd() const { return selectedTextRange().length; }
584
virtual KURL url() const { return KURL(); }
585
virtual VisibleSelection selection() const { return VisibleSelection(); }
586
virtual String selectedText() const { return String(); }
587
virtual const AtomicString& accessKey() const { return nullAtom; }
588
const String& actionVerb() const;
589
virtual Widget* widget() const { return 0; }
590
virtual Widget* widgetForAttachmentView() const { return 0; }
592
virtual Document* document() const;
593
virtual FrameView* topDocumentFrameView() const { return 0; }
594
virtual FrameView* documentFrameView() const;
595
String language() const;
596
virtual unsigned hierarchicalLevel() const { return 0; }
598
virtual void setFocused(bool) { }
599
virtual void setSelectedText(const String&) { }
600
virtual void setSelectedTextRange(const PlainTextRange&) { }
601
virtual void setValue(const String&) { }
602
virtual void setValue(float) { }
603
virtual void setSelected(bool) { }
604
virtual void setSelectedRows(AccessibilityChildrenVector&) { }
606
virtual void makeRangeVisible(const PlainTextRange&) { }
607
virtual bool press() const;
608
bool performDefaultAction() const { return press(); }
610
virtual AccessibilityOrientation orientation() const;
611
virtual void increment() { }
612
virtual void decrement() { }
614
virtual void childrenChanged() { }
615
virtual void textChanged() { }
616
virtual void updateAccessibilityRole() { }
617
const AccessibilityChildrenVector& children();
618
virtual void addChildren() { }
619
virtual void addChild(AccessibilityObject*) { }
620
virtual void insertChild(AccessibilityObject*, unsigned) { }
622
virtual bool canHaveChildren() const { return true; }
623
virtual bool hasChildren() const { return m_haveChildren; }
624
virtual void updateChildrenIfNecessary();
625
virtual void setNeedsToUpdateChildren() { }
626
virtual void clearChildren();
628
virtual void detachFromParent();
630
virtual void detachFromParent() { }
633
virtual void selectedChildren(AccessibilityChildrenVector&) { }
634
virtual void visibleChildren(AccessibilityChildrenVector&) { }
635
virtual void tabChildren(AccessibilityChildrenVector&) { }
636
virtual bool shouldFocusActiveDescendant() const { return false; }
637
virtual AccessibilityObject* activeDescendant() const { return 0; }
638
virtual void handleActiveDescendantChanged() { }
639
virtual void handleAriaExpandedChanged() { }
640
bool isDescendantOfObject(const AccessibilityObject*) const;
641
bool isAncestorOfObject(const AccessibilityObject*) const;
642
AccessibilityObject* firstAnonymousBlockChild() const;
644
static AccessibilityRole ariaRoleToWebCoreRole(const String&);
645
bool hasAttribute(const QualifiedName&) const;
646
const AtomicString& getAttribute(const QualifiedName&) const;
648
virtual VisiblePositionRange visiblePositionRange() const { return VisiblePositionRange(); }
649
virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const { return VisiblePositionRange(); }
651
VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const;
652
VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const;
653
VisiblePositionRange positionOfRightWord(const VisiblePosition&) const;
654
VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const;
655
VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const;
656
VisiblePositionRange sentenceForPosition(const VisiblePosition&) const;
657
VisiblePositionRange paragraphForPosition(const VisiblePosition&) const;
658
VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const;
659
VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const;
661
String stringForVisiblePositionRange(const VisiblePositionRange&) const;
662
virtual IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const { return IntRect(); }
663
int lengthForVisiblePositionRange(const VisiblePositionRange&) const;
664
virtual void setSelectedVisiblePositionRange(const VisiblePositionRange&) const { }
666
virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const { return VisiblePosition(); }
667
VisiblePosition nextVisiblePosition(const VisiblePosition& visiblePos) const { return visiblePos.next(); }
668
VisiblePosition previousVisiblePosition(const VisiblePosition& visiblePos) const { return visiblePos.previous(); }
669
VisiblePosition nextWordEnd(const VisiblePosition&) const;
670
VisiblePosition previousWordStart(const VisiblePosition&) const;
671
VisiblePosition nextLineEndPosition(const VisiblePosition&) const;
672
VisiblePosition previousLineStartPosition(const VisiblePosition&) const;
673
VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const;
674
VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const;
675
VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const;
676
VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const;
677
virtual VisiblePosition visiblePositionForIndex(unsigned, bool /*lastIndexOK */) const { return VisiblePosition(); }
679
virtual VisiblePosition visiblePositionForIndex(int) const { return VisiblePosition(); }
680
virtual int indexForVisiblePosition(const VisiblePosition&) const { return 0; }
682
AccessibilityObject* accessibilityObjectForPosition(const VisiblePosition&) const;
683
int lineForPosition(const VisiblePosition&) const;
684
PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const;
685
virtual int index(const VisiblePosition&) const { return -1; }
687
virtual void lineBreaks(Vector<int>&) const { }
688
virtual PlainTextRange doAXRangeForLine(unsigned) const { return PlainTextRange(); }
689
PlainTextRange doAXRangeForPosition(const IntPoint&) const;
690
virtual PlainTextRange doAXRangeForIndex(unsigned) const { return PlainTextRange(); }
691
PlainTextRange doAXStyleRangeForIndex(unsigned) const;
693
virtual String doAXStringForRange(const PlainTextRange&) const { return String(); }
694
virtual IntRect doAXBoundsForRange(const PlainTextRange&) const { return IntRect(); }
695
String listMarkerTextForNodeAndPosition(Node*, const VisiblePosition&) const;
697
unsigned doAXLineForIndex(unsigned);
699
virtual String stringValueForMSAA() const { return String(); }
700
virtual String stringRoleForMSAA() const { return String(); }
701
virtual String nameForMSAA() const { return String(); }
702
virtual String descriptionForMSAA() const { return String(); }
703
virtual AccessibilityRole roleValueForMSAA() const { return roleValue(); }
705
virtual String passwordFieldValue() const { return String(); }
707
// Used by an ARIA tree to get all its rows.
708
void ariaTreeRows(AccessibilityChildrenVector&);
709
// Used by an ARIA tree item to get all of its direct rows that it can disclose.
710
void ariaTreeItemDisclosedRows(AccessibilityChildrenVector&);
711
// Used by an ARIA tree item to get only its content, and not its child tree items and groups.
712
void ariaTreeItemContent(AccessibilityChildrenVector&);
714
// ARIA live-region features.
715
bool supportsARIALiveRegion() const;
716
bool isInsideARIALiveRegion() const;
717
virtual const AtomicString& ariaLiveRegionStatus() const { return nullAtom; }
718
virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom; }
719
virtual bool ariaLiveRegionAtomic() const { return false; }
720
virtual bool ariaLiveRegionBusy() const { return false; }
722
bool supportsARIAAttributes() const;
724
// CSS3 Speech properties.
725
virtual ESpeak speakProperty() const { return SpeakNormal; }
727
// Make this object visible by scrolling as many nested scrollable views as needed.
728
virtual void scrollToMakeVisible() const;
729
// Same, but if the whole object can't be made visible, try for this subrect, in local coordinates.
730
virtual void scrollToMakeVisibleWithSubFocus(const IntRect&) const;
731
// Scroll this object to a given point in global coordinates of the top-level window.
732
virtual void scrollToGlobalPoint(const IntPoint&) const;
734
bool cachedIsIgnoredValue();
735
void setCachedIsIgnoredValue(bool);
737
// Fires a children changed notification on the parent if the isIgnored value changed.
738
void notifyIfIgnoredValueChanged();
740
// All math elements return true for isMathElement().
741
virtual bool isMathElement() const { return false; }
742
virtual bool isMathFraction() const { return false; }
743
virtual bool isMathFenced() const { return false; }
744
virtual bool isMathSubscriptSuperscript() const { return false; }
745
virtual bool isMathRow() const { return false; }
746
virtual bool isMathUnderOver() const { return false; }
747
virtual bool isMathRoot() const { return false; }
748
virtual bool isMathSquareRoot() const { return false; }
749
virtual bool isMathText() const { return false; }
750
virtual bool isMathNumber() const { return false; }
751
virtual bool isMathOperator() const { return false; }
752
virtual bool isMathFenceOperator() const { return false; }
753
virtual bool isMathSeparatorOperator() const { return false; }
754
virtual bool isMathIdentifier() const { return false; }
755
virtual bool isMathTable() const { return false; }
756
virtual bool isMathTableRow() const { return false; }
757
virtual bool isMathTableCell() const { return false; }
760
virtual AccessibilityObject* mathRadicandObject() { return 0; }
761
virtual AccessibilityObject* mathRootIndexObject() { return 0; }
763
// Under over components.
764
virtual AccessibilityObject* mathUnderObject() { return 0; }
765
virtual AccessibilityObject* mathOverObject() { return 0; }
767
// Fraction components.
768
virtual AccessibilityObject* mathNumeratorObject() { return 0; }
769
virtual AccessibilityObject* mathDenominatorObject() { return 0; }
771
// Subscript/superscript components.
772
virtual AccessibilityObject* mathBaseObject() { return 0; }
773
virtual AccessibilityObject* mathSubscriptObject() { return 0; }
774
virtual AccessibilityObject* mathSuperscriptObject() { return 0; }
776
// Fenced components.
777
virtual String mathFencedOpenString() const { return String(); }
778
virtual String mathFencedCloseString() const { return String(); }
780
#if HAVE(ACCESSIBILITY)
781
#if PLATFORM(GTK) || PLATFORM(EFL)
782
AccessibilityObjectWrapper* wrapper() const;
783
void setWrapper(AccessibilityObjectWrapper*);
784
#elif !PLATFORM(CHROMIUM)
785
AccessibilityObjectWrapper* wrapper() const { return m_wrapper.get(); }
786
void setWrapper(AccessibilityObjectWrapper* wrapper)
794
void overrideAttachmentParent(AccessibilityObject* parent);
796
void overrideAttachmentParent(AccessibilityObject*) { }
799
#if HAVE(ACCESSIBILITY)
800
// a platform-specific method for determining if an attachment is ignored
801
bool accessibilityIgnoreAttachment() const;
802
// gives platforms the opportunity to indicate if and how an object should be included
803
AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const;
805
bool accessibilityIgnoreAttachment() const { return true; }
806
AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const { return DefaultBehavior; }
809
// allows for an AccessibilityObject to update its render tree or perform
810
// other operations update type operations
811
void updateBackingStore();
815
AccessibilityChildrenVector m_children;
816
mutable bool m_haveChildren;
817
AccessibilityRole m_role;
818
AccessibilityObjectInclusion m_cachedIsIgnoredValue;
820
// If this object itself scrolls, return its ScrollableArea.
821
virtual ScrollableArea* getScrollableAreaIfScrollable() const { return 0; }
822
virtual void scrollTo(const IntPoint&) const { }
824
static bool isAccessibilityObjectSearchMatch(AccessibilityObject*, AccessibilitySearchCriteria*);
825
static bool isAccessibilityTextSearchMatch(AccessibilityObject*, AccessibilitySearchCriteria*);
826
static bool objectMatchesSearchCriteriaWithResultLimit(AccessibilityObject*, AccessibilitySearchCriteria*, AccessibilityChildrenVector&);
827
virtual AccessibilityRole buttonRoleType() const;
829
#if PLATFORM(GTK) || PLATFORM(EFL)
830
bool allowsTextRanges() const;
831
unsigned getLengthForTextRange() const;
833
bool allowsTextRanges() const { return isTextControl(); }
834
unsigned getLengthForTextRange() const { return text().length(); }
838
RetainPtr<WebAccessibilityObjectWrapper> m_wrapper;
839
#elif PLATFORM(WIN) && !OS(WINCE)
840
COMPtr<AccessibilityObjectWrapper> m_wrapper;
841
#elif PLATFORM(GTK) || PLATFORM(EFL)
842
AtkObject* m_wrapper;
843
#elif PLATFORM(CHROMIUM)
848
#if !HAVE(ACCESSIBILITY)
849
inline const AccessibilityObject::AccessibilityChildrenVector& AccessibilityObject::children() { return m_children; }
850
inline const String& AccessibilityObject::actionVerb() const { return emptyString(); }
851
inline int AccessibilityObject::lineForPosition(const VisiblePosition&) const { return -1; }
852
inline void AccessibilityObject::updateBackingStore() { }
855
} // namespace WebCore
857
#endif // AccessibilityObject_h