Changeset 61884 in webkit
- Timestamp:
- Jun 25, 2010 1:09:25 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61881 r61884 1 2010-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 1 16 2010-06-25 Martin Robinson <mrobinson@igalia.com> 2 17 -
trunk/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
r61730 r61884 1449 1449 static AtkObject* webkit_accessible_table_get_column_header(AtkTable* table, gint column) 1450 1450 { 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 } 1453 1464 return 0; 1454 1465 } … … 1460 1471 AccessibilityObject::AccessibilityChildrenVector allRowHeaders; 1461 1472 static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders); 1462 1463 1473 unsigned rowCount = allRowHeaders.size(); 1464 1474 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) 1467 1479 return allRowHeaders[k]->wrapper(); 1468 1480 } -
trunk/WebKit/gtk/ChangeLog
r61881 r61884 1 2010-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 1 15 2010-06-25 Martin Robinson <mrobinson@igalia.com> 2 16 -
trunk/WebKit/gtk/tests/testatk.c
r56036 r61884 41 41 static const char* contentsInTable = "<html><body><table><tr><td>foo</td><td>bar</td></tr></table></body></html>"; 42 42 43 static 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 43 45 static gboolean bail_out(GMainLoop* loop) 44 46 { … … 478 480 479 481 g_object_unref(obj); 482 g_object_unref(webView); 483 } 484 485 static 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); 480 572 g_object_unref(webView); 481 573 } … … 495 587 g_test_add_func("/webkit/atk/getTextInParagraphAndBodyModerate", testWebkitAtkGetTextInParagraphAndBodyModerate); 496 588 g_test_add_func("/webkit/atk/getTextInTable", testWebkitAtkGetTextInTable); 589 g_test_add_func("/webkit/atk/getHeadersInTable", testWebkitAtkGetHeadersInTable); 497 590 return g_test_run (); 498 591 }
Note: See TracChangeset
for help on using the changeset viewer.