Closed Bug 241064 Opened 20 years ago Closed 20 years ago

mozilla need support ATK_STATE_SENSITIVE, STATE_SHOWING, ROLE_HTML_CONTAINER, STATE_SINGLE_LINE, ROLE_SCROLL_PANE

Categories

(Core :: Disability Access APIs, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: Louie.Zhao, Assigned: Louie.Zhao)

References

Details

Attachments

(2 files, 1 obsolete file)

This bug is to refine some minor atk state & atk role exported by mozilla to
at-poke, which includes:

1. support ATK_STATE_SENSITIVE: mozilla doesn't export ATK_STATE_SENSITIVE for
any element, which is needed by at applications. Currently, we add this state
for all objects which is not "UNAVAILABLE". That is to say, any element which
has ATK_STATE_ENABLED will have ATK_STATE_SENSITIVE. This is just a simple fix
after examine the atk information exported by gail. ATK_STATE_SENSITIVE always
goes with ATK_STATE_ENABLED.

2.STATE_SHOWING is an important state. Many at tools judge whether each element
has this state before any other querying. Unfortuately, mozilla doesn't support
this now.

3.Input box in HTML should have STATE_SINGLE_LINE state.

4.Not exporting any ATK_STATE is quite dangerous. Some state, such as
ATK_STATE_SHOWING is basic need for element.

4.ROLE_HTML_CONTAINER and ROLE_SCROLL_PANE should be supported instead of
exporting ROLE_PANE only.
Attached patch patch v1 (obsolete) — Splinter Review
This patch need bug241054 support since it needs ROLE_SCROLL_PANE and
ROLE_HTML_CONTAINER.
Attachment #146571 - Flags: review?(pkw)
No longer blocks: 239867
Blocks: 239867
Back on the STATE_UNAVAILABLE discussion.
This is the part that confuses me. Similar code in blockaccessible and xultab
accessible make it appear that the state is always unavailable for those items.

 NS_IMETHODIMP nsOuterDocAccessible::GetState(PRUint32 *aState)
 {
-  return nsAccessible::GetState(aState);
+  nsAccessible::GetState(aState);
+  *aState &= ~STATE_FOCUSABLE;
+  *aState |= STATE_UNAVAILABLE;
+  return NS_OK;
 }
 
Through examing ATK state exported by "yelp", nsOuterDocAccessible,
nsXULTabBoxAccessible, nsHTMLBlockAccessible shouldn't have "STATE_ENABLE" and
"STATE_SENSITIVE". "STATE_SHOWING" and "STATE_VISIBLE" are neccessary for these
objects.

Currently, we have no idea "WHAT" atk info should be exported by each kind of
atk object in mozilla because this depends on the implmentation of AT Tools,
which is still under development. For example, ATK_STATE_SHOWING wasn't be used
before by AT Tools, but now it's an important STATE for AT Tools to examine.
Since there is no formal docuemnt to tell, comparing with GNOME application
(e.g. Gail) would be a feasible way for us to refine ATK info exported by mozilla.

Aaron, do you have any suggestion?
Comment on attachment 146571 [details] [diff] [review]
patch v1

>Index: accessible/src/base/nsAccessible.cpp
>===================================================================
>RCS file: /cvsroot/mozilla/accessible/src/base/nsAccessible.cpp,v
>retrieving revision 1.91
>diff -u -r1.91 nsAccessible.cpp
>--- accessible/src/base/nsAccessible.cpp	11 Feb 2004 04:56:56 -0000	1.91
>+++ accessible/src/base/nsAccessible.cpp	20 Apr 2004 03:52:41 -0000
>@@ -568,7 +568,8 @@
>     *aState |= STATE_INVISIBLE;
>     if (isOffscreen)
>       *aState |= STATE_OFFSCREEN;
>-  }
>+  } else
>+    *aState |= STATE_SHOWING;

This patch looks like it may run into the same problems as the one in Bug
241055, as it is setting the state flags with extended state masks.

>Index: accessible/src/base/nsFormControlAccessible.cpp
>===================================================================
>RCS file: /cvsroot/mozilla/accessible/src/base/nsFormControlAccessible.cpp,v
>retrieving revision 1.7
>diff -u -r1.7 nsFormControlAccessible.cpp
>--- accessible/src/base/nsFormControlAccessible.cpp	31 Jul 2003 08:09:19 -0000	1.7
>+++ accessible/src/base/nsFormControlAccessible.cpp	20 Apr 2004 03:52:42 -0000
>@@ -71,6 +71,8 @@
>     htmlFormElement->GetDisabled(&disabled);
>     nsAutoString typeString;
>     htmlFormElement->GetType(typeString);
>+    if (typeString.EqualsIgnoreCase("text"))
>+      *_retval |= STATE_SINGLE_LINE;

