Title: [158742] trunk/Tools
Revision
158742
Author
[email protected]
Date
2013-11-06 05:55:36 -0800 (Wed, 06 Nov 2013)

Log Message

[ATK] Implement tables-related attributesOf*() functions for AccessibilityUIElement
https://bugs.webkit.org/show_bug.cgi?id=118969

Patch by Krzysztof Czech <[email protected]> on 2013-11-06
Reviewed by Mario Sanchez Prada.

Added missing implementation of attributesOfColumnHeaders, attributesOfRowHeaders, attributesOfVisibleCells.

* DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(AccessibilityUIElement::attributesOfChildren):
(AccessibilityUIElement::attributesOfColumnHeaders):
(AccessibilityUIElement::attributesOfRowHeaders):
(AccessibilityUIElement::attributesOfVisibleCells):
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::attributesOfChildren):
(WTR::AccessibilityUIElement::attributesOfColumnHeaders):
(WTR::AccessibilityUIElement::attributesOfRowHeaders):
(WTR::AccessibilityUIElement::attributesOfVisibleCells):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (158741 => 158742)


--- trunk/Tools/ChangeLog	2013-11-06 11:31:12 UTC (rev 158741)
+++ trunk/Tools/ChangeLog	2013-11-06 13:55:36 UTC (rev 158742)
@@ -1,3 +1,23 @@
+2013-11-06  Krzysztof Czech  <[email protected]>
+
+        [ATK] Implement tables-related attributesOf*() functions for AccessibilityUIElement
+        https://bugs.webkit.org/show_bug.cgi?id=118969
+
+        Reviewed by Mario Sanchez Prada.
+
+        Added missing implementation of attributesOfColumnHeaders, attributesOfRowHeaders, attributesOfVisibleCells.
+
+        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
+        (AccessibilityUIElement::attributesOfChildren):
+        (AccessibilityUIElement::attributesOfColumnHeaders):
+        (AccessibilityUIElement::attributesOfRowHeaders):
+        (AccessibilityUIElement::attributesOfVisibleCells):
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::attributesOfChildren):
+        (WTR::AccessibilityUIElement::attributesOfColumnHeaders):
+        (WTR::AccessibilityUIElement::attributesOfRowHeaders):
+        (WTR::AccessibilityUIElement::attributesOfVisibleCells):
+
 2013-11-05  Benjamin Poulain  <[email protected]>
 
         [WK2] Add a WebKit2 API for Geolocation's highAccuracy

Modified: trunk/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp (158741 => 158742)


--- trunk/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp	2013-11-06 11:31:12 UTC (rev 158741)
+++ trunk/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp	2013-11-06 13:55:36 UTC (rev 158742)
@@ -367,6 +367,56 @@
     return builder.toString();
 }
 
+static JSStringRef createStringWithAttributes(const Vector<AccessibilityUIElement>& elements)
+{
+    StringBuilder builder;
+
+    for (Vector<AccessibilityUIElement>::const_iterator it = elements.begin(); it != elements.end(); ++it) {
+        builder.append(attributesOfElement(const_cast<AccessibilityUIElement*>(it)));
+        builder.append("\n------------\n");
+    }
+
+    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+static Vector<AccessibilityUIElement> getRowHeaders(AtkTable* accessible)
+{
+    Vector<AccessibilityUIElement> rowHeaders;
+
+    int rowsCount = atk_table_get_n_rows(accessible);
+    for (int row = 0; row < rowsCount; ++row)
+        rowHeaders.append(AccessibilityUIElement(atk_table_get_row_header(accessible, row)));
+
+    return rowHeaders;
+}
+
+static Vector<AccessibilityUIElement> getColumnHeaders(AtkTable* accessible)
+{
+    Vector<AccessibilityUIElement> columnHeaders;
+
+    int columnsCount = atk_table_get_n_columns(accessible);
+    for (int column = 0; column < columnsCount; ++column)
+        columnHeaders.append(AccessibilityUIElement(atk_table_get_column_header(accessible, column)));
+
+    return columnHeaders;
+}
+
+static Vector<AccessibilityUIElement> getVisibleCells(AccessibilityUIElement* element)
+{
+    Vector<AccessibilityUIElement> visibleCells;
+
+    AtkTable* accessible = ATK_TABLE(element->platformUIElement());
+    int rowsCount = atk_table_get_n_rows(accessible);
+    int columnsCount = atk_table_get_n_columns(accessible);
+
+    for (int row = 0; row < rowsCount; ++row) {
+        for (int column = 0; column < columnsCount; ++column)
+            visibleCells.append(element->cellForColumnAndRow(column, row));
+    }
+
+    return visibleCells;
+}
+
 } // namespace
 
 JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
@@ -602,13 +652,7 @@
     Vector<AccessibilityUIElement> children;
     getChildren(children);
 
