diff -r 4f2f89ce4247 -r 303757a437d3 WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp --- a/WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp Fri Sep 17 09:02:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,682 +0,0 @@ -/* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. - * Copyright (C) 2009 Jan Michael Alonzo - * - * 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. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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 INC. 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. - */ - -#include "config.h" -#include "AccessibilityUIElement.h" -#include "GOwnPtr.h" -#include "GRefPtr.h" - -#include -#include - -#include -#include - - -AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element) - : m_element(element) -{ -} - -AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other) - : m_element(other.m_element) -{ -} - -AccessibilityUIElement::~AccessibilityUIElement() -{ -} - -void AccessibilityUIElement::getLinkedUIElements(Vector& elements) -{ - // FIXME: implement -} - -void AccessibilityUIElement::getDocumentLinks(Vector&) -{ - // FIXME: implement -} - -void AccessibilityUIElement::getChildren(Vector& children) -{ - int count = childrenCount(); - for (int i = 0; i < count; i++) { - AtkObject* child = atk_object_ref_accessible_child(ATK_OBJECT(m_element), i); - children.append(AccessibilityUIElement(child)); - } -} - -void AccessibilityUIElement::getChildrenWithRange(Vector& elementVector, unsigned start, unsigned end) -{ - for (unsigned i = start; i < end; i++) { - AtkObject* child = atk_object_ref_accessible_child(ATK_OBJECT(m_element), i); - elementVector.append(AccessibilityUIElement(child)); - } -} - -int AccessibilityUIElement::rowCount() -{ - if (!m_element) - return 0; - - ASSERT(ATK_IS_TABLE(m_element)); - - return atk_table_get_n_rows(ATK_TABLE(m_element)); -} - -int AccessibilityUIElement::columnCount() -{ - if (!m_element) - return 0; - - ASSERT(ATK_IS_TABLE(m_element)); - - return atk_table_get_n_columns(ATK_TABLE(m_element)); -} - -int AccessibilityUIElement::childrenCount() -{ - if (!m_element) - return 0; - - ASSERT(ATK_IS_OBJECT(m_element)); - - return atk_object_get_n_accessible_children(ATK_OBJECT(m_element)); -} - -AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y) -{ - // FIXME: implement - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned index) -{ - // FIXME: implement - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index) -{ - Vector children; - getChildrenWithRange(children, index, index + 1); - - if (children.size() == 1) - return children.at(0); - - return 0; -} - -unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element) -{ - // FIXME: implement - return 0; -} - -gchar* attributeSetToString(AtkAttributeSet* attributeSet) -{ - GString* str = g_string_new(0); - for (GSList* attributes = attributeSet; attributes; attributes = attributes->next) { - AtkAttribute* attribute = static_cast(attributes->data); - g_string_append(str, g_strconcat(attribute->name, ":", attribute->value, NULL)); - if (attributes->next) - g_string_append(str, ", "); - } - - return g_string_free(str, FALSE); -} - -JSStringRef AccessibilityUIElement::allAttributes() -{ - return JSStringCreateWithUTF8CString(attributeSetToString(atk_object_get_attributes(ATK_OBJECT(m_element)))); -} - -JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfDocumentLinks() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -AccessibilityUIElement AccessibilityUIElement::titleUIElement() -{ - // FIXME: implement - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::parentElement() -{ - ASSERT(m_element); - AtkObject* parent = atk_object_get_parent(ATK_OBJECT(m_element)); - - return parent ? AccessibilityUIElement(parent) : 0; -} - -JSStringRef AccessibilityUIElement::attributesOfChildren() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::parameterizedAttributeNames() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::role() -{ - AtkRole role = atk_object_get_role(ATK_OBJECT(m_element)); - - if (!role) - return JSStringCreateWithCharacters(0, 0); - - const gchar* roleName = atk_role_get_name(role); - GOwnPtr axRole(g_strdup_printf("AXRole: %s", roleName)); - - return JSStringCreateWithUTF8CString(axRole.get()); -} - -JSStringRef AccessibilityUIElement::subrole() -{ - return 0; -} - -JSStringRef AccessibilityUIElement::roleDescription() -{ - return 0; -} - -JSStringRef AccessibilityUIElement::title() -{ - const gchar* name = atk_object_get_name(ATK_OBJECT(m_element)); - - if (!name) - return JSStringCreateWithCharacters(0, 0); - - GOwnPtr axTitle(g_strdup_printf("AXTitle: %s", name)); - - return JSStringCreateWithUTF8CString(axTitle.get()); -} - -JSStringRef AccessibilityUIElement::description() -{ - const gchar* description = atk_object_get_description(ATK_OBJECT(m_element)); - - if (!description) - return JSStringCreateWithCharacters(0, 0); - - GOwnPtr axDesc(g_strdup_printf("AXDescription: %s", description)); - - return JSStringCreateWithUTF8CString(axDesc.get()); -} - -JSStringRef AccessibilityUIElement::stringValue() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::language() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::helpText() const -{ - return 0; -} - -double AccessibilityUIElement::x() -{ - int x, y; - - atk_component_get_position(ATK_COMPONENT(m_element), &x, &y, ATK_XY_SCREEN); - - return x; -} - -double AccessibilityUIElement::y() -{ - int x, y; - - atk_component_get_position(ATK_COMPONENT(m_element), &x, &y, ATK_XY_SCREEN); - - return y; -} - -double AccessibilityUIElement::width() -{ - int width, height; - - atk_component_get_size(ATK_COMPONENT(m_element), &width, &height); - - return width; -} - -double AccessibilityUIElement::height() -{ - int width, height; - - atk_component_get_size(ATK_COMPONENT(m_element), &width, &height); - - return height; -} - -double AccessibilityUIElement::clickPointX() -{ - return 0.f; -} - -double AccessibilityUIElement::clickPointY() -{ - return 0.f; -} - -JSStringRef AccessibilityUIElement::orientation() const -{ - return 0; -} - -double AccessibilityUIElement::intValue() const -{ - GValue value = { 0, { { 0 } } }; - - if (!ATK_IS_VALUE(m_element)) - return 0.0f; - - atk_value_get_current_value(ATK_VALUE(m_element), &value); - - if (G_VALUE_HOLDS_DOUBLE(&value)) - return g_value_get_double(&value); - else if (G_VALUE_HOLDS_INT(&value)) - return static_cast(g_value_get_int(&value)); - else - return 0.0f; -} - -double AccessibilityUIElement::minValue() -{ - GValue value = { 0, { { 0 } } }; - - if (!ATK_IS_VALUE(m_element)) - return 0.0f; - - atk_value_get_minimum_value(ATK_VALUE(m_element), &value); - - if (G_VALUE_HOLDS_DOUBLE(&value)) - return g_value_get_double(&value); - else if (G_VALUE_HOLDS_INT(&value)) - return static_cast(g_value_get_int(&value)); - else - return 0.0f; -} - -double AccessibilityUIElement::maxValue() -{ - GValue value = { 0, { { 0 } } }; - - if (!ATK_IS_VALUE(m_element)) - return 0.0f; - - atk_value_get_maximum_value(ATK_VALUE(m_element), &value); - - if (G_VALUE_HOLDS_DOUBLE(&value)) - return g_value_get_double(&value); - else if (G_VALUE_HOLDS_INT(&value)) - return static_cast(g_value_get_int(&value)); - else - return 0.0f; -} - -JSStringRef AccessibilityUIElement::valueDescription() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -bool AccessibilityUIElement::isEnabled() -{ - // FIXME: implement - return false; -} - - -int AccessibilityUIElement::insertionPointLineNumber() -{ - // FIXME: implement - return 0; -} - -bool AccessibilityUIElement::isActionSupported(JSStringRef action) -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isRequired() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isSelected() const -{ - if (!ATK_IS_OBJECT(m_element)) - return false; - - GRefPtr stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element))); - gboolean isSelected = atk_state_set_contains_state(stateSet.get(), ATK_STATE_SELECTED); - - return isSelected; -} - -int AccessibilityUIElement::hierarchicalLevel() const -{ - // FIXME: implement - return 0; -} - -bool AccessibilityUIElement::ariaIsGrabbed() const -{ - return false; -} - -JSStringRef AccessibilityUIElement::ariaDropEffects() const -{ - return 0; -} - -bool AccessibilityUIElement::isExpanded() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isChecked() const -{ - return intValue(); -} - -JSStringRef AccessibilityUIElement::attributesOfColumnHeaders() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfRowHeaders() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfColumns() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfRows() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfVisibleCells() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::attributesOfHeader() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -int AccessibilityUIElement::indexInTable() -{ - // FIXME: implement - return 0; -} - -JSStringRef AccessibilityUIElement::rowIndexRange() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::columnIndexRange() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -int AccessibilityUIElement::lineForIndex(int) -{ - // FIXME: implement - return 0; -} - -JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length) -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::stringForRange(unsigned, unsigned) -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned column, unsigned row) -{ - // FIXME: implement - return 0; -} - -JSStringRef AccessibilityUIElement::selectedTextRange() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length) -{ - // FIXME: implement -} - -JSStringRef AccessibilityUIElement::stringAttributeValue(JSStringRef attribute) -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute) -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute) -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute) -{ - return false; -} - -void AccessibilityUIElement::increment() -{ - // FIXME: implement -} - -void AccessibilityUIElement::decrement() -{ - // FIXME: implement -} - -void AccessibilityUIElement::press() -{ - // FIXME: implement -} - -void AccessibilityUIElement::showMenu() -{ - // FIXME: implement -} - -AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned index) -{ - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index) -{ - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index) -{ - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned index) -{ - return 0; -} - -AccessibilityUIElement AccessibilityUIElement::disclosedByRow() -{ - return 0; -} - -JSStringRef AccessibilityUIElement::accessibilityValue() const -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -JSStringRef AccessibilityUIElement::documentEncoding() -{ - AtkRole role = atk_object_get_role(ATK_OBJECT(m_element)); - if (role != ATK_ROLE_DOCUMENT_FRAME) - return JSStringCreateWithCharacters(0, 0); - - return JSStringCreateWithUTF8CString(atk_document_get_attribute_value(ATK_DOCUMENT(m_element), "Encoding")); -} - -JSStringRef AccessibilityUIElement::documentURI() -{ - AtkRole role = atk_object_get_role(ATK_OBJECT(m_element)); - if (role != ATK_ROLE_DOCUMENT_FRAME) - return JSStringCreateWithCharacters(0, 0); - - return JSStringCreateWithUTF8CString(atk_document_get_attribute_value(ATK_DOCUMENT(m_element), "URI")); -} - -JSStringRef AccessibilityUIElement::url() -{ - // FIXME: implement - return JSStringCreateWithCharacters(0, 0); -} - -bool AccessibilityUIElement::addNotificationListener(JSObjectRef functionCallback) -{ - // FIXME: implement - return false; -} - -void AccessibilityUIElement::removeNotificationListener() -{ - // FIXME: implement -} - -bool AccessibilityUIElement::isSelectable() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isMultiSelectable() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isVisible() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isOffScreen() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::isCollapsed() const -{ - // FIXME: implement - return false; -} - -bool AccessibilityUIElement::hasPopup() const -{ - // FIXME: implement - return false; -} - -void AccessibilityUIElement::takeFocus() -{ - // FIXME: implement -} - -void AccessibilityUIElement::takeSelection() -{ - // FIXME: implement -} - -void AccessibilityUIElement::addSelection() -{ - // FIXME: implement -} - -void AccessibilityUIElement::removeSelection() -{ - // FIXME: implement -}