| /* |
| * Copyright (C) 2009 Google Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * 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. |
| * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT |
| * OWNER OR 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 WebAccessibilityObject_h |
| #define WebAccessibilityObject_h |
| |
| #include "../../../Platform/chromium/public/WebCommon.h" |
| #include "../../../Platform/chromium/public/WebPrivatePtr.h" |
| #include "../../../Platform/chromium/public/WebVector.h" |
| #include "WebAccessibilityRole.h" |
| |
| #if WEBKIT_IMPLEMENTATION |
| namespace WTF { template <typename T> class PassRefPtr; } |
| #endif |
| |
| namespace WebCore { class AccessibilityObject; } |
| |
| namespace WebKit { |
| |
| class WebNode; |
| class WebDocument; |
| class WebString; |
| class WebURL; |
| struct WebPoint; |
| struct WebRect; |
| |
| // A container for passing around a reference to AccessibilityObject. |
| class WebAccessibilityObject { |
| public: |
| ~WebAccessibilityObject() { reset(); } |
| |
| WebAccessibilityObject() { } |
| WebAccessibilityObject(const WebAccessibilityObject& o) { assign(o); } |
| WebAccessibilityObject& operator=(const WebAccessibilityObject& o) |
| { |
| assign(o); |
| return *this; |
| } |
| |
| WEBKIT_EXPORT void reset(); |
| WEBKIT_EXPORT void assign(const WebAccessibilityObject&); |
| WEBKIT_EXPORT bool equals(const WebAccessibilityObject&) const; |
| |
| bool isNull() const { return m_private.isNull(); } |
| // isDetached also checks for null, so it's safe to just call isDetached. |
| WEBKIT_EXPORT bool isDetached() const; |
| |
| // Static methods for enabling accessibility. |
| WEBKIT_EXPORT static void enableAccessibility(); |
| WEBKIT_EXPORT static bool accessibilityEnabled(); |
| |
| WEBKIT_EXPORT void startCachingComputedObjectAttributesUntilTreeMutates(); |
| WEBKIT_EXPORT void stopCachingComputedObjectAttributes(); |
| |
| WEBKIT_EXPORT int axID() const; |
| |
| // Update the underlying tree, and return true if this object is |
| // still valid (not detached). Note that calling this method |
| // can cause other WebAccessibilityObjects to become invalid, too, |
| // so always call isDetached if updateBackingStoreAndCheckValidity |
| // has been called on any object, or if any other WebCore code has run. |
| WEBKIT_EXPORT bool updateBackingStoreAndCheckValidity(); |
| |
| WEBKIT_EXPORT WebString accessibilityDescription() const; |
| WEBKIT_EXPORT unsigned childCount() const; |
| |
| WEBKIT_EXPORT WebAccessibilityObject childAt(unsigned) const; |
| WEBKIT_EXPORT WebAccessibilityObject firstChild() const; |
| WEBKIT_EXPORT WebAccessibilityObject focusedChild() const; |
| WEBKIT_EXPORT WebAccessibilityObject lastChild() const; |
| WEBKIT_EXPORT WebAccessibilityObject nextSibling() const; |
| WEBKIT_EXPORT WebAccessibilityObject parentObject() const; |
| WEBKIT_EXPORT WebAccessibilityObject previousSibling() const; |
| |
| WEBKIT_EXPORT bool isAnchor() const; |
| WEBKIT_EXPORT bool isAriaReadOnly() const; |
| WEBKIT_EXPORT bool isButtonStateMixed() const; |
| WEBKIT_EXPORT bool isChecked() const; |
| WEBKIT_EXPORT bool isCollapsed() const; |
| WEBKIT_EXPORT bool isControl() const; |
| WEBKIT_EXPORT bool isEnabled() const; |
| WEBKIT_EXPORT bool isFocused() const; |
| WEBKIT_EXPORT bool isHovered() const; |
| WEBKIT_EXPORT bool isIndeterminate() const; |
| WEBKIT_EXPORT bool isLinked() const; |
| WEBKIT_EXPORT bool isLoaded() const; |
| WEBKIT_EXPORT bool isMultiSelectable() const; |
| WEBKIT_EXPORT bool isOffScreen() const; |
| WEBKIT_EXPORT bool isPasswordField() const; |
| WEBKIT_EXPORT bool isPressed() const; |
| WEBKIT_EXPORT bool isReadOnly() const; |
| WEBKIT_EXPORT bool isRequired() const; |
| WEBKIT_EXPORT bool isSelected() const; |
| WEBKIT_EXPORT bool isSelectedOptionActive() const; |
| WEBKIT_EXPORT bool isVertical() const; |
| WEBKIT_EXPORT bool isVisible() const; |
| WEBKIT_EXPORT bool isVisited() const; |
| |
| WEBKIT_EXPORT WebString accessKey() const; |
| WEBKIT_EXPORT bool ariaHasPopup() const; |
| WEBKIT_EXPORT bool ariaLiveRegionAtomic() const; |
| WEBKIT_EXPORT bool ariaLiveRegionBusy() const; |
| WEBKIT_EXPORT WebString ariaLiveRegionRelevant() const; |
| WEBKIT_EXPORT WebString ariaLiveRegionStatus() const; |
| WEBKIT_EXPORT WebRect boundingBoxRect() const; |
| WEBKIT_EXPORT bool canvasHasFallbackContent() const; |
| WEBKIT_EXPORT WebPoint clickPoint() const; |
| WEBKIT_EXPORT void colorValue(int& r, int& g, int& b) const; |
| WEBKIT_EXPORT double estimatedLoadingProgress() const; |
| WEBKIT_EXPORT WebString helpText() const; |
| WEBKIT_EXPORT int headingLevel() const; |
| WEBKIT_EXPORT int hierarchicalLevel() const; |
| WEBKIT_EXPORT WebAccessibilityObject hitTest(const WebPoint&) const; |
| WEBKIT_EXPORT WebString keyboardShortcut() const; |
| WEBKIT_EXPORT WebAccessibilityRole roleValue() const; |
| WEBKIT_EXPORT unsigned selectionEnd() const; |
| WEBKIT_EXPORT unsigned selectionEndLineNumber() const; |
| WEBKIT_EXPORT unsigned selectionStart() const; |
| WEBKIT_EXPORT unsigned selectionStartLineNumber() const; |
| WEBKIT_EXPORT WebString stringValue() const; |
| WEBKIT_EXPORT WebString title() const; |
| WEBKIT_EXPORT WebAccessibilityObject titleUIElement() const; |
| WEBKIT_EXPORT WebURL url() const; |
| |
| WEBKIT_EXPORT bool supportsRangeValue() const; |
| WEBKIT_EXPORT WebString valueDescription() const; |
| WEBKIT_EXPORT float valueForRange() const; |
| WEBKIT_EXPORT float maxValueForRange() const; |
| WEBKIT_EXPORT float minValueForRange() const; |
| |
| WEBKIT_EXPORT WebNode node() const; |
| WEBKIT_EXPORT WebDocument document() const; |
| WEBKIT_EXPORT bool hasComputedStyle() const; |
| WEBKIT_EXPORT WebString computedStyleDisplay() const; |
| WEBKIT_EXPORT bool accessibilityIsIgnored() const; |
| WEBKIT_EXPORT bool lineBreaks(WebVector<int>&) const; |
| |
| // Actions |
| WEBKIT_EXPORT WebString actionVerb() const; // The verb corresponding to performDefaultAction. |
| WEBKIT_EXPORT bool canDecrement() const; |
| WEBKIT_EXPORT bool canIncrement() const; |
| WEBKIT_EXPORT bool canPress() const; |
| WEBKIT_EXPORT bool canSetFocusAttribute() const; |
| WEBKIT_EXPORT bool canSetSelectedAttribute() const; |
| WEBKIT_EXPORT bool canSetValueAttribute() const; |
| WEBKIT_EXPORT bool performDefaultAction() const; |
| WEBKIT_EXPORT bool press() const; |
| WEBKIT_EXPORT bool increment() const; |
| WEBKIT_EXPORT bool decrement() const; |
| WEBKIT_EXPORT void setFocused(bool) const; |
| WEBKIT_EXPORT void setSelectedTextRange(int selectionStart, int selectionEnd) const; |
| |
| // For a table |
| WEBKIT_EXPORT unsigned columnCount() const; |
| WEBKIT_EXPORT unsigned rowCount() const; |
| WEBKIT_EXPORT WebAccessibilityObject cellForColumnAndRow(unsigned column, unsigned row) const; |
| |
| // For a table cell |
| WEBKIT_EXPORT unsigned cellColumnIndex() const; |
| WEBKIT_EXPORT unsigned cellColumnSpan() const; |
| WEBKIT_EXPORT unsigned cellRowIndex() const; |
| WEBKIT_EXPORT unsigned cellRowSpan() const; |
| |
| // Make this object visible by scrolling as many nested scrollable views as needed. |
| WEBKIT_EXPORT void scrollToMakeVisible() const; |
| // Same, but if the whole object can't be made visible, try for this subrect, in local coordinates. |
| WEBKIT_EXPORT void scrollToMakeVisibleWithSubFocus(const WebRect&) const; |
| // Scroll this object to a given point in global coordinates of the top-level window. |
| WEBKIT_EXPORT void scrollToGlobalPoint(const WebPoint&) const; |
| |
| #if WEBKIT_IMPLEMENTATION |
| WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>&); |
| WebAccessibilityObject& operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>&); |
| operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const; |
| #endif |
| |
| private: |
| WebPrivatePtr<WebCore::AccessibilityObject> m_private; |
| }; |
| |
| } // namespace WebKit |
| |
| #endif |