1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Redistribution and use in source and binary forms, with or without 5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * modification, are permitted provided that the following conditions are 6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * met: 7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Redistributions of source code must retain the above copyright 9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * notice, this list of conditions and the following disclaimer. 10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Redistributions in binary form must reproduce the above 11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * copyright notice, this list of conditions and the following disclaimer 12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * in the documentation and/or other materials provided with the 13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * distribution. 14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Neither the name of Google Inc. nor the names of its 15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * contributors may be used to endorse or promote products derived from 16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * this software without specific prior written permission. 17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block */ 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef AccessibilityUIElement_h 32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#define AccessibilityUIElement_h 33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "CppBoundClass.h" 35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "WebAccessibilityObject.h" 36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/Vector.h> 37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass AccessibilityUIElement : public CppBoundClass { 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic: 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block class Factory { 41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block public: 42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual ~Factory() { } 43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual AccessibilityUIElement* create(const WebKit::WebAccessibilityObject&) = 0; 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }; 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block AccessibilityUIElement(const WebKit::WebAccessibilityObject&, Factory*); 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual AccessibilityUIElement* getChildAtIndex(unsigned); 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool isRoot() const { return false; } 50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprotected: 52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const WebKit::WebAccessibilityObject& accessibilityObject() const { return m_accessibilityObject; } 53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Factory* factory() const { return m_factory; } 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprivate: 56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Bound methods and properties. 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void allAttributesCallback(const CppArgumentList&, CppVariant*); 58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfLinkedUIElementsCallback(const CppArgumentList&, CppVariant*); 59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfDocumentLinksCallback(const CppArgumentList&, CppVariant*); 60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfChildrenCallback(const CppArgumentList&, CppVariant*); 61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void parametrizedAttributeNamesCallback(const CppArgumentList&, CppVariant*); 62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void lineForIndexCallback(const CppArgumentList&, CppVariant*); 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void boundsForRangeCallback(const CppArgumentList&, CppVariant*); 64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void stringForRangeCallback(const CppArgumentList&, CppVariant*); 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void childAtIndexCallback(const CppArgumentList&, CppVariant*); 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void elementAtPointCallback(const CppArgumentList&, CppVariant*); 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfColumnHeadersCallback(const CppArgumentList&, CppVariant*); 68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfRowHeadersCallback(const CppArgumentList&, CppVariant*); 69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfColumnsCallback(const CppArgumentList&, CppVariant*); 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfRowsCallback(const CppArgumentList&, CppVariant*); 71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfVisibleCellsCallback(const CppArgumentList&, CppVariant*); 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributesOfHeaderCallback(const CppArgumentList&, CppVariant*); 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void indexInTableCallback(const CppArgumentList&, CppVariant*); 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void rowIndexRangeCallback(const CppArgumentList&, CppVariant*); 75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void columnIndexRangeCallback(const CppArgumentList&, CppVariant*); 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void cellForColumnAndRowCallback(const CppArgumentList&, CppVariant*); 77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void titleUIElementCallback(const CppArgumentList&, CppVariant*); 78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void setSelectedTextRangeCallback(const CppArgumentList&, CppVariant*); 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void attributeValueCallback(const CppArgumentList&, CppVariant*); 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void isAttributeSettableCallback(const CppArgumentList&, CppVariant*); 81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void isActionSupportedCallback(const CppArgumentList&, CppVariant*); 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void parentElementCallback(const CppArgumentList&, CppVariant*); 83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void incrementCallback(const CppArgumentList&, CppVariant*); 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void decrementCallback(const CppArgumentList&, CppVariant*); 85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void fallbackCallback(const CppArgumentList&, CppVariant*); 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void childrenCountGetterCallback(CppVariant*); 88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void descriptionGetterCallback(CppVariant*); 89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void isEnabledGetterCallback(CppVariant*); 90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void isSelectedGetterCallback(CppVariant*); 91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void roleGetterCallback(CppVariant*); 92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void titleGetterCallback(CppVariant*); 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_subrole; 95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_language; 96dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_x; 97dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_y; 98dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_width; 99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_height; 100dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_clickPointX; 101dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_clickPointY; 102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_intValue; 103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_minValue; 104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_maxValue; 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_childrenCount; 106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_insertionPointLineNumber; 107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_selectedTextRange; 108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_isRequired; 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block CppVariant m_valueDescription; 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebKit::WebAccessibilityObject m_accessibilityObject; 112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Factory* m_factory; 113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}; 114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass RootAccessibilityUIElement : public AccessibilityUIElement { 117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic: 118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block RootAccessibilityUIElement(const WebKit::WebAccessibilityObject&, Factory*); 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual AccessibilityUIElement* getChildAtIndex(unsigned); 121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool isRoot() const { return true; } 122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}; 123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 124dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 125dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// Provides simple lifetime management of the AccessibilityUIElement instances: 126dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// all AccessibilityUIElements ever created from the controller are stored in 127dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// a list and cleared explicitly. 128dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass AccessibilityUIElementList : public AccessibilityUIElement::Factory { 129dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic: 130dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block AccessibilityUIElementList() { } 131dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual ~AccessibilityUIElementList(); 132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void clear(); 134dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual AccessibilityUIElement* create(const WebKit::WebAccessibilityObject&); 135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block AccessibilityUIElement* createRoot(const WebKit::WebAccessibilityObject&); 136dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 137dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprivate: 138dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block typedef Vector<AccessibilityUIElement*> ElementList; 139dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ElementList m_elements; 140dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}; 141dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 142dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // AccessibilityUIElement_h 143