-    StringBuilder builder;
-    for (Vector<AccessibilityUIElement>::iterator it = children.begin(); it != children.end(); ++it) {
-        builder.append(attributesOfElement(it));
-        builder.append("\n------------\n");
-    }
-
-    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+    return createStringWithAttributes(children);
 }
 
 JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
@@ -937,14 +981,20 @@
 
 JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<AccessibilityUIElement> columnHeaders = getColumnHeaders(ATK_TABLE(m_element));
+    return createStringWithAttributes(columnHeaders);
 }
 
 JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<AccessibilityUIElement> rowHeaders = getRowHeaders(ATK_TABLE(m_element));
+    return createStringWithAttributes(rowHeaders);
 }
 
 JSStringRef AccessibilityUIElement::attributesOfColumns()
@@ -961,8 +1011,11 @@
 
 JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<AccessibilityUIElement> visibleCells = getVisibleCells(this);
+    return createStringWithAttributes(visibleCells);
 }
 
 JSStringRef AccessibilityUIElement::attributesOfHeader()

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (158741 => 158742)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2013-11-06 11:31:12 UTC (rev 158741)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2013-11-06 13:55:36 UTC (rev 158742)
@@ -432,6 +432,56 @@
     return builder.toString();
 }
 
+static JSRetainPtr<JSStringRef> createStringWithAttributes(const Vector<RefPtr<AccessibilityUIElement> >& elements)
+{
+    StringBuilder builder;
+
+    for (Vector<RefPtr<AccessibilityUIElement> >::const_iterator it = elements.begin(); it != elements.end(); ++it) {
+        builder.append(attributesOfElement(const_cast<AccessibilityUIElement*>(it->get())));
+        builder.append("\n------------\n");
+    }
+
+    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+static Vector<RefPtr<AccessibilityUIElement> > getRowHeaders(AtkTable* accessible)
+{
+    Vector<RefPtr<AccessibilityUIElement> > rowHeaders;
+
+    int rowsCount = atk_table_get_n_rows(accessible);
+    for (int row = 0; row < rowsCount; ++row)
+        rowHeaders.append(AccessibilityUIElement::create(atk_table_get_row_header(accessible, row)));
+
+    return rowHeaders;
+}
+
+static Vector<RefPtr<AccessibilityUIElement> > getColumnHeaders(AtkTable* accessible)
+{
+    Vector<RefPtr<AccessibilityUIElement> > columnHeaders;
+
+    int columnsCount = atk_table_get_n_columns(accessible);
+    for (int column = 0; column < columnsCount; ++column)
+        columnHeaders.append(AccessibilityUIElement::create(atk_table_get_column_header(accessible, column)));
+
+    return columnHeaders;
+}
+
+static Vector<RefPtr<AccessibilityUIElement> > getVisibleCells(AccessibilityUIElement* element)
+{
+    Vector<RefPtr<AccessibilityUIElement> > visibleCells;
+
+    AtkTable* accessible = ATK_TABLE(element->platformUIElement().get());
+    int rowsCount = atk_table_get_n_rows(accessible);
+    int columnsCount = atk_table_get_n_columns(accessible);
+
+    for (int row = 0; row < rowsCount; ++row) {
+        for (int column = 0; column < columnsCount; ++column)
+            visibleCells.append(element->cellForColumnAndRow(column, row));
+    }
+
+    return visibleCells;
+}
+
 } // namespace
 
 AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
@@ -631,13 +681,7 @@
     Vector<RefPtr<AccessibilityUIElement> > children;
     getChildren(children);
 
-    StringBuilder builder;
-    for (Vector<RefPtr<AccessibilityUIElement> >::iterator it = children.begin(); it != children.end(); ++it) {
-        builder.append(attributesOfElement(it->get()));
-        builder.append("\n------------\n");
-    }
-
-    return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+    return createStringWithAttributes(children);
 }
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::allAttributes()
@@ -1096,14 +1140,20 @@
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumnHeaders()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element.get()))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<RefPtr<AccessibilityUIElement> > columnHeaders = getColumnHeaders(ATK_TABLE(m_element.get()));
+    return createStringWithAttributes(columnHeaders);
 }
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRowHeaders()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element.get()))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<RefPtr<AccessibilityUIElement> > rowHeaders = getRowHeaders(ATK_TABLE(m_element.get()));
+    return createStringWithAttributes(rowHeaders);
 }
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumns()
@@ -1120,8 +1170,11 @@
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfVisibleCells()
 {
-    // FIXME: implement
-    return JSStringCreateWithCharacters(0, 0);
+    if (!ATK_IS_TABLE(m_element.get()))
+        return JSStringCreateWithCharacters(0, 0);
+
+    Vector<RefPtr<AccessibilityUIElement> > visibleCells = getVisibleCells(this);
+    return createStringWithAttributes(visibleCells);
 }
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfHeader()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to