Bug 25529

Summary: [Gtk] Expected states not exposed to assistive technologies
Product: WebKit Reporter: Joanmarie Diggs <jdiggs>
Component: AccessibilityAssignee: Xan Lopez <xan.lopez>
Status: VERIFIED FIXED    
Severity: Normal CC: apinheiro, walker.willie, xan.lopez
Priority: P2 Keywords: Gtk
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Bug Depends on:    
Bug Blocks: 25531    
Attachments:
Description Flags
a11ystates.patch jmalonzo: review+

Description Joanmarie Diggs 2009-05-03 15:30:32 PDT
The Atk state types can be found here:

http://library.gnome.org/devel/atk/unstable/atk-AtkState.html#AtkStateType

A number of these states are not being exposed when they should be. A comparison with Firefox or with any Gtk+ app should be helpful. (Using Accerciser, view any page and then choose an accessible in the pane on the left. Then use the Interface Viewer, expanding "Accessible" to see the states being exposed for that object.)

That said, of especial/immediate interest are:

* STATE_SENSITIVE
* STATE_VISIBLE
* STATE_EDITABLE

because these three states frequently (arguably, almost constantly) impact what a screen reader such as Orca presents to the user interacting with the content being displayed.
Comment 1 Xan Lopez 2009-06-17 03:11:48 PDT
Created attachment 31407 [details]
a11ystates.patch

Implement requested states.

For now I'm just doing SHOWING = VISIBLE and ENABLED = SENSITIVE, since I'm not sure how to tell the subtle difference between those in WebCore (specially SHOWING vs VISIBLE, which seems to be a GTK+-ism related to MAPPED vs VISIBLE (as in the visible flag for widgets)).
Comment 2 Alejandro PiƱeiro 2009-06-17 03:40:40 PDT
(In reply to comment #1)

> For now I'm just doing SHOWING = VISIBLE and ENABLED = SENSITIVE, since I'm not
> sure how to tell the subtle difference between those in WebCore (specially
> SHOWING vs VISIBLE, which seems to be a GTK+-ism related to MAPPED vs VISIBLE
> (as in the visible flag for widgets)).

FYI: in GTK, SHOWING is a little more than VISIBLE&&MAPPING, as you said, as it also search if the widget has an antecedent that is a GtkViewPort, to check if the widget intersects with the visible rectangle of the GtkViewPort. I'm not sure if this can affects to WebKit.

And, in the same way, this could be not enough, and a extra condition could be required:
http://bugzilla.gnome.org/show_bug.cgi?id=509650

Comment 3 Jan Alonzo 2009-06-25 16:42:32 PDT
Comment on attachment 31407 [details]
a11ystates.patch

> From 1939ce04b5b0025ffbdfee678a0ec0d52b24bedb Mon Sep 17 00:00:00 2001
> From: Xan Lopez <xlopez@igalia.com>
> Date: Wed, 17 Jun 2009 13:08:13 +0300
> Subject: [PATCH] 2009-06-17  Xan Lopez  <xlopez@igalia.com>

Assuming you've tested this, r=me. Also please add a the bugzilla.gnome.org bug link (by Alejandro) where appropriate so we can keep track what else is missing.

Thanks! (
Comment 4 Eric Seidel (no email) 2009-06-26 01:38:29 PDT
Assigning to xan for corrections and landing.
Comment 5 Xan Lopez 2009-06-26 02:13:34 PDT
Landed with a pointer to the bug pointed by Alejandro in r45252. Closing this now, new bugs can be opened about the issues remaining, if any.
Comment 6 Joanmarie Diggs 2009-07-27 14:17:12 PDT
Verifying. Thanks!