Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(649)

Unified Diff: third_party/WebKit/Source/modules/accessibility/AXObject.h

Issue 2858493002: Rename AXObject to AXObjectImpl in modules/ and web/ (Closed)
Patch Set: Fixed rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/accessibility/AXObject.h
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.h b/third_party/WebKit/Source/modules/accessibility/AXObject.h
deleted file mode 100644
index aa8754a39b04fff57ae15043c09d8a43d9e88eee..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/modules/accessibility/AXObject.h
+++ /dev/null
@@ -1,1138 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Nuanti Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef AXObject_h
-#define AXObject_h
-
-#include "core/editing/VisiblePosition.h"
-#include "core/editing/markers/DocumentMarker.h"
-#include "core/inspector/protocol/Accessibility.h"
-#include "modules/ModulesExport.h"
-#include "platform/geometry/FloatQuad.h"
-#include "platform/geometry/LayoutRect.h"
-#include "platform/graphics/Color.h"
-#include "platform/wtf/Forward.h"
-#include "platform/wtf/Vector.h"
-
-class SkMatrix44;
-
-namespace blink {
-
-class AXObject;
-class AXObjectCacheImpl;
-class Element;
-class FrameView;
-class IntPoint;
-class Node;
-class LayoutObject;
-class ScrollableArea;
-
-enum class AOMStringProperty;
-
-typedef unsigned AXID;
-
-enum AccessibilityRole {
- kUnknownRole = 0,
- kAbbrRole, // No mapping to ARIA role.
- kAlertDialogRole,
- kAlertRole,
- kAnchorRole, // No mapping to ARIA role.
- kAnnotationRole, // No mapping to ARIA role.
- kApplicationRole,
- kArticleRole,
- kAudioRole, // No mapping to ARIA role.
- kBannerRole,
- kBlockquoteRole, // No mapping to ARIA role.
- kBusyIndicatorRole, // No mapping to ARIA role.
- kButtonRole,
- kCanvasRole, // No mapping to ARIA role.
- kCaptionRole, // No mapping to ARIA role.
- kCellRole,
- kCheckBoxRole,
- kColorWellRole, // No mapping to ARIA role.
- kColumnHeaderRole,
- kColumnRole, // No mapping to ARIA role.
- kComboBoxRole,
- kComplementaryRole,
- kContentInfoRole,
- kDateRole, // No mapping to ARIA role.
- kDateTimeRole, // No mapping to ARIA role.
- kDefinitionRole,
- kDescriptionListDetailRole, // No mapping to ARIA role.
- kDescriptionListRole, // No mapping to ARIA role.
- kDescriptionListTermRole, // No mapping to ARIA role.
- kDetailsRole, // No mapping to ARIA role.
- kDialogRole,
- kDirectoryRole,
- kDisclosureTriangleRole, // No mapping to ARIA role.
- kDivRole, // No mapping to ARIA role.
- kDocumentRole,
- kEmbeddedObjectRole, // No mapping to ARIA role.
- kFeedRole,
- kFigcaptionRole, // No mapping to ARIA role.
- kFigureRole,
- kFooterRole,
- kFormRole,
- kGridRole,
- kGroupRole,
- kHeadingRole,
- kIframePresentationalRole, // No mapping to ARIA role.
- kIframeRole, // No mapping to ARIA role.
- kIgnoredRole, // No mapping to ARIA role.
- kImageMapLinkRole, // No mapping to ARIA role.
- kImageMapRole, // No mapping to ARIA role.
- kImageRole,
- kInlineTextBoxRole, // No mapping to ARIA role.
- kInputTimeRole, // No mapping to ARIA role.
- kLabelRole,
- kLegendRole, // No mapping to ARIA role.
- kLineBreakRole, // No mapping to ARIA role.
- kLinkRole,
- kListBoxOptionRole,
- kListBoxRole,
- kListItemRole,
- kListMarkerRole, // No mapping to ARIA role.
- kListRole,
- kLogRole,
- kMainRole,
- kMarkRole, // No mapping to ARIA role.
- kMarqueeRole,
- kMathRole,
- kMenuBarRole,
- kMenuButtonRole,
- kMenuItemRole,
- kMenuItemCheckBoxRole,
- kMenuItemRadioRole,
- kMenuListOptionRole,
- kMenuListPopupRole,
- kMenuRole,
- kMeterRole,
- kNavigationRole,
- kNoneRole, // No mapping to ARIA role.
- kNoteRole,
- kOutlineRole, // No mapping to ARIA role.
- kParagraphRole, // No mapping to ARIA role.
- kPopUpButtonRole,
- kPreRole, // No mapping to ARIA role.
- kPresentationalRole,
- kProgressIndicatorRole,
- kRadioButtonRole,
- kRadioGroupRole,
- kRegionRole,
- kRootWebAreaRole, // No mapping to ARIA role.
- kRowHeaderRole,
- kRowRole,
- kRubyRole, // No mapping to ARIA role.
- kRulerRole, // No mapping to ARIA role.
- kSVGRootRole, // No mapping to ARIA role.
- kScrollAreaRole, // No mapping to ARIA role.
- kScrollBarRole,
- kSeamlessWebAreaRole, // No mapping to ARIA role.
- kSearchRole,
- kSearchBoxRole,
- kSliderRole,
- kSliderThumbRole, // No mapping to ARIA role.
- kSpinButtonPartRole, // No mapping to ARIA role.
- kSpinButtonRole,
- kSplitterRole,
- kStaticTextRole, // No mapping to ARIA role.
- kStatusRole,
- kSwitchRole,
- kTabGroupRole, // No mapping to ARIA role.
- kTabListRole,
- kTabPanelRole,
- kTabRole,
- kTableHeaderContainerRole, // No mapping to ARIA role.
- kTableRole,
- kTermRole,
- kTextFieldRole,
- kTimeRole, // No mapping to ARIA role.
- kTimerRole,
- kToggleButtonRole,
- kToolbarRole,
- kTreeGridRole,
- kTreeItemRole,
- kTreeRole,
- kUserInterfaceTooltipRole,
- kVideoRole, // No mapping to ARIA role.
- kWebAreaRole, // No mapping to ARIA role.
- kWindowRole, // No mapping to ARIA role.
- kNumRoles
-};
-
-enum AccessibilityTextSource {
- kAlternativeText,
- kChildrenText,
- kSummaryText,
- kHelpText,
- kVisibleText,
- kTitleTagText,
- kPlaceholderText,
- kLabelByElementText,
-};
-
-enum AccessibilityState {
- kAXBusyState,
- kAXCheckedState,
- kAXEnabledState,
- kAXExpandedState,
- kAXFocusableState,
- kAXFocusedState,
- kAXHaspopupState,
- kAXHoveredState,
- kAXInvisibleState,
- kAXLinkedState,
- kAXMultilineState,
- kAXMultiselectableState,
- kAXOffscreenState,
- kAXPressedState,
- kAXProtectedState,
- kAXReadonlyState,
- kAXRequiredState,
- kAXSelectableState,
- kAXSelectedState,
- kAXVerticalState,
- kAXVisitedState
-};
-
-class AccessibilityText final
- : public GarbageCollectedFinalized<AccessibilityText> {
- WTF_MAKE_NONCOPYABLE(AccessibilityText);
-
- public:
- DEFINE_INLINE_TRACE() { visitor->Trace(text_element_); }
-
- private:
- AccessibilityText(const String& text,
- const AccessibilityTextSource& source,
- AXObject* element)
- : text_(text), text_element_(element) {}
-
- String text_;
- Member<AXObject> text_element_;
-};
-
-enum AccessibilityOrientation {
- kAccessibilityOrientationUndefined = 0,
- kAccessibilityOrientationVertical,
- kAccessibilityOrientationHorizontal,
-};
-
-enum AXObjectInclusion {
- kIncludeObject,
- kIgnoreObject,
- kDefaultBehavior,
-};
-
-enum class AXSupportedAction {
- kNone = 0,
- kActivate,
- kCheck,
- kClick,
- kJump,
- kOpen,
- kPress,
- kSelect,
- kUncheck
-};
-
-enum AccessibilityButtonState {
- kButtonStateOff = 0,
- kButtonStateOn,
- kButtonStateMixed,
-};
-
-enum AccessibilityTextDirection {
- kAccessibilityTextDirectionLTR,
- kAccessibilityTextDirectionRTL,
- kAccessibilityTextDirectionTTB,
- kAccessibilityTextDirectionBTT
-};
-
-enum SortDirection {
- kSortDirectionUndefined = 0,
- kSortDirectionNone,
- kSortDirectionAscending,
- kSortDirectionDescending,
- kSortDirectionOther
-};
-
-enum AccessibilityExpanded {
- kExpandedUndefined = 0,
- kExpandedCollapsed,
- kExpandedExpanded,
-};
-
-enum AccessibilityOptionalBool {
- kOptionalBoolUndefined = 0,
- kOptionalBoolTrue,
- kOptionalBoolFalse
-};
-
-enum AriaCurrentState {
- kAriaCurrentStateUndefined = 0,
- kAriaCurrentStateFalse,
- kAriaCurrentStateTrue,
- kAriaCurrentStatePage,
- kAriaCurrentStateStep,
- kAriaCurrentStateLocation,
- kAriaCurrentStateDate,
- kAriaCurrentStateTime
-};
-
-enum InvalidState {
- kInvalidStateUndefined = 0,
- kInvalidStateFalse,
- kInvalidStateTrue,
- kInvalidStateSpelling,
- kInvalidStateGrammar,
- kInvalidStateOther
-};
-
-enum TextStyle {
- kTextStyleNone = 0,
- kTextStyleBold = 1 << 0,
- kTextStyleItalic = 1 << 1,
- kTextStyleUnderline = 1 << 2,
- kTextStyleLineThrough = 1 << 3
-};
-
-enum TextUnderElementMode {
- kTextUnderElementAll,
- kTextUnderElementAny // If the text is unimportant, just whether or not it's
- // present
-};
-
-enum class AXBoolAttribute {};
-
-enum class AXStringAttribute {
- kAriaKeyShortcuts,
- kAriaRoleDescription,
-};
-
-enum class AXObjectAttribute {
- kAriaActiveDescendant,
- kAriaErrorMessage,
-};
-
-enum class AXObjectVectorAttribute {
- kAriaControls,
- kAriaDetails,
- kAriaFlowTo,
-};
-
-class AXSparseAttributeClient {
- public:
- virtual void AddBoolAttribute(AXBoolAttribute, bool) = 0;
- virtual void AddStringAttribute(AXStringAttribute, const String&) = 0;
- virtual void AddObjectAttribute(AXObjectAttribute, AXObject&) = 0;
- virtual void AddObjectVectorAttribute(AXObjectVectorAttribute,
- HeapVector<Member<AXObject>>&) = 0;
-};
-
-// The source of the accessible name of an element. This is needed
-// because on some platforms this determines how the accessible name
-// is exposed.
-enum AXNameFrom {
- kAXNameFromUninitialized = -1,
- kAXNameFromAttribute = 0,
- kAXNameFromAttributeExplicitlyEmpty,
- kAXNameFromCaption,
- kAXNameFromContents,
- kAXNameFromPlaceholder,
- kAXNameFromRelatedElement,
- kAXNameFromValue,
- kAXNameFromTitle,
-};
-
-// The potential native HTML-based text (name, description or placeholder)
-// sources for an element. See
-// http://rawgit.com/w3c/aria/master/html-aam/html-aam.html#accessible-name-and-description-calculation
-enum AXTextFromNativeHTML {
- kAXTextFromNativeHTMLUninitialized = -1,
- kAXTextFromNativeHTMLFigcaption,
- kAXTextFromNativeHTMLLabel,
- kAXTextFromNativeHTMLLabelFor,
- kAXTextFromNativeHTMLLabelWrapped,
- kAXTextFromNativeHTMLLegend,
- kAXTextFromNativeHTMLTableCaption,
- kAXTextFromNativeHTMLTitleElement,
-};
-
-// The source of the accessible description of an element. This is needed
-// because on some platforms this determines how the accessible description
-// is exposed.
-enum AXDescriptionFrom {
- kAXDescriptionFromUninitialized = -1,
- kAXDescriptionFromAttribute = 0,
- kAXDescriptionFromContents,
- kAXDescriptionFromRelatedElement,
-};
-
-enum AXIgnoredReason {
- kAXActiveModalDialog,
- kAXAncestorDisallowsChild,
- kAXAncestorIsLeafNode,
- kAXAriaHidden,
- kAXAriaHiddenRoot,
- kAXEmptyAlt,
- kAXEmptyText,
- kAXInert,
- kAXInheritsPresentation,
- kAXLabelContainer,
- kAXLabelFor,
- kAXNotRendered,
- kAXNotVisible,
- kAXPresentationalRole,
- kAXProbablyPresentational,
- kAXStaticTextUsedAsNameFor,
- kAXUninteresting
-};
-
-class IgnoredReason {
- DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-
- public:
- AXIgnoredReason reason;
- Member<const AXObject> related_object;
-
- explicit IgnoredReason(AXIgnoredReason reason)
- : reason(reason), related_object(nullptr) {}
-
- IgnoredReason(AXIgnoredReason r, const AXObject* obj)
- : reason(r), related_object(obj) {}
-
- DEFINE_INLINE_TRACE() { visitor->Trace(related_object); }
-};
-
-class NameSourceRelatedObject
- : public GarbageCollectedFinalized<NameSourceRelatedObject> {
- WTF_MAKE_NONCOPYABLE(NameSourceRelatedObject);
-
- public:
- WeakMember<AXObject> object;
- String text;
-
- NameSourceRelatedObject(AXObject* object, String text)
- : object(object), text(text) {}
-
- DEFINE_INLINE_TRACE() { visitor->Trace(object); }
-};
-
-typedef HeapVector<Member<NameSourceRelatedObject>> AXRelatedObjectVector;
-class NameSource {
- DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-
- public:
- String text;
- bool superseded = false;
- bool invalid = false;
- AXNameFrom type = kAXNameFromUninitialized;
- const QualifiedName& attribute;
- AtomicString attribute_value;
- AXTextFromNativeHTML native_source = kAXTextFromNativeHTMLUninitialized;
- AXRelatedObjectVector related_objects;
-
- NameSource(bool superseded, const QualifiedName& attr)
- : superseded(superseded), attribute(attr) {}
-
- explicit NameSource(bool superseded)
- : superseded(superseded), attribute(QualifiedName::Null()) {}
-
- DEFINE_INLINE_TRACE() { visitor->Trace(related_objects); }
-};
-
-class DescriptionSource {
- DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-
- public:
- String text;
- bool superseded = false;
- bool invalid = false;
- AXDescriptionFrom type = kAXDescriptionFromUninitialized;
- const QualifiedName& attribute;
- AtomicString attribute_value;
- AXTextFromNativeHTML native_source = kAXTextFromNativeHTMLUninitialized;
- AXRelatedObjectVector related_objects;
-
- DescriptionSource(bool superseded, const QualifiedName& attr)
- : superseded(superseded), attribute(attr) {}
-
- explicit DescriptionSource(bool superseded)
- : superseded(superseded), attribute(QualifiedName::Null()) {}
-
- DEFINE_INLINE_TRACE() { visitor->Trace(related_objects); }
-};
-
-} // namespace blink
-
-WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::IgnoredReason);
-WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::NameSource);
-WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::DescriptionSource);
-
-namespace blink {
-
-class MODULES_EXPORT AXObject : public GarbageCollectedFinalized<AXObject> {
- WTF_MAKE_NONCOPYABLE(AXObject);
-
- public:
- typedef HeapVector<Member<AXObject>> AXObjectVector;
-
- struct AXRange {
- DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
- // The deepest descendant in which the range starts.
- // (nullptr means the current object.)
- Persistent<AXObject> anchor_object;
- // The number of characters and child objects in the anchor object
- // before the range starts.
- int anchor_offset;
- // When the same character offset could correspond to two possible
- // cursor positions, upstream means it's on the previous line rather
- // than the next line.
- TextAffinity anchor_affinity;
-
- // The deepest descendant in which the range ends.
- // (nullptr means the current object.)
- Persistent<AXObject> focus_object;
- // The number of characters and child objects in the focus object
- // before the range ends.
- int focus_offset;
- // When the same character offset could correspond to two possible
- // cursor positions, upstream means it's on the previous line rather
- // than the next line.
- TextAffinity focus_affinity;
-
- AXRange()
- : anchor_object(nullptr),
- anchor_offset(-1),
- anchor_affinity(TextAffinity::kUpstream),
- focus_object(nullptr),
- focus_offset(-1),
- focus_affinity(TextAffinity::kDownstream) {}
-
- AXRange(int start_offset, int end_offset)
- : anchor_object(nullptr),
- anchor_offset(start_offset),
- anchor_affinity(TextAffinity::kUpstream),
- focus_object(nullptr),
- focus_offset(end_offset),
- focus_affinity(TextAffinity::kDownstream) {}
-
- AXRange(AXObject* anchor_object,
- int anchor_offset,
- TextAffinity anchor_affinity,
- AXObject* focus_object,
- int focus_offset,
- TextAffinity focus_affinity)
- : anchor_object(anchor_object),
- anchor_offset(anchor_offset),
- anchor_affinity(anchor_affinity),
- focus_object(focus_object),
- focus_offset(focus_offset),
- focus_affinity(focus_affinity) {}
-
- bool IsValid() const {
- return ((anchor_object && focus_object) ||
- (!anchor_object && !focus_object)) &&
- anchor_offset >= 0 && focus_offset >= 0;
- }
-
- // Determines if the range only refers to text offsets under the current
- // object.
- bool IsSimple() const {
- return anchor_object == focus_object || !anchor_object || !focus_object;
- }
- };
-
- protected:
- AXObject(AXObjectCacheImpl&);
-
- public:
- virtual ~AXObject();
- DECLARE_VIRTUAL_TRACE();
-
- static unsigned NumberOfLiveAXObjects() { return number_of_live_ax_objects_; }
-
- // After constructing an AXObject, it must be given a
- // unique ID, then added to AXObjectCacheImpl, and finally init() must
- // be called last.
- void SetAXObjectID(AXID ax_object_id) { id_ = ax_object_id; }
- virtual void Init() {}
-
- // When the corresponding WebCore object that this AXObject
- // wraps is deleted, it must be detached.
- virtual void Detach();
- virtual bool IsDetached() const;
-
- // If the parent of this object is known, this can be faster than using
- // computeParent().
- virtual void SetParent(AXObject* parent) { parent_ = parent; }
-
- // The AXObjectCacheImpl that owns this object, and its unique ID within this
- // cache.
- AXObjectCacheImpl& AxObjectCache() const {
- DCHECK(ax_object_cache_);
- return *ax_object_cache_;
- }
-
- AXID AxObjectID() const { return id_; }
-
- // Wrappers that retrieve either an Accessibility Object Model property,
- // or the equivalent ARIA attribute, in that order.
- // TODO(dmazzoni): Add equivalents for other types of properties besides
- // just strings.
- const AtomicString& GetAOMPropertyOrARIAAttribute(AOMStringProperty) const;
-
- virtual void GetSparseAXAttributes(AXSparseAttributeClient&) const {}
-
- // Determine subclass type.
- virtual bool IsAXNodeObject() const { return false; }
- virtual bool IsAXLayoutObject() const { return false; }
- virtual bool IsAXInlineTextBox() const { return false; }
- virtual bool IsAXListBox() const { return false; }
- virtual bool IsAXListBoxOption() const { return false; }
- virtual bool IsAXRadioInput() const { return false; }
- virtual bool IsAXSVGRoot() const { return false; }
-
- // Check object role or purpose.
- virtual AccessibilityRole RoleValue() const { return role_; }
- bool IsARIATextControl() const;
- virtual bool IsARIATreeGridRow() const { return false; }
- virtual bool IsAXTable() const { return false; }
- virtual bool IsAnchor() const { return false; }
- bool IsButton() const;
- bool IsCheckable() const;
- bool IsCanvas() const { return RoleValue() == kCanvasRole; }
- bool IsCheckbox() const { return RoleValue() == kCheckBoxRole; }
- bool IsCheckboxOrRadio() const { return IsCheckbox() || IsRadioButton(); }
- bool IsColorWell() const { return RoleValue() == kColorWellRole; }
- bool IsComboBox() const { return RoleValue() == kComboBoxRole; }
- virtual bool IsControl() const { return false; }
- virtual bool IsDataTable() const { return false; }
- virtual bool IsEmbeddedObject() const { return false; }
- virtual bool IsFieldset() const { return false; }
- virtual bool IsHeading() const { return false; }
- virtual bool IsImage() const { return false; }
- virtual bool IsImageMapLink() const { return false; }
- virtual bool IsInputImage() const { return false; }
- bool IsLandmarkRelated() const;
- virtual bool IsLink() const { return false; }
- virtual bool IsInPageLinkTarget() const { return false; }
- virtual bool IsList() const { return false; }
- virtual bool IsMenu() const { return false; }
- virtual bool IsMenuButton() const { return false; }
- virtual bool IsMenuList() const { return false; }
- virtual bool IsMenuListOption() const { return false; }
- virtual bool IsMenuListPopup() const { return false; }
- bool IsMenuRelated() const;
- virtual bool IsMeter() const { return false; }
- virtual bool IsMockObject() const { return false; }
- virtual bool IsNativeSpinButton() const { return false; }
- virtual bool IsNativeTextControl() const {
- return false;
- } // input or textarea
- virtual bool IsNonNativeTextControl() const {
- return false;
- } // contenteditable or role=textbox
- virtual bool IsPasswordField() const { return false; }
- virtual bool IsPasswordFieldAndShouldHideValue() const;
- bool IsPresentational() const {
- return RoleValue() == kNoneRole || RoleValue() == kPresentationalRole;
- }
- virtual bool IsProgressIndicator() const { return false; }
- bool IsRadioButton() const { return RoleValue() == kRadioButtonRole; }
- bool IsRange() const {
- return RoleValue() == kProgressIndicatorRole ||
- RoleValue() == kScrollBarRole || RoleValue() == kSliderRole ||
- RoleValue() == kSpinButtonRole;
- }
- bool IsScrollbar() const { return RoleValue() == kScrollBarRole; }
- virtual bool IsSlider() const { return false; }
- virtual bool IsNativeSlider() const { return false; }
- virtual bool IsSpinButton() const { return RoleValue() == kSpinButtonRole; }
- virtual bool IsSpinButtonPart() const { return false; }
- bool IsTabItem() const { return RoleValue() == kTabRole; }
- virtual bool IsTableCell() const { return false; }
- virtual bool IsTableRow() const { return false; }
- virtual bool IsTextControl() const { return false; }
- virtual bool IsTableCol() const { return false; }
- bool IsTree() const { return RoleValue() == kTreeRole; }
- bool IsWebArea() const { return RoleValue() == kWebAreaRole; }
-
- // Check object state.
- virtual bool IsClickable() const;
- virtual bool IsCollapsed() const { return false; }
- virtual bool IsEnabled() const { return false; }
- virtual AccessibilityExpanded IsExpanded() const {
- return kExpandedUndefined;
- }
- virtual bool IsFocused() const { return false; }
- virtual bool IsHovered() const { return false; }
- virtual bool IsLinked() const { return false; }
- virtual bool IsLoaded() const { return false; }
- virtual bool IsModal() const { return false; }
- virtual bool IsMultiSelectable() const { return false; }
- virtual bool IsOffScreen() const { return false; }
- virtual bool IsPressed() const { return false; }
- virtual bool IsReadOnly() const { return false; }
- virtual bool IsRequired() const { return false; }
- virtual bool IsSelected() const { return false; }
- virtual bool IsSelectedOptionActive() const { return false; }
- virtual bool IsVisible() const { return true; }
- virtual bool IsVisited() const { return false; }
-
- // Check whether certain properties can be modified.
- virtual bool CanSetFocusAttribute() const { return false; }
- virtual bool CanSetValueAttribute() const { return false; }
- virtual bool CanSetSelectedAttribute() const { return false; }
-
- // Whether objects are ignored, i.e. not included in the tree.
- bool AccessibilityIsIgnored() const;
- typedef HeapVector<IgnoredReason> IgnoredReasons;
- virtual bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const {
- return true;
- }
- bool AccessibilityIsIgnoredByDefault(IgnoredReasons* = nullptr) const;
- AXObjectInclusion AccessibilityPlatformIncludesObject() const;
- virtual AXObjectInclusion DefaultObjectInclusion(
- IgnoredReasons* = nullptr) const;
- bool IsInertOrAriaHidden() const;
- const AXObject* AriaHiddenRoot() const;
- bool ComputeIsInertOrAriaHidden(IgnoredReasons* = nullptr) const;
- bool IsDescendantOfLeafNode() const;
- AXObject* LeafNodeAncestor() const;
- bool IsDescendantOfDisabledNode() const;
- const AXObject* DisabledAncestor() const;
- bool LastKnownIsIgnoredValue();
- void SetLastKnownIsIgnoredValue(bool);
- bool HasInheritedPresentationalRole() const;
- bool IsPresentationalChild() const;
- bool AncestorExposesActiveDescendant() const;
- bool ComputeAncestorExposesActiveDescendant() const;
-
- //
- // Accessible name calculation
- //
-
- // Retrieves the accessible name of the object, an enum indicating where the
- // name was derived from, and a list of objects that were used to derive the
- // name, if any.
- virtual String GetName(AXNameFrom&, AXObjectVector* name_objects) const;
-
- typedef HeapVector<NameSource> NameSources;
- // Retrieves the accessible name of the object and a list of all potential
- // sources for the name, indicating which were used.
- virtual String GetName(NameSources*) const;
-
- typedef HeapVector<DescriptionSource> DescriptionSources;
- // Takes the result of nameFrom from calling |name|, above, and retrieves the
- // accessible description of the object, which is secondary to |name|, an enum
- // indicating where the description was derived from, and a list of objects
- // that were used to derive the description, if any.
- virtual String Description(AXNameFrom,
- AXDescriptionFrom&,
- AXObjectVector* description_objects) const {
- return String();
- }
-
- // Same as above, but returns a list of all potential sources for the
- // description, indicating which were used.
- virtual String Description(AXNameFrom,
- AXDescriptionFrom&,
- DescriptionSources*,
- AXRelatedObjectVector*) const {
- return String();
- }
-
- // Takes the result of nameFrom and descriptionFrom from calling |name| and
- // |description|, above, and retrieves the placeholder of the object, if
- // present and if it wasn't already exposed by one of the two functions above.
- virtual String Placeholder(AXNameFrom) const { return String(); }
-
- // Internal functions used by name and description, above.
- typedef HeapHashSet<Member<const AXObject>> AXObjectSet;
- virtual String TextAlternative(bool recursive,
- bool in_aria_labelled_by_traversal,
- AXObjectSet& visited,
- AXNameFrom& name_from,
- AXRelatedObjectVector* related_objects,
- NameSources* name_sources) const {
- return String();
- }
- virtual String TextFromDescendants(AXObjectSet& visited,
- bool recursive) const {
- return String();
- }
-
- // Returns result of Accessible Name Calculation algorithm.
- // This is a simpler high-level interface to |name| used by Inspector.
- String ComputedName() const;
-
- // Internal function used to determine whether the result of calling |name| on
- // this object would return text that came from the an HTML label element or
- // not. This is intended to be faster than calling |name| or
- // |textAlternative|, and without side effects (it won't call
- // axObjectCache->getOrCreate).
- virtual bool NameFromLabelElement() const { return false; }
-
- //
- // Properties of static elements.
- //
-
- virtual const AtomicString& AccessKey() const { return g_null_atom; }
- RGBA32 BackgroundColor() const;
- virtual RGBA32 ComputeBackgroundColor() const { return Color::kTransparent; }
- virtual RGBA32 GetColor() const { return Color::kBlack; }
- // Used by objects of role ColorWellRole.
- virtual RGBA32 ColorValue() const { return Color::kTransparent; }
- virtual bool CanvasHasFallbackContent() const { return false; }
- virtual String FontFamily() const { return g_null_atom; }
- // Font size is in pixels.
- virtual float FontSize() const { return 0.0f; }
- // Value should be 1-based. 0 means not supported.
- virtual int HeadingLevel() const { return 0; }
- // Value should be 1-based. 0 means not supported.
- virtual unsigned HierarchicalLevel() const { return 0; }
- // Return the content of an image or canvas as an image data url in
- // PNG format. If |maxSize| is not empty and if the image is larger than
- // those dimensions, the image will be resized proportionally first to fit.
- virtual String ImageDataUrl(const IntSize& max_size) const {
- return g_null_atom;
- }
- virtual AXObject* InPageLinkTarget() const { return nullptr; }
- virtual AccessibilityOrientation Orientation() const;
- virtual String GetText() const { return String(); }
- virtual AccessibilityTextDirection GetTextDirection() const {
- return kAccessibilityTextDirectionLTR;
- }
- virtual int TextLength() const { return 0; }
- virtual TextStyle GetTextStyle() const { return kTextStyleNone; }
- virtual AXObjectVector RadioButtonsInGroup() const {
- return AXObjectVector();
- }
- virtual KURL Url() const { return KURL(); }
-
- // Load inline text boxes for just this node, even if
- // settings->inlineTextBoxAccessibilityEnabled() is false.
- virtual void LoadInlineTextBoxes() {}
-
- // Walk the AXObjects on the same line. This is supported on any
- // object type but primarily intended to be used for inline text boxes.
- virtual AXObject* NextOnLine() const { return nullptr; }
- virtual AXObject* PreviousOnLine() const { return nullptr; }
-
- // For all node objects. The start and end character offset of each
- // marker, such as spelling or grammar error.
- virtual void Markers(Vector<DocumentMarker::MarkerType>&,
- Vector<AXRange>&) const {}
- // For an inline text box.
- // The integer horizontal pixel offset of each character in the string;
- // negative values for RTL.
- virtual void TextCharacterOffsets(Vector<int>&) const {}
- // The start and end character offset of each word in the object's text.
- virtual void GetWordBoundaries(Vector<AXRange>&) const {}
-
- // Properties of interactive elements.
- AXSupportedAction Action() const;
- AccessibilityButtonState CheckedState() const;
- virtual AriaCurrentState GetAriaCurrentState() const {
- return kAriaCurrentStateUndefined;
- }
- virtual InvalidState GetInvalidState() const {
- return kInvalidStateUndefined;
- }
- // Only used when invalidState() returns InvalidStateOther.
- virtual String AriaInvalidValue() const { return String(); }
- virtual String ValueDescription() const { return String(); }
- virtual float ValueForRange() const { return 0.0f; }
- virtual float MaxValueForRange() const { return 0.0f; }
- virtual float MinValueForRange() const { return 0.0f; }
- virtual String StringValue() const { return String(); }
-
- // ARIA attributes.
- virtual AXObject* ActiveDescendant() { return nullptr; }
- virtual String AriaAutoComplete() const { return String(); }
- virtual void AriaOwnsElements(AXObjectVector& owns) const {}
- virtual void AriaDescribedbyElements(AXObjectVector&) const {}
- virtual void AriaLabelledbyElements(AXObjectVector&) const {}
- virtual bool AriaHasPopup() const { return false; }
- virtual bool IsEditable() const { return false; }
- bool IsMultiline() const;
- virtual bool IsRichlyEditable() const { return false; }
- bool AriaPressedIsPresent() const;
- virtual AccessibilityRole AriaRoleAttribute() const { return kUnknownRole; }
- virtual bool AriaRoleHasPresentationalChildren() const { return false; }
- virtual AXObject* AncestorForWhichThisIsAPresentationalChild() const {
- return 0;
- }
- bool SupportsActiveDescendant() const;
- bool SupportsARIAAttributes() const;
- virtual bool SupportsARIADragging() const { return false; }
- virtual bool SupportsARIADropping() const { return false; }
- virtual bool SupportsARIAFlowTo() const { return false; }
- virtual bool SupportsARIAOwns() const { return false; }
- bool SupportsRangeValue() const;
- virtual SortDirection GetSortDirection() const {
- return kSortDirectionUndefined;
- }
-
- // Returns 0-based index.
- int IndexInParent() const;
-
- // Value should be 1-based. 0 means not supported.
- virtual int PosInSet() const { return 0; }
- virtual int SetSize() const { return 0; }
- bool SupportsSetSizeAndPosInSet() const;
-
- // ARIA live-region features.
- bool IsLiveRegion() const;
- AXObject* LiveRegionRoot() const;
- virtual const AtomicString& LiveRegionStatus() const { return g_null_atom; }
- virtual const AtomicString& LiveRegionRelevant() const { return g_null_atom; }
- virtual bool LiveRegionAtomic() const { return false; }
- virtual bool LiveRegionBusy() const { return false; }
-
- const AtomicString& ContainerLiveRegionStatus() const;
- const AtomicString& ContainerLiveRegionRelevant() const;
- bool ContainerLiveRegionAtomic() const;
- bool ContainerLiveRegionBusy() const;
-
- // Every object's bounding box is returned relative to a
- // container object (which is guaranteed to be an ancestor) and
- // optionally a transformation matrix that needs to be applied too.
- // To compute the absolute bounding box of an element, start with its
- // boundsInContainer and apply the transform. Then as long as its container is
- // not null, walk up to its container and offset by the container's offset
- // from origin, the container's scroll position if any, and apply the
- // container's transform. Do this until you reach the root of the tree.
- virtual void GetRelativeBounds(AXObject** out_container,
- FloatRect& out_bounds_in_container,
- SkMatrix44& out_container_transform) const;
-
- // Get the bounds in frame-relative coordinates as a LayoutRect.
- LayoutRect GetBoundsInFrameCoordinates() const;
-
- // Explicitly set an object's bounding rect and offset container.
- void SetElementRect(LayoutRect r, AXObject* container) {
- explicit_element_rect_ = r;
- explicit_container_id_ = container->AxObjectID();
- }
-
- // Hit testing.
- // Called on the root AX object to return the deepest available element.
- virtual AXObject* AccessibilityHitTest(const IntPoint&) const { return 0; }
- // Called on the AX object after the layout tree determines which is the right
- // AXLayoutObject.
- virtual AXObject* ElementAccessibilityHitTest(const IntPoint&) const;
-
- // High-level accessibility tree access. Other modules should only use these
- // functions.
- const AXObjectVector& Children();
- AXObject* ParentObject() const;
- AXObject* ParentObjectIfExists() const;
- virtual AXObject* ComputeParent() const = 0;
- virtual AXObject* ComputeParentIfExists() const { return 0; }
- AXObject* CachedParentObject() const { return parent_; }
- AXObject* ParentObjectUnignored() const;
-
- // Low-level accessibility tree exploration, only for use within the
- // accessibility module.
- virtual AXObject* RawFirstChild() const { return 0; }
- virtual AXObject* RawNextSibling() const { return 0; }
- virtual void AddChildren() {}
- virtual bool CanHaveChildren() const { return true; }
- bool HasChildren() const { return have_children_; }
- virtual void UpdateChildrenIfNecessary();
- virtual bool NeedsToUpdateChildren() const { return false; }
- virtual void SetNeedsToUpdateChildren() {}
- virtual void ClearChildren();
- virtual void DetachFromParent() { parent_ = 0; }
- virtual AXObject* ScrollBar(AccessibilityOrientation) { return 0; }
-
- // Properties of the object's owning document or page.
- virtual double EstimatedLoadingProgress() const { return 0; }
-
- // DOM and layout tree access.
- virtual Node* GetNode() const { return 0; }
- virtual LayoutObject* GetLayoutObject() const { return 0; }
- virtual Document* GetDocument() const;
- virtual FrameView* DocumentFrameView() const;
- virtual Element* AnchorElement() const { return 0; }
- virtual Element* ActionElement() const { return 0; }
- String Language() const;
- bool HasAttribute(const QualifiedName&) const;
- const AtomicString& GetAttribute(const QualifiedName&) const;
-
- // Methods that retrieve or manipulate the current selection.
-
- // Get the current selection from anywhere in the accessibility tree.
- virtual AXRange Selection() const { return AXRange(); }
- // Gets only the start and end offsets of the selection computed using the
- // current object as the starting point. Returns a null selection if there is
- // no selection in the subtree rooted at this object.
- virtual AXRange SelectionUnderObject() const { return AXRange(); }
- virtual void SetSelection(const AXRange&) {}
-
- // Scrollable containers.
- bool IsScrollableContainer() const;
- IntPoint GetScrollOffset() const;
- IntPoint MinimumScrollOffset() const;
- IntPoint MaximumScrollOffset() const;
- void SetScrollOffset(const IntPoint&) const;
-
- // If this object itself scrolls, return its ScrollableArea.
- virtual ScrollableArea* GetScrollableAreaIfScrollable() const { return 0; }
-
- // Modify or take an action on an object.
- virtual void Increment() {}
- virtual void Decrement() {}
- bool PerformDefaultAction() { return Press(); }
- virtual bool Press();
- // Make this object visible by scrolling as many nested scrollable views as
- // needed.
- void ScrollToMakeVisible() const;
- // Same, but if the whole object can't be made visible, try for this subrect,
- // in local coordinates.
- void ScrollToMakeVisibleWithSubFocus(const IntRect&) const;
- // Scroll this object to a given point in global coordinates of the top-level
- // window.
- void ScrollToGlobalPoint(const IntPoint&) const;
- virtual void SetFocused(bool) {}
- virtual void SetSelected(bool) {}
- virtual void SetSequentialFocusNavigationStartingPoint();
- virtual void SetValue(const String&) {}
- virtual void SetValue(float) {}
-
- // Notifications that this object may have changed.
- virtual void ChildrenChanged() {}
- virtual void HandleActiveDescendantChanged() {}
- virtual void HandleAriaExpandedChanged() {}
- void NotifyIfIgnoredValueChanged();
- virtual void SelectionChanged();
- virtual void TextChanged() {}
- virtual void UpdateAccessibilityRole() {}
-
- // Text metrics. Most of these should be deprecated, needs major cleanup.
- virtual VisiblePosition VisiblePositionForIndex(int) const {
- return VisiblePosition();
- }
- int LineForPosition(const VisiblePosition&) const;
- virtual int Index(const VisiblePosition&) const { return -1; }
- virtual void LineBreaks(Vector<int>&) const {}
-
- // Static helper functions.
- static bool IsARIAControl(AccessibilityRole);
- static bool IsARIAInput(AccessibilityRole);
- static AccessibilityRole AriaRoleToWebCoreRole(const String&);
- static const AtomicString& RoleName(AccessibilityRole);
- static const AtomicString& InternalRoleName(AccessibilityRole);
- static bool IsInsideFocusableElementOrARIAWidget(const Node&);
-
- protected:
- AXID id_;
- AXObjectVector children_;
- mutable bool have_children_;
- AccessibilityRole role_;
- AXObjectInclusion last_known_is_ignored_value_;
- LayoutRect explicit_element_rect_;
- AXID explicit_container_id_;
-
- // Used only inside textAlternative():
- static String CollapseWhitespace(const String&);
- static String RecursiveTextAlternative(const AXObject&,
- bool in_aria_labelled_by_traversal,
- AXObjectSet& visited);
- bool IsHiddenForTextAlternativeCalculation() const;
- String AriaTextAlternative(bool recursive,
- bool in_aria_labelled_by_traversal,
- AXObjectSet& visited,
- AXNameFrom&,
- AXRelatedObjectVector*,
- NameSources*,
- bool* found_text_alternative) const;
- String TextFromElements(bool in_aria_labelled_by_traversal,
- AXObjectSet& visited,
- HeapVector<Member<Element>>& elements,
- AXRelatedObjectVector* related_objects) const;
- void TokenVectorFromAttribute(Vector<String>&, const QualifiedName&) const;
- void ElementsFromAttribute(HeapVector<Member<Element>>& elements,
- const QualifiedName&) const;
- void AriaLabelledbyElementVector(HeapVector<Member<Element>>& elements) const;
- String TextFromAriaLabelledby(AXObjectSet& visited,
- AXRelatedObjectVector* related_objects) const;
- String TextFromAriaDescribedby(AXRelatedObjectVector* related_objects) const;
-
- virtual const AXObject* InheritsPresentationalRoleFrom() const { return 0; }
-
- virtual bool NameFromContents() const;
-
- AccessibilityRole ButtonRoleType() const;
-
- virtual LayoutObject* LayoutObjectForRelativeBounds() const {
- return nullptr;
- }
-
- mutable Member<AXObject> parent_;
-
- // The following cached attribute values (the ones starting with m_cached*)
- // are only valid if m_lastModificationCount matches
- // AXObjectCacheImpl::modificationCount().
- mutable int last_modification_count_;
- mutable RGBA32 cached_background_color_;
- mutable bool cached_is_ignored_ : 1;
- mutable bool cached_is_inert_or_aria_hidden_ : 1;
- mutable bool cached_is_descendant_of_leaf_node_ : 1;
- mutable bool cached_is_descendant_of_disabled_node_ : 1;
- mutable bool cached_has_inherited_presentational_role_ : 1;
- mutable bool cached_is_presentational_child_ : 1;
- mutable bool cached_ancestor_exposes_active_descendant_ : 1;
- mutable Member<AXObject> cached_live_region_root_;
-
- Member<AXObjectCacheImpl> ax_object_cache_;
-
- // Updates the cached attribute values. This may be recursive, so to prevent
- // deadlocks,
- // functions called here may only search up the tree (ancestors), not down.
- void UpdateCachedAttributeValuesIfNeeded() const;
-
- private:
- static bool IsNativeInputInMixedState(const Node*);
- static bool IncludesARIAWidgetRole(const String&);
- static bool HasInteractiveARIAAttribute(const Element&);
-
- static unsigned number_of_live_ax_objects_;
-};
-
-#define DEFINE_AX_OBJECT_TYPE_CASTS(thisType, predicate) \
- DEFINE_TYPE_CASTS(thisType, AXObject, object, object->predicate, \
- object.predicate)
-
-} // namespace blink
-
-#endif // AXObject_h

Powered by Google App Engine
This is Rietveld 408576698