After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 490266 - Endless loop in navigating ARIA trees
Endless loop in navigating ARIA trees
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: general
unspecified
Other Linux
: High major
: 2.22.0
Assigned To: Scott Haeger
Orca Maintainers
Depends on:
Blocks: 423348
 
 
Reported: 2007-10-25 19:52 UTC by Scott Haeger
Modified: 2008-07-22 19:32 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
first version of Endless loop in navigating ARIA trees (1016 bytes, patch)
2007-10-26 15:46 UTC, Scott Haeger
reviewed Details | Review

Description Scott Haeger 2007-10-25 19:52:23 UTC
We are getting in an endless loop in the second while loop in gecko.getLineContentsAtOffset().  This is due to the fact that findNextCaretInOrder() returns the same exact item that was passed into getLineContentsAtOffset(), usually [list item | Fruits].

A solution to the problem is to remove the isAriaWidget() test in "if text and not self.isAriaWidget(obj):" at the top of findNextCaretInOrder().  However, this causes the listbox http://www.mozilla.org/access/dhtml/listbox to assume focus when navigating to it with the arrow keys.


To Reproduce:
1) Go to the following URL
http://test.cita.uiuc.edu/aria/tree/xhtml.php?title=Tree%20Example%201&ginc=includes/tree1a.inc&gcss=css/tree1a.css&gjs=../js/globals.js,../js/enable_app.js,js/tree1a.js

2) Navigate the tree for sometime, especially hitting the top tree item 'fruits'.
3) speech will stop and the CPU will peg indicating that you are stuck in the while loop.
Comment 1 Scott Haeger 2007-10-25 20:48:30 UTC
The tab container seen here http://archive.dojotoolkit.org/dojo-2007-09-20/dojotoolkit/dijit/tests/layout/test_TabContainer.html also has a similar problem.  In this case, the endless loop is in the the first while loop in getLineContentsAtOffset().  Unlike the tree problem, removing the isAriaWidget() in findNextCaretInOrder() does not fix the problem.
Comment 2 Scott Haeger 2007-10-26 15:46:06 UTC
Created attachment 97931 [details] [review]
first version of Endless loop in navigating ARIA trees

Seems to fix the problems on the listbox and the mozilla tabpanel.  However, right/left arrowing in dojo tabcontainer are not passed to the application.  This may be a separate issue.
Comment 3 Scott Haeger 2007-10-26 15:55:01 UTC
The latest dojo tabContainer does indeed work.  I was looking at an older version of the tabContainer example, which was pre-ARIA role markup change. 
Comment 4 Willie Walker 2007-11-06 21:40:20 UTC
This looks like a nice isolated fix.  Mike please test.
Comment 5 Scott Haeger 2007-11-06 21:43:05 UTC
Simple fix that prevents traversing into ARIA lists but still allows traversing other ARIA widgets that support the text interface.  The end result is that the caret is moved just before a list and at the first child of non-lists (tabpanel is a good example).
Comment 6 Mike Pedersen 2007-11-07 16:50:39 UTC
After testing this last night and this morning I can find nothing wrong with it.  
Comment 7 Scott Haeger 2007-11-08 14:34:05 UTC
Committed to trunk.  Marked as fixed.