Closed Bug 165998 Opened 22 years ago Closed 20 years ago

List item bounds incorrectly exposed via accessibility APIs

Categories

(Core :: XUL, defect, P1)

x86
Windows 2000
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: timeless, Assigned: aaronlev)

References

Details

(Keywords: access)

Attachments

(2 files)

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020830

tab to the Platform List box in a bugzilla form
You should see the platform field in magnify's window

This affects both html controls (non xbl) and xul controls (address card
properties, mail compose from field, mail compose <to|...> control)

instead you see some random part of the window (I think it's related to where
your mouse was when the gnomes last moved).
Blocks: 82207
Assignee: hewitt → aaronleventhal
Keywords: access
I've found that the list item bounds are incorrectly exposed in the following
sitatuons:
1. HTML comboboxes at all times.
2. HTML listboxes when the list has scrolled
3. XUL menulists when the list has scrolled
Blocks: atfmeta
Keywords: sec508
Priority: -- → P1
Summary: listboxes don't report focus to magnify.exe → List item bounds incorrectly exposed via accessibility APIs
Blocks: aix-access
It would be nice if GetScreenOrigin() could automatically handle any collapsed
views.
Comment on attachment 155178 [details] [diff] [review]
Clean up nsAccessible::GetScreenOrigin(), special case collapsed menulists/combos

Asking roc for sr= before I get r=, because we need the view expertise first.
Attachment #155178 - Flags: superreview?(roc)
+  widget->WidgetToScreen(nsRect(origin.x, origin.y, 0, 0), *aRect);

1,1 would be a better width and height ... something might try to be clever with
an empty rectangle.

+  while (selectContent) {
+    if (selectContent->Tag() == nsAccessibilityAtoms::select) {

Probably better to write this as

  while (selectContent && selectContent->Tag() != nsAccessibilityAtoms::select) {
    selectContent = selectContent->GetParent();
  }
  if (!selectContent) {
    return nsAccessible::GetBoundsFrame();
  }
  ...

and similar for the XUL.
Comment on attachment 155178 [details] [diff] [review]
Clean up nsAccessible::GetScreenOrigin(), special case collapsed menulists/combos

See comments in the bug
Attachment #155178 - Flags: superreview?(roc) → superreview+
Note, I didn't change the code in nsXULSelectAccessible to use tagname, because
QI is more convenient (there's already more than 1 tag implementing
nsIDOMXULMenuListElement -- menulist and autocomplete).
Comment on attachment 155624 [details] [diff] [review]
1) Addresses roc's comments 2) Fixes nsHTMLAreaAccessible 3) Gets rid of unnecessary GetScrollingOffsets()

Carrying roc's sr=
Attachment #155624 - Flags: superreview+
Attachment #155624 - Flags: review?(pkwarren)
Comment on attachment 155624 [details] [diff] [review]
1) Addresses roc's comments 2) Fixes nsHTMLAreaAccessible 3) Gets rid of unnecessary GetScrollingOffsets()

This code fails to build on Linux, with the following error message:

In file included from
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:43:
../../../dist/include/dom/nsIDOMXULSelectCntrlEl.h:33: warning: `virtual 
   nsresult 
  
nsIDOMXULSelectControlElement::GetSelectedItem(nsIDOMXULSelectControlItemElemen
t**)
   ' was hidden
../../../dist/include/dom/nsIDOMXULMultSelectCntrlEl.h:73: warning:   by `
   virtual nsresult nsIDOMXULMultiSelectControlElement::GetSelectedItem(int, 
   nsIDOMXULSelectControlItemElement**)'
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp: In instantiation of `nsDerivedSafe<nsIContent>':
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:337:   instantiated from here
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:337: error: base
   class `nsIContent' has incomplete type
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp: In
   member function `virtual nsIFrame*
   nsXULSelectOptionAccessible::GetBoundsFrame()':
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:337: error: no
   matching function for call to `do_QueryInterface(nsCOMPtr<nsIContent>&)'
../../../dist/include/xpcom/nsCOMPtr.h:379: error: candidates are: 
   nsQueryInterface do_QueryInterface(nsISupports*)
../../../dist/include/xpcom/nsCOMPtr.h:386: error:		   
   nsQueryInterfaceWithError do_QueryInterface(nsISupports*, nsresult*)
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:347: error: no
   matching function for call to `nsDerivedSafe<nsIPresShell>::
   GetPrimaryFrameFor(nsCOMPtr<nsIContent>&, nsIFrame**)'
../../../dist/include/layout/nsIPresShell.h:295: error: candidates are: virtual 
   nsresult nsIPresShell::GetPrimaryFrameFor(nsIContent*, nsIFrame**) const
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:352: error: `
   GetParent' undeclared (first use this function)
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:352: error: (Each
   undeclared identifier is reported only once for each function it appears
   in.)
