Changeset 100424 in webkit
- Timestamp:
- Nov 16, 2011, 1:46:36 AM (14 years ago)
- Location:
- trunk/Source/WebKit/gtk
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
tests/testatk.c (modified) (27 diffs)
-
webkit/webkitwebview.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/gtk/ChangeLog
r100309 r100424 1 2011-11-16 Mario Sanchez Prada <msanchez@igalia.com> 2 3 [GTK] Do not hide accessibility root object from AT's 4 https://bugs.webkit.org/show_bug.cgi?id=72390 5 6 Reviewed by Martin Robinson. 7 8 * tests/testatk.c: 9 (getWebAreaObject): New helper function, to bypass the new root 10 object in the accessibility hierarchy, since it's not usually 11 needed for the unit tests. 12 (testWebkitAtkCaretOffsets): Use getWebAreaObject(). 13 (testWebkitAtkCaretOffsetsAndExtranousWhiteSpaces): Ditto. 14 (testWebkitAtkComboBox): Ditto. 15 (testWebkitAtkEmbeddedObjects): Ditto. 16 (testWebkitAtkGetTextAtOffsetForms): Ditto. 17 (testWebkitAtkGetTextAtOffset): Ditto. 18 (testWebkitAtkGetTextAtOffsetNewlines): Ditto. 19 (testWebkitAtkGetTextAtOffsetTextarea): Ditto. 20 (testWebkitAtkGetTextAtOffsetTextInput): Ditto. 21 (testWebkitAtkGetTextAtOffsetWithSpecialCharacters): Ditto. 22 (testWebkitAtkGetTextInParagraphAndBodySimple): Ditto. 23 (testWebkitAtkGetTextInParagraphAndBodyModerate): Ditto. 24 (testWebkitAtkGetTextInTable): Ditto. 25 (testWebkitAtkGetHeadersInTable): Ditto. 26 (testWebkitAtkTextAttributes): Ditto. 27 (testWebkitAtkTextSelections): Ditto. 28 (testWebkitAtkGetExtents): Ditto. 29 (testWebkitAtkLayoutAndDataTables): Ditto. 30 (testWebkitAtkLinksWithInlineImages): Ditto. 31 (testWebkitAtkHypertextAndHyperlinks): Ditto. 32 (testWebkitAtkListsOfItems): Ditto. 33 (testWebkitAtkTextChangedNotifications): Ditto. 34 (testWebkitAtkParentForRootObject): New test, to make sure that 35 both top-down and bottom-up navigation among GTK and WebKit worlds 36 matches accordingly. 37 (main): Added new test. 38 39 * webkit/webkitwebview.cpp: 40 (webkit_web_view_get_accessible): Remove the hack introduced 41 because of bug 51932, to bypass the root object here. 42 1 43 2011-11-15 Anders Carlsson <andersca@apple.com> 2 44 -
trunk/Source/WebKit/gtk/tests/testatk.c
r98239 r100424 69 69 static const char* textWithAttributes = "<html><head><style>.st1 {font-family: monospace; color:rgb(120,121,122);} .st2 {text-decoration:underline; background-color:rgb(80,81,82);}</style></head><body><p style=\"font-size:14; text-align:right;\">This is the <i>first</i><b> sentence of this text.</b></p><p class=\"st1\">This sentence should have an style applied <span class=\"st2\">and this part should have another one</span>.</p><p>x<sub>1</sub><sup>2</sup>=x<sub>2</sub><sup>3</sup></p><p style=\"text-align:center;\">This sentence is the <strike>last</strike> one.</p></body></html>"; 70 70 71 static void waitForAccessibleObjects()71 static AtkObject* getWebAreaObject(WebKitWebView* webView) 72 72 { 73 73 /* Manually spin the main context to make sure the accessible … … 75 75 while (g_main_context_pending(0)) 76 76 g_main_context_iteration(0, TRUE); 77 78 AtkObject* rootObject = gtk_widget_get_accessible(GTK_WIDGET(webView)); 79 if (!rootObject) 80 return NULL; 81 82 AtkObject* webAreaObject = atk_object_ref_accessible_child(rootObject, 0); 83 if (!webAreaObject) 84 return NULL; 85 86 /* We don't need the extra ref here. */ 87 g_object_unref(webAreaObject); 88 89 return webAreaObject; 77 90 } 78 91 … … 240 253 webkit_web_view_load_string(webView, textForCaretBrowsing, 0, 0, 0); 241 254 242 /* Wait for the accessible objects to be created. */ 243 waitForAccessibleObjects(); 244 245 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 255 AtkObject* object = getWebAreaObject(webView); 246 256 g_assert(object); 247 257 … … 343 353 webkit_web_view_load_string(webView, contentsWithExtraneousWhiteSpaces, 0, 0, 0); 344 354 345 /* Wait for the accessible objects to be created. */346 waitForAccessibleObjects();347 348 355 /* Enable caret browsing. */ 349 356 WebKitWebSettings* settings = webkit_web_view_get_settings(webView); … … 352 359 353 360 /* Get to the inner AtkText object. */ 354 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));361 AtkObject* object = getWebAreaObject(webView); 355 362 g_assert(object); 356 363 object = atk_object_ref_accessible_child(object, 0); … … 390 397 webkit_web_view_load_string(webView, comboBoxSelector, 0, 0, 0); 391 398 392 /* Wait for the accessible objects to be created. */ 393 waitForAccessibleObjects(); 394 395 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 399 AtkObject* object = getWebAreaObject(webView); 396 400 g_assert(object); 397 401 … … 491 495 webkit_web_view_load_string(webView, embeddedObjects, 0, 0, 0); 492 496 493 /* Wait for the accessible objects to be created. */ 494 waitForAccessibleObjects(); 495 496 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 497 AtkObject* object = getWebAreaObject(webView); 497 498 g_assert(object); 498 499 … … 577 578 webkit_web_view_load_string(webView, contents, 0, 0, 0); 578 579 579 /* Wait for the accessible objects to be created. */580 waitForAccessibleObjects();581 582 580 /* Get to the inner AtkText object. */ 583 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));581 AtkObject* object = getWebAreaObject(webView); 584 582 g_assert(object); 585 583 object = atk_object_ref_accessible_child(object, 0); … … 602 600 webkit_web_view_load_string(webView, contents, 0, 0, 0); 603 601 604 /* Wait for the accessible objects to be created. */605 waitForAccessibleObjects();606 607 602 /* Get to the inner AtkText object. */ 608 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));603 AtkObject* object = getWebAreaObject(webView); 609 604 g_assert(object); 610 605 object = atk_object_ref_accessible_child(object, 0); … … 627 622 webkit_web_view_load_string(webView, contentsWithNewlines, 0, 0, 0); 628 623 629 /* Wait for the accessible objects to be created. */630 waitForAccessibleObjects();631 632 624 /* Get to the inner AtkText object. */ 633 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));625 AtkObject* object = getWebAreaObject(webView); 634 626 g_assert(object); 635 627 object = atk_object_ref_accessible_child(object, 0); … … 652 644 webkit_web_view_load_string(webView, contentsInTextarea, 0, 0, 0); 653 645 654 /* Wait for the accessible objects to be created. */655 waitForAccessibleObjects();656 657 646 /* Get to the inner AtkText object. */ 658 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));647 AtkObject* object = getWebAreaObject(webView); 659 648 g_assert(object); 660 649 object = atk_object_ref_accessible_child(object, 0); … … 679 668 webkit_web_view_load_string(webView, contentsInTextInput, 0, 0, 0); 680 669 681 /* Wait for the accessible objects to be created. */682 waitForAccessibleObjects();683 684 670 /* Get to the inner AtkText object. */ 685 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));671 AtkObject* object = getWebAreaObject(webView); 686 672 g_assert(object); 687 673 object = atk_object_ref_accessible_child(object, 0); … … 706 692 webkit_web_view_load_string(webView, contentsWithSpecialChars, 0, 0, 0); 707 693 708 /* Wait for the accessible objects to be created. */709 waitForAccessibleObjects();710 711 694 /* Get to the inner AtkText object. */ 712 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));695 AtkObject* object = getWebAreaObject(webView); 713 696 g_assert(object); 714 697 object = atk_object_ref_accessible_child(object, 0); … … 740 723 webkit_web_view_load_string(webView, contentsInParagraphAndBodySimple, 0, 0, 0); 741 724 742 /* Wait for the accessible objects to be created. */743 waitForAccessibleObjects();744 745 725 /* Get to the inner AtkText object. */ 746 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));726 AtkObject* object = getWebAreaObject(webView); 747 727 g_assert(object); 748 728 AtkObject* object1 = atk_object_ref_accessible_child(object, 0); … … 775 755 webkit_web_view_load_string(webView, contentsInParagraphAndBodyModerate, 0, 0, 0); 776 756 777 /* Wait for the accessible objects to be created. */778 waitForAccessibleObjects();779 780 757 /* Get to the inner AtkText object. */ 781 AtkObject* object = g tk_widget_get_accessible(GTK_WIDGET(webView));758 AtkObject* object = getWebAreaObject(webView); 782 759 g_assert(object); 783 760 AtkObject* object1 = atk_object_ref_accessible_child(object, 0); … … 810 787 webkit_web_view_load_string(webView, contentsInTable, 0, 0, 0); 811 788 812 /* Wait for the accessible objects to be created. */ 813 waitForAccessibleObjects(); 814 815 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 789 AtkObject* object = getWebAreaObject(webView); 816 790 g_assert(object); 817 791 object = atk_object_ref_accessible_child(object, 0); … … 833 807 webkit_web_view_load_string(webView, contentsInTableWithHeaders, 0, 0, 0); 834 808 835 /* Wait for the accessible objects to be created. */ 836 waitForAccessibleObjects(); 837 838 AtkObject* axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView)); 809 AtkObject* axWebView = getWebAreaObject(webView); 839 810 g_assert(axWebView); 840 811 … … 967 938 webkit_web_view_load_string(webView, textWithAttributes, 0, 0, 0); 968 939 969 /* Wait for the accessible objects to be created. */ 970 waitForAccessibleObjects(); 971 972 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 940 AtkObject* object = getWebAreaObject(webView); 973 941 g_assert(object); 974 942 … … 1077 1045 webkit_web_view_load_string(webView, textForSelections, 0, 0, 0); 1078 1046 1079 /* Wait for the accessible objects to be created. */ 1080 waitForAccessibleObjects(); 1081 1082 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1047 AtkObject* object = getWebAreaObject(webView); 1083 1048 g_assert(object); 1084 1049 … … 1234 1199 webkit_web_view_load_string(webView, centeredContents, 0, 0, 0); 1235 1200 1236 /* Wait for the accessible objects to be created. */ 1237 waitForAccessibleObjects(); 1238 1239 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1201 AtkObject* object = getWebAreaObject(webView); 1240 1202 g_assert(object); 1241 1203 … … 1350 1312 webkit_web_view_load_string(webView, layoutAndDataTables, 0, 0, 0); 1351 1313 1352 /* Wait for the accessible objects to be created. */ 1353 waitForAccessibleObjects(); 1354 1355 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1314 AtkObject* object = getWebAreaObject(webView); 1356 1315 g_assert(object); 1357 1316 … … 1388 1347 webkit_web_view_load_string(webView, linksWithInlineImages, 0, 0, 0); 1389 1348 1390 /* Wait for the accessible objects to be created. */ 1391 waitForAccessibleObjects(); 1392 1393 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1349 AtkObject* object = getWebAreaObject(webView); 1394 1350 g_assert(object); 1395 1351 … … 1440 1396 webkit_web_view_load_string(webView, hypertextAndHyperlinks, 0, 0, 0); 1441 1397 1442 /* Wait for the accessible objects to be created. */ 1443 waitForAccessibleObjects(); 1444 1445 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1398 AtkObject* object = getWebAreaObject(webView); 1446 1399 g_assert(object); 1447 1400 … … 1535 1488 webkit_web_view_load_string(webView, listsOfItems, 0, 0, 0); 1536 1489 1537 /* Wait for the accessible objects to be created. */ 1538 waitForAccessibleObjects(); 1539 1540 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1490 AtkObject* object = getWebAreaObject(webView); 1541 1491 g_assert(object); 1542 1492 … … 1626 1576 webkit_web_view_load_string(webView, formWithTextInputs, 0, 0, 0); 1627 1577 1628 /* Wait for the accessible objects to be created. */ 1629 waitForAccessibleObjects(); 1630 1631 AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1578 AtkObject* object = getWebAreaObject(webView); 1632 1579 g_assert(object); 1633 1580 … … 1657 1604 g_object_unref(textEntry); 1658 1605 g_object_unref(webView); 1606 } 1607 1608 static void testWebkitAtkParentForRootObject() 1609 { 1610 WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); 1611 GtkAllocation allocation = { 0, 0, 800, 600 }; 1612 gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); 1613 webkit_web_view_load_string(webView, contents, 0, 0, 0); 1614 1615 /* We need a parent for the webview to check top-down and 1616 bottom-up navigation among them, so create a box for it. */ 1617 #ifdef GTK_API_VERSION_2 1618 GtkWidget* box = gtk_vbox_new(FALSE, 0); 1619 #else 1620 GtkWidget* box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); 1621 #endif 1622 g_object_ref_sink(box); 1623 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(webView), FALSE, FALSE, 0); 1624 1625 AtkObject* axBox = gtk_widget_get_accessible (box); 1626 g_assert(ATK_IS_OBJECT(axBox)); 1627 1628 g_assert_cmpint(atk_object_get_n_accessible_children(axBox), ==, 1); 1629 AtkObject* axBoxChild = atk_object_ref_accessible_child(axBox, 0); 1630 g_assert(axBoxChild); 1631 1632 AtkObject* axRoot = gtk_widget_get_accessible(GTK_WIDGET(webView)); 1633 g_assert(ATK_IS_OBJECT(axRoot)); 1634 1635 /* The box's child should be the AtkObject for the WebView's root. */ 1636 g_assert(axBoxChild == axRoot); 1637 1638 /* Bottom-up navigation should match top-down one. */ 1639 g_assert(atk_object_get_parent(axBoxChild) == axBox); 1640 1641 g_object_unref(axBoxChild); 1642 g_object_unref(box); 1659 1643 } 1660 1644 … … 1686 1670 g_test_add_func("/webkit/atk/listsOfItems", testWebkitAtkListsOfItems); 1687 1671 g_test_add_func("/webkit/atk/textChangedNotifications", testWebkitAtkTextChangedNotifications); 1672 g_test_add_func("/webkit/atk/parentForRootObject", testWebkitAtkParentForRootObject); 1688 1673 return g_test_run (); 1689 1674 } -
trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp
r99108 r100424 1309 1309 return 0; 1310 1310 1311 AXObjectCache::enableAccessibility(); 1311 if (!AXObjectCache::accessibilityEnabled()) 1312 AXObjectCache::enableAccessibility(); 1312 1313 1313 1314 Frame* coreFrame = core(webView)->mainFrame(); … … 1323 1324 return 0; 1324 1325 1325 // We need to return the root accessibility object's first child1326 // to get to the actual ATK Object associated with the web view.1327 // See https://bugs.webkit.org/show_bug.cgi?id=519321328 1326 AtkObject* axRoot = rootAccessible->wrapper(); 1329 1327 if (!axRoot || !ATK_IS_OBJECT(axRoot)) 1330 1328 return 0; 1331 1329 1332 AtkObject* axWebView = atk_object_ref_accessible_child(ATK_OBJECT(axRoot), 0); 1333 if (!axWebView || !ATK_IS_OBJECT(axWebView)) 1334 return 0; 1335 1336 // We don't want the extra reference returned by ref_accessible_child. 1337 g_object_unref(axWebView); 1338 return axWebView; 1330 return axRoot; 1339 1331 } 1340 1332
Note:
See TracChangeset
for help on using the changeset viewer.