Changeset 61884 in webkit


Ignore:
Timestamp:
Jun 25, 2010 1:09:25 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-06-25 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Xan Lopez.

[Gtk] Implement atk_table_get_column_header
https://bugs.webkit.org/show_bug.cgi?id=30896

Implemented get_column_header and modified get_row_header
accordingly to keep them both coherent among themselves.
Based on a previous patch by Joanmarie Diggs.

  • accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: (webkit_accessible_table_get_column_header): (webkit_accessible_table_get_row_header):

2010-06-25 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Xan Lopez.

[Gtk] Implement atk_table_get_column_header
https://bugs.webkit.org/show_bug.cgi?id=30896

Added new test to check whether the implementation of
get_column_headers() and get_row_headers() works ok.

  • tests/testatk.c: (testWebkitAtkGetHeadersInTable): (main):
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r61881 r61884  
     12010-06-25  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [Gtk] Implement atk_table_get_column_header
     6        https://bugs.webkit.org/show_bug.cgi?id=30896
     7
     8        Implemented get_column_header and modified get_row_header
     9        accordingly to keep them both coherent among themselves.
     10        Based on a previous patch by Joanmarie Diggs.
     11
     12        * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
     13        (webkit_accessible_table_get_column_header):
     14        (webkit_accessible_table_get_row_header):
     15
    1162010-06-25  Martin Robinson  <mrobinson@igalia.com>
    217
  • trunk/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp

    r61730 r61884  
    14491449static AtkObject* webkit_accessible_table_get_column_header(AtkTable* table, gint column)
    14501450{
    1451     // FIXME: This needs to be implemented.
    1452     notImplemented();
     1451    AccessibilityObject* accTable = core(table);
     1452    if (accTable->isAccessibilityRenderObject()) {
     1453        AccessibilityObject::AccessibilityChildrenVector allColumnHeaders;
     1454        static_cast<AccessibilityTable*>(accTable)->columnHeaders(allColumnHeaders);
     1455        unsigned columnCount = allColumnHeaders.size();
     1456        for (unsigned k = 0; k < columnCount; ++k) {
     1457            pair<int, int> columnRange;
     1458            AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allColumnHeaders.at(k).get());
     1459            cell->columnIndexRange(columnRange);
     1460            if (columnRange.first <= column && column < columnRange.first + columnRange.second)
     1461                return allColumnHeaders[k]->wrapper();
     1462        }
     1463    }
    14531464    return 0;
    14541465}
     
    14601471        AccessibilityObject::AccessibilityChildrenVector allRowHeaders;
    14611472        static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders);
    1462 
    14631473        unsigned rowCount = allRowHeaders.size();
    14641474        for (unsigned k = 0; k < rowCount; ++k) {
    1465             AccessibilityObject* rowObject = allRowHeaders[k]->parentObject();
    1466             if (static_cast<AccessibilityTableRow*>(rowObject)->rowIndex() == row)
     1475            pair<int, int> rowRange;
     1476            AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allRowHeaders.at(k).get());
     1477            cell->rowIndexRange(rowRange);
     1478            if (rowRange.first <= row && row < rowRange.first + rowRange.second)
    14671479                return allRowHeaders[k]->wrapper();
    14681480        }
  • trunk/WebKit/gtk/ChangeLog

    r61881 r61884  
     12010-06-25  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [Gtk] Implement atk_table_get_column_header
     6        https://bugs.webkit.org/show_bug.cgi?id=30896
     7
     8        Added new test to check whether the implementation of
     9        get_column_headers() and get_row_headers() works ok.
     10
     11        * tests/testatk.c:
     12        (testWebkitAtkGetHeadersInTable):
     13        (main):
     14
    1152010-06-25  Martin Robinson  <mrobinson@igalia.com>
    216
  • trunk/WebKit/gtk/tests/testatk.c

    r56036 r61884  
    4141static const char* contentsInTable = "<html><body><table><tr><td>foo</td><td>bar</td></tr></table></body></html>";
    4242
     43static const char* contentsInTableWithHeaders = "<html><body><table><tr><th>foo</th><th>bar</th><th colspan='2'>baz</th></tr><tr><th>qux</th><td>1</td><td>2</td><td>3</td></tr><tr><th rowspan='2'>quux</th><td>4</td><td>5</td><td>6</td></tr><tr><td>6</td><td>7</td><td>8</td></tr><tr><th>corge</th><td>9</td><td>10</td><td>11</td></tr></table><table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table></body></html>";
     44
    4345static gboolean bail_out(GMainLoop* loop)
    4446{
     
    478480
    479481    g_object_unref(obj);
     482    g_object_unref(webView);
     483}
     484
     485static void testWebkitAtkGetHeadersInTable(void)
     486{
     487    WebKitWebView* webView;
     488    AtkObject* axWebView;
     489    AtkObject* table;
     490    AtkObject* colHeader;
     491    AtkObject* rowHeader;
     492    GMainLoop* loop;
     493
     494    webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
     495    g_object_ref_sink(webView);
     496    GtkAllocation alloc = { 0, 0, 800, 600 };
     497    gtk_widget_size_allocate(GTK_WIDGET(webView), &alloc);
     498    webkit_web_view_load_string(webView, contentsInTableWithHeaders, NULL, NULL, NULL);
     499    loop = g_main_loop_new(NULL, TRUE);
     500
     501    g_timeout_add(100, (GSourceFunc)bail_out, loop);
     502    g_main_loop_run(loop);
     503
     504    axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView));
     505    g_assert(axWebView);
     506
     507    // Check table with both column and row headers
     508    table = atk_object_ref_accessible_child(axWebView, 0);
     509    g_assert(table);
     510    g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE);
     511
     512    colHeader = atk_table_get_column_header(ATK_TABLE(table), 0);
     513    g_assert(colHeader);
     514    g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
     515    g_assert(atk_object_get_index_in_parent(colHeader) == 0);
     516
     517    colHeader = atk_table_get_column_header(ATK_TABLE(table), 1);
     518    g_assert(colHeader);
     519    g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
     520    g_assert(atk_object_get_index_in_parent(colHeader) == 1);
     521
     522    colHeader = atk_table_get_column_header(ATK_TABLE(table), 2);
     523    g_assert(colHeader);
     524    g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
     525    g_assert(atk_object_get_index_in_parent(colHeader) == 2);
     526
     527    colHeader = atk_table_get_column_header(ATK_TABLE(table), 3);
     528    g_assert(colHeader);
     529    g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
     530    g_assert(atk_object_get_index_in_parent(colHeader) == 2);
     531
     532    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0);
     533    g_assert(rowHeader);
     534    g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
     535    g_assert(atk_object_get_index_in_parent(rowHeader) == 0);
     536
     537    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1);
     538    g_assert(rowHeader);
     539    g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
     540    g_assert(atk_object_get_index_in_parent(rowHeader) == 3);
     541
     542    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 2);
     543    g_assert(rowHeader);
     544    g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
     545    g_assert(atk_object_get_index_in_parent(rowHeader) == 7);
     546
     547    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 3);
     548    g_assert(rowHeader);
     549    g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
     550    g_assert(atk_object_get_index_in_parent(rowHeader) == 7);
     551
     552    g_object_unref(table);
     553
     554    // Check table with no headers at all
     555    table = atk_object_ref_accessible_child(axWebView, 1);
     556    g_assert(table);
     557    g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE);
     558
     559    colHeader = atk_table_get_column_header(ATK_TABLE(table), 0);
     560    g_assert(colHeader == 0);
     561
     562    colHeader = atk_table_get_column_header(ATK_TABLE(table), 1);
     563    g_assert(colHeader == 0);
     564
     565    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0);
     566    g_assert(rowHeader == 0);
     567
     568    rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1);
     569    g_assert(rowHeader == 0);
     570
     571    g_object_unref(table);
    480572    g_object_unref(webView);
    481573}
     
    495587    g_test_add_func("/webkit/atk/getTextInParagraphAndBodyModerate", testWebkitAtkGetTextInParagraphAndBodyModerate);
    496588    g_test_add_func("/webkit/atk/getTextInTable", testWebkitAtkGetTextInTable);
     589    g_test_add_func("/webkit/atk/getHeadersInTable", testWebkitAtkGetHeadersInTable);
    497590    return g_test_run ();
    498591}
Note: See TracChangeset for help on using the changeset viewer.