2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef AccessibilityUIElement_h
27 #define AccessibilityUIElement_h
29 #include <JavaScriptCore/JSObjectRef.h>
30 #include <wtf/Vector.h>
34 typedef id PlatformUIElement;
36 typedef struct objc_object* PlatformUIElement;
40 #define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
43 #include <WebCore/COMPtr.h>
45 typedef COMPtr<IAccessible> PlatformUIElement;
47 typedef void* PlatformUIElement;
50 class AccessibilityUIElement {
52 AccessibilityUIElement(PlatformUIElement);
53 AccessibilityUIElement(const AccessibilityUIElement&);
54 ~AccessibilityUIElement();
56 PlatformUIElement platformUIElement() { return m_element; }
58 static JSObjectRef makeJSAccessibilityUIElement(JSContextRef, const AccessibilityUIElement&);
60 void getLinkedUIElements(Vector<AccessibilityUIElement>&);
61 void getDocumentLinks(Vector<AccessibilityUIElement>&);
62 void getChildren(Vector<AccessibilityUIElement>&);
63 void getChildrenWithRange(Vector<AccessibilityUIElement>&, unsigned location, unsigned length);
65 AccessibilityUIElement getChildAtIndex(unsigned);
66 AccessibilityUIElement titleUIElement();
67 AccessibilityUIElement parentElement();
69 // Methods - platform-independent implementations
70 JSStringRef allAttributes();
71 JSStringRef attributesOfLinkedUIElements();
72 JSStringRef attributesOfDocumentLinks();
73 JSStringRef attributesOfChildren();
74 JSStringRef parameterizedAttributeNames();
76 // Attributes - platform-independent implementations
77 JSStringRef attributeValue(JSStringRef attribute);
78 bool isAttributeSettable(JSStringRef attribute);
81 JSStringRef description();
87 int insertionPointLineNumber();
88 JSStringRef selectedTextRange();
89 bool supportsPressAction();
91 // Table-specific attributes
92 JSStringRef attributesOfColumnHeaders();
93 JSStringRef attributesOfRowHeaders();
94 JSStringRef attributesOfColumns();
95 JSStringRef attributesOfRows();
96 JSStringRef attributesOfVisibleCells();
97 JSStringRef attributesOfHeader();
99 JSStringRef rowIndexRange();
100 JSStringRef columnIndexRange();
102 // Parameterized attributes
103 int lineForIndex(int);
104 JSStringRef boundsForRange(unsigned location, unsigned length);
105 void setSelectedTextRange(unsigned location, unsigned length);
108 AccessibilityUIElement cellForColumnAndRow(unsigned column, unsigned row);
111 static JSClassRef getJSClass();
113 PlatformUIElement m_element;
116 #endif // AccessibilityUIElement_h