Same issue here with STATE_SINGLE_LINE (an extended state).
Attached patch patch v2Splinter Review
This patch makes use of GetExtState to isolate "extended state" from "state" to
prevent from interfereing with MSAA. All "extended state" is set in
GetExtState. When atk state is wanted, mozilla first examines "GetState", then
ADD additional "extended state" from examing "GetExtState".
Attachment #146571 - Attachment is obsolete: true
Attachment #146748 - Flags: review?(pkw)
Attachment #146571 - Flags: review?(pkw)
My suggestion is that we get some documentation with an exact description of
each state, when and wher it should be used and follow that spec.

Philip and I could not find such a spec online using Google. We're having to
guess, and each of us thinks the ATK states mean something different.

In my mind, STATE_UNAVAILABLE is *not* the exact opposite of STATE_SENSITIVE,
but may be the opposite of STATE_ENABLED.

I don't see how an HTML block can be "unavailable".
The online API documentation for ATK _does_ include a description of each
ATK_STATE.  This is the same as the HTML documentation built when rebuilding ATK
from cvs.  I will accept that it is not verbose, but it _is_ authoritative.  If
you have specific questions about a specific state, ask them on
gnome-accessibility-devel@gnome.org and we'll be glad to reply, and fold
suggested revisions into the ATK docs.

thanks
Comment on attachment 146748 [details] [diff] [review]
patch v2

>Index: accessible/src/atk/nsAccessibleWrap.cpp
>===================================================================
>RCS file: /cvsroot/mozilla/accessible/src/atk/nsAccessibleWrap.cpp,v
>retrieving revision 1.11
>diff -u -r1.11 nsAccessibleWrap.cpp
>--- accessible/src/atk/nsAccessibleWrap.cpp	20 Apr 2004 17:15:53 -0000	1.11
>+++ accessible/src/atk/nsAccessibleWrap.cpp	22 Apr 2004 07:32:20 -0000
>@@ -890,12 +901,12 @@
>     nsresult rv = accWrap->GetState(&accState);
>     NS_ENSURE_SUCCESS(rv, state_set);
> 
>-    if (accState == 0) {
>-        nsresult rv = accWrap->GetExtState(&accState);
>-        //NS_ENSURE_SUCCESS(rv, state_set);
>-        if (accState == 0)
>-            return state_set;
>-    }
>+    rv = accWrap->GetExtState(&accState);
>+    NS_ENSURE_SUCCESS(rv, state_set);
>+
>+    if (accState == 0)
>+      return state_set;
>+
>     nsAccessibleWrap::TranslateStates(accState, state_set);
>     return state_set;
> }

I would prefer if we change the TranslateStates function to accept two state
parameters - one for the regular state and one for the extended state. This
doesn't have to happen with this bug though. It would make things simpler in
the future because we would not have to worry about choosing extended states
which do not conflict with commonly used MSAA states.
Attachment #146748 - Flags: review?(pkw) → review+
Attachment #146748 - Flags: superreview?(Henry.Jia)
Attachment #146748 - Flags: superreview?(Henry.Jia) → superreview?(jst)
Comment on attachment 146748 [details] [diff] [review]
patch v2

sr=henry
Attachment #146748 - Flags: superreview?(jst) → superreview+
Thanks for r and sr. Patch checked in trunk.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
STATE_UNAVAILABLE shouldn't be applied to elements that aren't disabled (grayed
out).

Attachment #150222 - Flags: superreview?(Henry.Jia)
Attachment #150222 - Flags: review?(Louie.Zhao)
Attachment #150222 - Flags: review?(Louie.Zhao) → review+
Attachment #150222 - Flags: superreview?(Henry.Jia) → superreview+
Checking in src/base/nsOuterDocAccessible.cpp;
/cvsroot/mozilla/accessible/src/base/nsOuterDocAccessible.cpp,v  <-- 
nsOuterDocAccessible.cpp
new revision: 1.20; previous revision: 1.19
done
Checking in src/xul/nsXULTabAccessible.cpp;
/cvsroot/mozilla/accessible/src/xul/nsXULTabAccessible.cpp,v  <-- 
nsXULTabAccessible.cpp
new revision: 1.22; previous revision: 1.21
done
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: