Closed Bug 360297 Opened 14 years ago Closed 11 years ago

Hidden cells of XUL tree item exposed to nsIAccessible::GetName().

Categories

(Core :: Disability Access APIs, defect)

1.0 Branch
x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: campg2003, Assigned: campg2003)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

(Keywords: access)

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

The text of hidden columns in a tree view are included in the text of the tree item content returned to accessibility aids.

Reproducible: Always

Steps to Reproduce:
1.1.  Open DOM Inspector.
2.  From File menu choose to inspect new window, choose the DOM Inspector window.
3.  Navigate in the tree view with a screen reader such as JAWS.  Note that although the Namespace URI column is hidden, the URI is spoken by JAWS.

or:
1.  Open DOM Inspector.
2.  From File menu choose to inspect new window, choose the DOM Inspector window.
3.  Open Access Explorer.
4.  Select the DOM Inspector window.
5.  Navigate the object tree to:
6.  DOM Inspector[application - Visible]
7.    chrome://inspector/content/viewers/dom/dom.xul[Error: unexpected VARIANT - Visible]
8.      chrome://inspector/content/viewers/dom/dom.xul[pane - Visible]
9.        NAMELESS[outline - Visible]
10.          window  window    http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul  1    winInspectorMain    [outline item - Visible]
11.  Note that although the Namespace URI column is hidden, the URI appears in the Name property.

Actual Results:  
Text from hidden columns is spoken.

Expected Results:  
Text from hidden columns should not be spoken.

In the file seamonkey/accessible/src/msaa/nsXULTreeAccessibleWrap.cpp in method nsXULTreeitemAccessibleWrap::GetName, the following code collects the text of the treeitem's cells:

  while (column) {
    nsAutoString colText;
    mTreeView->GetCellText(mRow, column, colText);
    aName += colText + NS_LITERAL_STRING("  ");
    nsCOMPtr<nsITreeColumn> nextColumn;
    column->GetNext(getter_AddRefs(nextColumn));
    column = nextColumn;
  }

It looks like one could easily make the code that appends the text conditional on whether or not the column is hidden.

Found on Windows XP Home Edition, SP2 with Firefox 2.0 (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.8.1) Gecko/20061010 Firefox/2.0 
and
rv:1.9a1) Gecko/20061106 Minefield/3.0a1) (downloaded from Latest Nightly link on 11/6/06).

I don't have MSVC++ and am probably just familiar enough with the Mozilla source tree to be dangerous, or I'd implement and test it myself.  I don't know for sure that this is the place in the tree to implement this, or if there are other places.  I didn't see something similar in the atk folder.

Thanks.
Assignee: general → aaronleventhal
Component: General → Disability Access APIs
Keywords: access
Product: Mozilla Application Suite → Core
QA Contact: general → accessibility-apis
Version: unspecified → 1.0 Branch
Status: UNCONFIRMED → NEW
Depends on: 356347
Ever confirmed: true
This was fixed for ATK in 356347.  Patch generated from /mozilla-central trunk (from changeset 65da9468c88b).  I have tested it by running DOM Inspector in the build of Firefox including the fix and verifying that namespace column was not spoken by JAWS 9.0.2169u in the DOM viewer with a XUL element selected.

Steps:
Start Firefox.
Open DOM Inspector.
Choose File > Chrome Document, and pick the DOM Inspector window.
In the left pane navigate to a window or page element.  Note that the namespace URI for XUL is not spoken by JAWS.  (To verify that there really is a hidden namespace URI, click the column picker icon and choose to show the namespace URI.  Verify that the namespace URI is now spoken by JAWS.)
Attachment #344436 - Flags: review?(aaronleventhal)
OOPS!  Instead of nsIAccessible::GetName in my last comment I meant nsXULTreeitemAccessibleWrap::GetName.
Gary, please add mochitest for this
Comment on attachment 344436 [details] [diff] [review]
Patches MSAA version of nsIAccessible::GetName to not include hidden tree columns.  This was fixed for ATK in 356347.

Thanks. I will have Alex review.
Attachment #344436 - Flags: review?(aaronleventhal) → review?(surkov.alexander)
Code looks ok at the first glance but I really would like to get mochitest before review.
Gary, any chance to create mochitest?
(In reply to comment #6)
> Gary, any chance to create mochitest?

I'm looking at it.  My available time just disappeared for a while.  Also, When I run the Mochitest a11y tests I get a bunch of fails, including stuff like:

17 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/a11y/accessible/test_bug368835.xul | Error thrown during test: uncaught exception: [Exception... "Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "native frame :: <unknown filename> :: <TOP_LEVEL> :: line 0"  data: no] - got 0, expected 1

and:

120 INFO Running chrome://mochikit/content/a11y/accessible/test_textboxes.html...
121 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/a11y/accessible/test_textboxes.html | Error thrown during test: Components is not defined - got 0, expected 1
123 INFO Running chrome://mochikit/content/a11y/accessible/test_textboxes.xul...

124 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/a11y/accessible/test_textboxes.xul | Error thrown during test: Components is not defined - got 0, expected 1

I'm running a system built on XP without the Vista stuff.

.mozconfig:
# mozilla config for Firefox
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@
ac_add_options --disable-vista-sdk-requirements   # from page refed in missing wpcapi.h error, caused by not new SDK installed.
# The following came from Mozilla Source Code (CVS) - MDC or Configuring Build Options - MDC web pages, should be covered by the above "source" command.
#ac_add_options --enable-application=browser
#mk_add_options MOZ_CO_PROJECT=browser

# Try to enable extensions Venkman and Inspector
#ac_add_options --enable-extensions=default,inspector,venkman

Now I have to go or I'm gonna have a lot more free time!

Gary
Attachment #344436 - Flags: review?(surkov.alexander)
Attachment #344436 - Flags: review?(marco.zehe)
Attachment #344436 - Flags: review+
Comment on attachment 344436 [details] [diff] [review]
Patches MSAA version of nsIAccessible::GetName to not include hidden tree columns.  This was fixed for ATK in 356347.

I missed actually it's MSAA part only, so there is no reason possibly to put platform-depended mochitest. Asking review from Marco to be sure all is going right.
Btw, some of our mochitest fail if you run them all together.
Attachment #344436 - Flags: review?(marco.zehe) → review+
Assignee: aaronleventhal → campg2003
Status: NEW → ASSIGNED
I'm not sure I want to take this bug yet. The problem is that most tree tables do not have a proper keyboard UI yet to change the columns configuration. In Thunderbird, for example, once this bug is fixed, the tree table of folder names will no longer expose the number of messages and the size of the folder to MSAA. If people got used to this information and want to get it back by enabling these columns, they currently have no way of doing so via the keyboard. See bug 370437.
Depends on: 370437
Friendly ping. Gary, any idea on my last comment?
I think I can manipulate the column picker with the JAWS cursor in the DOM inspector, but I wouldn't presume to speak for people using other products or other screen readers.  Still, since I haven't recreated a Mozilla build environment since my disk crash on Newyears, when I'm using the Inspector I often think about trying to figure out how to add a binary extension or something to update that file!  (Say "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" ten times fast!)
I believe the bug was fixed by some table reorganization works despite comment #10.

Marco, please file new one if there is anything we should address still (and of course if we don't have proper bug).

Closing the bug as worksforme.
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.