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