1 /* 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 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. 12 * 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. 24 */ 25 26 #ifndef AccessibilityUIElement_h 27 #define AccessibilityUIElement_h 28 29 #include <JavaScriptCore/JSObjectRef.h> 30 #include <wtf/Vector.h> 31 32 #if PLATFORM(MAC) 33 #ifdef __OBJC__ 34 typedef id PlatformUIElement; 35 #else 36 typedef struct objc_object* PlatformUIElement; 37 #endif 38 #elif PLATFORM(WIN) 39 #undef _WINSOCKAPI_ 40 #define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h 41 42 #include <oleacc.h> 43 #include <WebCore/COMPtr.h> 44 45 typedef COMPtr<IAccessible> PlatformUIElement; 46 #else 47 typedef void* PlatformUIElement; 48 #endif 49 50 class AccessibilityUIElement { 51 public: 52 AccessibilityUIElement(PlatformUIElement); 53 AccessibilityUIElement(const AccessibilityUIElement&); 54 ~AccessibilityUIElement(); 55 platformUIElement()56 PlatformUIElement platformUIElement() { return m_element; } 57 58 static JSObjectRef makeJSAccessibilityUIElement(JSContextRef, const AccessibilityUIElement&); 59 60 void getLinkedUIElements(Vector<AccessibilityUIElement>&); 61 void getDocumentLinks(Vector<AccessibilityUIElement>&); 62 void getChildren(Vector<AccessibilityUIElement>&); 63 AccessibilityUIElement getChildAtIndex(unsigned); 64 AccessibilityUIElement titleUIElement(); 65 66 // Methods - platform-independent implementations 67 JSStringRef allAttributes(); 68 JSStringRef attributesOfLinkedUIElements(); 69 JSStringRef attributesOfDocumentLinks(); 70 JSStringRef attributesOfChildren(); 71 JSStringRef parameterizedAttributeNames(); 72 73 // Attributes - platform-independent implementations 74 JSStringRef role(); 75 JSStringRef title(); 76 JSStringRef description(); 77 double width(); 78 double height(); 79 double intValue(); 80 double minValue(); 81 double maxValue(); 82 int insertionPointLineNumber(); 83 JSStringRef selectedTextRange(); 84 bool supportsPressAction(); 85 86 // Table-specific attributes 87 JSStringRef attributesOfColumnHeaders(); 88 JSStringRef attributesOfRowHeaders(); 89 JSStringRef attributesOfColumns(); 90 JSStringRef attributesOfRows(); 91 JSStringRef attributesOfVisibleCells(); 92 JSStringRef attributesOfHeader(); 93 int indexInTable(); 94 JSStringRef rowIndexRange(); 95 JSStringRef columnIndexRange(); 96 97 // Parameterized attributes 98 int lineForIndex(int); 99 JSStringRef boundsForRange(unsigned location, unsigned length); 100 void setSelectedTextRange(unsigned location, unsigned length); 101 102 // Table-specific 103 AccessibilityUIElement cellForColumnAndRow(unsigned column, unsigned row); 104 105 private: 106 static JSClassRef getJSClass(); 107 108 PlatformUIElement m_element; 109 }; 110 111 #endif // AccessibilityUIElement_h 112