../../../dist/include/xpcom/nsISupportsUtils.h: In static member function `
   static const nsIID& nsCOMTypeInfo<T>::GetIID() [with T = nsIContent]':
../../../dist/include/xpcom/nsCOMPtr.h:571:   instantiated from
`nsCOMPtr<T>::nsCOMPtr(nsQueryInterface) [with T = nsIContent]'
/home/pkw/sb/mozilla/devel-trunk/mozilla/accessible/src/xul/nsXULSelectAccessib
le.cpp:333:   instantiated from here
../../../dist/include/xpcom/nsISupportsUtils.h:202: error: incomplete type '
   nsIContent' cannot be used to name a scope
gmake[3]: *** [nsXULSelectAccessible.o] Error 1
gmake[3]: Leaving directory
`/home/pkw/sb/mozilla/devel-trunk/mozilla/obj-opt/accessible/src/xul'
Attachment #155624 - Flags: review?(pkwarren) → review-
Comment on attachment 155624 [details] [diff] [review]
1) Addresses roc's comments 2) Fixes nsHTMLAreaAccessible 3) Gets rid of unnecessary GetScrollingOffsets()

It looks like this is fixed if you just add an '#include "nsIContent.h"' in
nsXULSelectAccessible.cpp. r=pkw with that change.
Attachment #155624 - Flags: review- → review+
Comment on attachment 155624 [details] [diff] [review]
1) Addresses roc's comments 2) Fixes nsHTMLAreaAccessible 3) Gets rid of unnecessary GetScrollingOffsets()

Mozilla 1.8a3 is going to be an important accessibility testing branch for
ZoomText users. Can we get this in? It's the biggest ZoomText bug on our side.
This checkin only affects users testing accessibility software, it doesn't get
loaded otherwise.

I've taken care of pkwarren's comment about the missing #include.
Attachment #155624 - Flags: approval1.8a3?
Checking in accessible/src/base/nsAccessibilityAtomList.h;
/cvsroot/mozilla/accessible/src/base/nsAccessibilityAtomList.h,v  <-- 
nsAccessibilityAtomList.h
new revision: 1.7; previous revision: 1.6
done
Checking in accessible/src/base/nsAccessible.cpp;
/cvsroot/mozilla/accessible/src/base/nsAccessible.cpp,v  <--  nsAccessible.cpp
new revision: 1.115; previous revision: 1.114
done
Checking in accessible/src/base/nsAccessible.h;
/cvsroot/mozilla/accessible/src/base/nsAccessible.h,v  <--  nsAccessible.h
new revision: 1.51; previous revision: 1.50
done
Checking in accessible/src/html/nsHTMLAreaAccessible.cpp;
/cvsroot/mozilla/accessible/src/html/nsHTMLAreaAccessible.cpp,v  <-- 
nsHTMLAreaAccessible.cpp
new revision: 1.23; previous revision: 1.22
done
Checking in accessible/src/html/nsHTMLSelectAccessible.cpp;
/cvsroot/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp,v  <-- 
nsHTMLSelectAccessible.cpp
new revision: 1.38; previous revision: 1.37
done
Checking in accessible/src/html/nsHTMLSelectAccessible.h;
/cvsroot/mozilla/accessible/src/html/nsHTMLSelectAccessible.h,v  <-- 
nsHTMLSelectAccessible.h
new revision: 1.23; previous revision: 1.22
done
Checking in accessible/src/xul/nsXULSelectAccessible.cpp;
/cvsroot/mozilla/accessible/src/xul/nsXULSelectAccessible.cpp,v  <-- 
nsXULSelectAccessible.cpp
new revision: 1.22; previous revision: 1.21
done
Checking in accessible/src/xul/nsXULSelectAccessible.h;
/cvsroot/mozilla/accessible/src/xul/nsXULSelectAccessible.h,v  <-- 
nsXULSelectAccessible.h
new revision: 1.18; previous revision: 1.17
done
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Comment on attachment 155624 [details] [diff] [review]
1) Addresses roc's comments 2) Fixes nsHTMLAreaAccessible 3) Gets rid of unnecessary GetScrollingOffsets()

unsetting 1.8a3 approval request. we've shipped already.
Attachment #155624 - Flags: approval1.8a3?
Component: XP Toolkit/Widgets: Trees → XUL
QA Contact: shrir → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: