Changeset 75250 in webkit
- Timestamp:
- Jan 7, 2011 9:34:02 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r75249 r75250 1 2011-01-07 Mario Sanchez Prada <msanchez@igalia.com> 2 3 Reviewed by Chris Fleizach. 4 5 GTK: AX: atk tests need to be updated after recent changes 6 https://bugs.webkit.org/show_bug.cgi?id=51932 7 8 Make sure we can always get the right accesssible parent for an 9 AtkObject when traversing the hierarchy bottom up. 10 11 * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: 12 (isRootObject): New function to check whether an 13 AccessibilityObject is the root one or not, according to the 14 latest changes in the hierarchy. 15 (atkParentOfRootObject): Gets the appropriate AtkObject from GTK's 16 GAIL as the parent of the root AtkObject from WebCore. 17 (webkit_accessible_get_parent): Use atkParentOfRootObject. 18 (webkit_accessible_get_index_in_parent): Ditto. 19 (atkRole): Expose AccessibilityObjects with ScrollAreaRole as 20 AtkObject's of role ATK_ROLE_SCROLLED_PANE. 21 1 22 2011-01-07 Zhenyao Mo <zmo@google.com> 2 23 -
trunk/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
r75034 r75250 235 235 static gpointer webkit_accessible_parent_class = 0; 236 236 237 static AtkObject* atkParentOfWebView(AtkObject* object) 238 { 239 AccessibilityObject* coreParent = core(object)->parentObjectUnignored(); 240 241 // The top level web view claims to not have a parent. This makes it 237 static bool isRootObject(AccessibilityObject* coreObject) 238 { 239 // The root accessible object in WebCore is always an object with 240 // the ScrolledArea role with one child with the WebArea role. 241 if (!coreObject || !coreObject->isScrollView()) 242 return false; 243 244 AccessibilityObject* firstChild = coreObject->firstChild(); 245 if (!firstChild || !firstChild->isWebArea()) 246 return false; 247 248 return true; 249 } 250 251 static AtkObject* atkParentOfRootObject(AtkObject* object) 252 { 253 AccessibilityObject* coreObject = core(object); 254 AccessibilityObject* coreParent = coreObject->parentObjectUnignored(); 255 256 // The top level object claims to not have a parent. This makes it 242 257 // impossible for assistive technologies to ascend the accessible 243 258 // hierarchy all the way to the application. (Bug 30489) 244 if (!coreParent && core(object)->isWebArea()) {245 HostWindow* hostWindow = core (object)->document()->view()->hostWindow();259 if (!coreParent && isRootObject(coreObject)) { 260 HostWindow* hostWindow = coreObject->document()->view()->hostWindow(); 246 261 if (hostWindow) { 247 PlatformPageClient webView = hostWindow->platformPageClient();248 if ( webView) {249 GtkWidget* webViewParent = gtk_widget_get_parent(webView);250 if ( webViewParent)251 return gtk_widget_get_accessible( webViewParent);262 PlatformPageClient scrollView = hostWindow->platformPageClient(); 263 if (scrollView) { 264 GtkWidget* scrollViewParent = gtk_widget_get_parent(scrollView); 265 if (scrollViewParent) 266 return gtk_widget_get_accessible(scrollViewParent); 252 267 } 253 268 } … … 262 277 static AtkObject* webkit_accessible_get_parent(AtkObject* object) 263 278 { 264 AccessibilityObject* coreParent = core(object)->parentObjectUnignored(); 265 if (!coreParent && core(object)->isWebArea()) 266 return atkParentOfWebView(object); 279 AccessibilityObject* coreObject = core(object); 280 AccessibilityObject* coreParent = coreObject->parentObjectUnignored(); 281 if (!coreParent && isRootObject(coreObject)) 282 return atkParentOfRootObject(object); 267 283 268 284 if (!coreParent) … … 301 317 AccessibilityObject* parent = coreObject->parentObjectUnignored(); 302 318 303 if (!parent && core(object)->isWebArea()) {304 AtkObject* atkParent = atkParentOf WebView(object);319 if (!parent && isRootObject(coreObject)) { 320 AtkObject* atkParent = atkParentOfRootObject(object); 305 321 if (!atkParent) 306 322 return -1; … … 417 433 case ScrollBarRole: 418 434 return ATK_ROLE_SCROLL_BAR; 435 case ScrollAreaRole: 436 return ATK_ROLE_SCROLL_PANE; 419 437 case GridRole: // Is this right? 420 438 case TableRole: -
trunk/WebKit/gtk/ChangeLog
r75201 r75250 1 2011-01-07 Mario Sanchez Prada <msanchez@igalia.com> 2 3 Reviewed by Chris Fleizach. 4 5 GTK: AX: atk tests need to be updated after recent changes 6 https://bugs.webkit.org/show_bug.cgi?id=51932 7 8 Fix gtk_widget_get_accessible() in WebKitWebView to keep returning 9 the AtkObject of role ATK_ROLE_DOCUMENT_FRAME. 10 11 With the change to support WK2 accessibility, the root object of 12 the AX hierarchy is different from what GTK expects as the current 13 hirarchy right now includes a new accessible object as the parent 14 of the accessible web area (AXScrollView). 15 16 * webkit/webkitwebview.cpp: 17 (webkit_web_view_get_accessible): Return the first child of the 18 wrapper associated to the root accessible object in the document, 19 to keep everything in the GTK port working as it used to be. 20 21 Re-enable skipped ATK unit tests now they are passing again. 22 23 * tests/testatk.c: 24 (main): Re-enable skipped tests. 25 * tests/testatkroles.c: 26 (main): Ditto. 27 1 28 2011-01-06 Martin Robinson <mrobinson@igalia.com> 2 29 -
trunk/WebKit/gtk/tests/testatk.c
r75201 r75250 1314 1314 gtk_test_init(&argc, &argv, 0); 1315 1315 1316 /* See: https://bugs.webkit.org/show_bug.cgi?id=519321317 1316 g_test_bug_base("https://bugs.webkit.org/"); 1318 1317 g_test_add_func("/webkit/atk/comboBox", testWebkitAtkComboBox); … … 1334 1333 g_test_add_func("/webkit/atk/listsOfItems", testWebkitAtkListsOfItems); 1335 1334 g_test_add_func("/webkit/atk/textChangedNotifications", testWebkitAtkTextChangedNotifications); 1336 */1337 1335 return g_test_run (); 1338 1336 } -
trunk/WebKit/gtk/tests/testatkroles.c
r75201 r75250 308 308 g_test_bug_base("https://bugs.webkit.org/"); 309 309 310 /* See: https://bugs.webkit.org/show_bug.cgi?id=51932311 310 g_test_add("/webkit/atk/test_webkit_atk_get_role_document_frame", 312 311 AtkRolesFixture, HTML_DOCUMENT_FRAME, … … 369 368 atk_roles_fixture_teardown); 370 369 371 / / Form roles370 /* Form roles */ 372 371 g_test_add("/webkit/atk/test_webkit_atk_get_role_form", 373 372 AtkRolesFixture, HTML_FORM, … … 416 415 test_webkit_atk_get_role_radio_button, 417 416 atk_roles_fixture_teardown); 418 */419 417 420 418 return g_test_run(); -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r75031 r75250 1441 1441 WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); 1442 1442 if (!core(webView)) 1443 return NULL;1443 return 0; 1444 1444 1445 1445 AXObjectCache::enableAccessibility(); … … 1447 1447 Frame* coreFrame = core(webView)->mainFrame(); 1448 1448 if (!coreFrame) 1449 return NULL;1449 return 0; 1450 1450 1451 1451 Document* doc = coreFrame->document(); 1452 1452 if (!doc) 1453 return NULL; 1454 1455 AccessibilityObject* coreAccessible = doc->axObjectCache()->rootObject(); 1456 if (!coreAccessible || !coreAccessible->wrapper()) 1457 return NULL; 1458 1459 return coreAccessible->wrapper(); 1453 return 0; 1454 1455 AccessibilityObject* rootAccessible = doc->axObjectCache()->rootObject(); 1456 if (!rootAccessible) 1457 return 0; 1458 1459 // We need to return the root accessibility object's first child 1460 // to get to the actual ATK Object associated with the web view. 1461 // See https://bugs.webkit.org/show_bug.cgi?id=51932 1462 AtkObject* axRoot = rootAccessible->wrapper(); 1463 if (!axRoot || !ATK_IS_OBJECT(axRoot)) 1464 return 0; 1465 1466 AtkObject* axWebView = atk_object_ref_accessible_child(ATK_OBJECT(axRoot), 0); 1467 if (!axWebView || !ATK_IS_OBJECT(axWebView)) 1468 return 0; 1469 1470 // We don't want the extra reference returned by ref_accessible_child. 1471 g_object_unref(axWebView); 1472 return axWebView; 1460 1473 } 1461 1474
Note: See TracChangeset
for help on using the changeset viewer.