[orca] Fix for bug #638373 and bug #638210.



commit c1988239443692e1d79c443715f2911c1adadf2b
Author: Joanmarie Diggs <joanmarie diggs gmail com>
Date:   Thu Dec 30 19:56:33 2010 -0500

    Fix for bug #638373 and bug #638210.
    
    * Bug #638373 - Orca does not present all selected items in multi-
      select lists in Gecko
    
    * Bug #638210 - Gecko generators should use getSelectedChild()
      rather than iterating through children and using isChildSelected()

 .../scripts/toolkits/Gecko/braille_generator.py    |   24 ++--
 .../scripts/toolkits/Gecko/speech_generator.py     |   23 ++--
 ...arch.py.hang => label_guess_bugzilla_search.py} |   21 +--
 ..._search.py.hang => line_nav_bugzilla_search.py} |  144 ++++++++--------
 test/keystrokes/firefox/sayAll_bugzilla_search.py  |  181 ++++++++++++++++++++
 .../firefox/sayAll_bugzilla_search.py.hang         |  179 -------------------
 6 files changed, 283 insertions(+), 289 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/braille_generator.py b/src/orca/scripts/toolkits/Gecko/braille_generator.py
index 5a8380b..7a91e2c 100644
--- a/src/orca/scripts/toolkits/Gecko/braille_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/braille_generator.py
@@ -32,7 +32,6 @@ __license__   = "LGPL"
 import pyatspi
 
 import orca.braille_generator as braille_generator
-import orca.orca_state as orca_state
 
 from orca.orca_i18n import _ # for gettext support
 
@@ -221,18 +220,17 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
     def _generateFocusedItem(self, obj, **args):
         result = []
         role = args.get('role', obj.getRole())
-        if role == pyatspi.ROLE_LIST:
-            item = None
-            selection = obj.querySelection()
-            for i in xrange(obj.childCount):
-                if selection.isChildSelected(i):
-                    item = obj[i]
-                    break
-            item = item or obj[0]
-            if item and (item != orca_state.locusOfFocus):
-                name = self._generateName(item, **args)
-                if name and name != self._generateLabel(obj, **args):
-                    result.extend(name)
+        if role != pyatspi.ROLE_LIST:
+            return result
+
+        s = obj.querySelection()
+        items = [s.getSelectedChild(i) for i in xrange(s.nSelectedChildren)]
+        if not items:
+            items.append(obj[0])
+        items = map(self._generateName, items)
+        for item in items:
+            result.extend(item)
+
         return result
 
     def generateBraille(self, obj, **args):
diff --git a/src/orca/scripts/toolkits/Gecko/speech_generator.py b/src/orca/scripts/toolkits/Gecko/speech_generator.py
index 348047d..4b004a8 100644
--- a/src/orca/scripts/toolkits/Gecko/speech_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/speech_generator.py
@@ -311,18 +311,17 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
     def _generateFocusedItem(self, obj, **args):
         result = []
         role = args.get('role', obj.getRole())
-        if role == pyatspi.ROLE_LIST:
-            item = None
-            selection = obj.querySelection()
-            for i in xrange(obj.childCount):
-                if selection.isChildSelected(i):
-                    item = obj[i]
-                    break
-            item = item or obj[0]
-            if item:
-                name = self._generateName(item, **args)
-                if name and name != self._generateLabel(obj, **args):
-                    result.extend(name)
+        if role != pyatspi.ROLE_LIST:
+            return result
+
+        s = obj.querySelection()
+        items = [s.getSelectedChild(i) for i in xrange(s.nSelectedChildren)]
+        if not items:
+            items.append(obj[0])
+        items = map(self._generateName, items)
+        for item in items:
+            result.extend(item)
+
         return result
 
     def _generateAncestors(self, obj, **args):
diff --git a/test/keystrokes/firefox/label_guess_bugzilla_search.py.hang b/test/keystrokes/firefox/label_guess_bugzilla_search.py
similarity index 96%
rename from test/keystrokes/firefox/label_guess_bugzilla_search.py.hang
rename to test/keystrokes/firefox/label_guess_bugzilla_search.py
index 5829273..96de182 100644
--- a/test/keystrokes/firefox/label_guess_bugzilla_search.py.hang
+++ b/test/keystrokes/firefox/label_guess_bugzilla_search.py
@@ -45,6 +45,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
      "BRAILLE LINE:  'Home Image Bugzilla New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
      "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
+     "SPEECH OUTPUT: 'Home link image Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
      "SPEECH OUTPUT: 'Home link image'"]))
 
 ########################################################################
@@ -89,10 +90,9 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field",
-    ["KNOWN ISSUE - Something is making this test stall here."]))
-#    ["BRAILLE LINE:  'Classification: Admin List'",
-#     "     VISIBLE:  'Classification: Admin List', cursor=17",
-#     "SPEECH OUTPUT: 'Classification: Admin multi-select List with 8 items'"]))
+    ["BRAILLE LINE:  'Classification: Admin List'",
+     "     VISIBLE:  'Classification: Admin List', cursor=17",
+     "SPEECH OUTPUT: 'Classification: Admin multi-select List with 8 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -100,10 +100,9 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["KNOWN ISSUE - Something is making this test stall here."]))
-#    ["BRAILLE LINE:  'Product: accerciser List'",
-#     "     VISIBLE:  'Product: accerciser List', cursor=10",
-#     "SPEECH OUTPUT: 'Product: accerciser multi-select List with 379 items'"]))
+    ["BRAILLE LINE:  'Product: accerciser List'",
+     "     VISIBLE:  'Product: accerciser List', cursor=10",
+     "SPEECH OUTPUT: 'Product: accerciser multi-select List with 379 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -202,9 +201,9 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  'Status: UNCONFIRMED List'",
-     "     VISIBLE:  'Status: UNCONFIRMED List', cursor=9",
-     "SPEECH OUTPUT: 'Status: UNCONFIRMED multi-select List with 8 items'"]))
+    ["BRAILLE LINE:  'Status: UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO List'",
+     "     VISIBLE:  'Status: UNCONFIRMED NEW ASSIGNED', cursor=9",
+     "SPEECH OUTPUT: 'Status: UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO multi-select List with 8 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
diff --git a/test/keystrokes/firefox/line_nav_bugzilla_search.py.hang b/test/keystrokes/firefox/line_nav_bugzilla_search.py
similarity index 90%
rename from test/keystrokes/firefox/line_nav_bugzilla_search.py.hang
rename to test/keystrokes/firefox/line_nav_bugzilla_search.py
index c987b5b..fb60ab3 100644
--- a/test/keystrokes/firefox/line_nav_bugzilla_search.py.hang
+++ b/test/keystrokes/firefox/line_nav_bugzilla_search.py
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
      "BRAILLE LINE:  'Home Image Bugzilla New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
      "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
-     "SPEECH OUTPUT: 'Home link Image Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
+     "SPEECH OUTPUT: 'Home link image Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
      "SPEECH OUTPUT: 'Home link image'"]))
 
 ########################################################################
@@ -101,19 +101,17 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["KNOWN ISSUE - Something is making this test stall here."]))
-#    ["BRAILLE LINE:  'accerciser List'",
-#     "     VISIBLE:  'accerciser List', cursor=1",
-#     "SPEECH OUTPUT: 'accerciser multi-select List with 379 items'"]))
+    ["BRAILLE LINE:  'accerciser List'",
+     "     VISIBLE:  'accerciser List', cursor=1",
+     "SPEECH OUTPUT: 'accerciser multi-select List with 379 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["KNOWN ISSUE - Something is making this test stall here."]))
-#    ["BRAILLE LINE:  'Component:'",
-#     "     VISIBLE:  'Component:', cursor=1",
-#     "SPEECH OUTPUT: 'Component link :'"]))
+    ["BRAILLE LINE:  'Component:'",
+     "     VISIBLE:  'Component:', cursor=1",
+     "SPEECH OUTPUT: 'Component link : column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -129,7 +127,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Version:'",
      "     VISIBLE:  'Version:', cursor=1",
-     "SPEECH OUTPUT: 'Version:'"]))
+     "SPEECH OUTPUT: 'Version: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -145,7 +143,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Target Milestone:'",
      "     VISIBLE:  'Target Milestone:', cursor=1",
-     "SPEECH OUTPUT: 'Target Milestone:'"]))
+     "SPEECH OUTPUT: 'Target Milestone: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -161,7 +159,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'A Comment: contains the string Combo $l'",
      "     VISIBLE:  'A Comment: contains the string C', cursor=1",
-     "SPEECH OUTPUT: 'A Comment: contains the string combo box text'"]))
+     "SPEECH OUTPUT: 'A Comment: row header contains the string combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -169,7 +167,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings Combo $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
-     "SPEECH OUTPUT: 'Whiteboard: contains all of the words/strings combo box text'"]))
+     "SPEECH OUTPUT: 'Whiteboard: row header contains all of the words/strings combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -177,7 +175,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Keywords: contains all of the keywords Combo $l'",
      "     VISIBLE:  'Keywords: contains all of the ke', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link : contains all of the keywords combo box text'"]))
+     "SPEECH OUTPUT: 'Keywords link : row header contains all of the keywords combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -193,15 +191,15 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Status:'",
      "     VISIBLE:  'Status:', cursor=1",
-     "SPEECH OUTPUT: 'Status:'"]))
+     "SPEECH OUTPUT: 'Status: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'UNCONFIRMED List'",
-     "     VISIBLE:  'UNCONFIRMED List', cursor=1",
-     "SPEECH OUTPUT: 'UNCONFIRMED' voice=uppercase",
+    ["BRAILLE LINE:  'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO List'",
+     "     VISIBLE:  'UNCONFIRMED NEW ASSIGNED REOPENE', cursor=1",
+     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO' voice=uppercase",
      "SPEECH OUTPUT: 'multi-select List with 8 items'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -210,7 +208,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Resolution:'",
      "     VISIBLE:  'Resolution:', cursor=1",
-     "SPEECH OUTPUT: 'Resolution:'"]))
+     "SPEECH OUTPUT: 'Resolution: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -227,7 +225,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Severity:'",
      "     VISIBLE:  'Severity:', cursor=1",
-     "SPEECH OUTPUT: 'Severity:'"]))
+     "SPEECH OUTPUT: 'Severity: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -243,7 +241,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'Priority:'",
      "     VISIBLE:  'Priority:', cursor=1",
-     "SPEECH OUTPUT: 'Priority:'"]))
+     "SPEECH OUTPUT: 'Priority: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -259,7 +257,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'OS:'",
      "     VISIBLE:  'OS:', cursor=1",
-     "SPEECH OUTPUT: 'OS:'"]))
+     "SPEECH OUTPUT: 'OS: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -441,17 +439,18 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Only bugs changed between:'",
-     "     VISIBLE:  'Only bugs changed between:', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between:'"]))
+    ["BRAILLE LINE:  'â?¢Only bugs changed between:'",
+     "     VISIBLE:  'â?¢Only bugs changed between:', cursor=1",
+     "SPEECH OUTPUT: 'â?¢Only bugs changed between:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  ' $l and Now $l'",
+    ["BUG? - As with label guess, we're not guessing this label correctly",
+     "BRAILLE LINE:  ' $l and Now $l'",
      "     VISIBLE:  ' $l and Now $l', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between: text  and text Now  ",
+     "SPEECH OUTPUT: 'Email and Numbering text  and text Now ",
      "'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -466,9 +465,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'where one or more of the following changed:'",
-     "     VISIBLE:  'where one or more of the followi', cursor=1",
-     "SPEECH OUTPUT: 'where one or more of the following changed:'"]))
+    ["BRAILLE LINE:  'â?¢where one or more of the following changed:'",
+     "     VISIBLE:  'â?¢where one or more of the follow', cursor=1",
+     "SPEECH OUTPUT: 'â?¢where one or more of the following changed:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -482,9 +481,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'and the new value was:'",
-     "     VISIBLE:  'and the new value was:', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was:'"]))
+    ["BRAILLE LINE:  'â?¢and the new value was:'",
+     "     VISIBLE:  'â?¢and the new value was:', cursor=1",
+     "SPEECH OUTPUT: 'â?¢and the new value was:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -492,7 +491,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was: text'"]))
+     "SPEECH OUTPUT: 'Email and Numbering text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -500,7 +499,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'GNOME version:'",
      "     VISIBLE:  'GNOME version:', cursor=1",
-     "SPEECH OUTPUT: 'GNOME version:'"]))
+     "SPEECH OUTPUT: 'GNOME version: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -516,7 +515,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Down",
     ["BRAILLE LINE:  'GNOME target:'",
      "     VISIBLE:  'GNOME target:', cursor=1",
-     "SPEECH OUTPUT: 'GNOME target:'"]))
+     "SPEECH OUTPUT: 'GNOME target: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -695,7 +694,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'GNOME target:'",
      "     VISIBLE:  'GNOME target:', cursor=1",
-     "SPEECH OUTPUT: 'GNOME target:'"]))
+     "SPEECH OUTPUT: 'GNOME target: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -711,7 +710,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'GNOME version:'",
      "     VISIBLE:  'GNOME version:', cursor=1",
-     "SPEECH OUTPUT: 'GNOME version:'"]))
+     "SPEECH OUTPUT: 'GNOME version: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -719,15 +718,15 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  ' $l'",
      "     VISIBLE:  ' $l', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was: text'",]))
+     "SPEECH OUTPUT: 'Email and Numbering text'",]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'and the new value was:'",
-     "     VISIBLE:  'and the new value was:', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was:'"]))
+    ["BRAILLE LINE:  'â?¢and the new value was:'",
+     "     VISIBLE:  'â?¢and the new value was:', cursor=1",
+     "SPEECH OUTPUT: 'â?¢and the new value was:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -741,9 +740,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'where one or more of the following changed:'",
-     "     VISIBLE:  'where one or more of the followi', cursor=1",
-     "SPEECH OUTPUT: 'where one or more of the following changed:'"]))
+    ["BRAILLE LINE:  'â?¢where one or more of the following changed:'",
+     "     VISIBLE:  'â?¢where one or more of the follow', cursor=1",
+     "SPEECH OUTPUT: 'â?¢where one or more of the following changed:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -757,18 +756,19 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  ' $l and Now $l'",
+    ["BUG? - As with label guess, we're not guessing this label correctly",
+     "BRAILLE LINE:  ' $l and Now $l'",
      "     VISIBLE:  ' $l and Now $l', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between: text  and text Now ",
+     "SPEECH OUTPUT: 'Email and Numbering text  and text Now ",
      "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'Only bugs changed between:'",
-     "     VISIBLE:  'Only bugs changed between:', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between:'"]))
+    ["BRAILLE LINE:  'â?¢Only bugs changed between:'",
+     "     VISIBLE:  'â?¢Only bugs changed between:', cursor=1",
+     "SPEECH OUTPUT: 'â?¢Only bugs changed between:'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -952,7 +952,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'OS:'",
      "     VISIBLE:  'OS:', cursor=1",
-     "SPEECH OUTPUT: 'OS:'"]))
+     "SPEECH OUTPUT: 'OS: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -968,7 +968,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Priority:'",
      "     VISIBLE:  'Priority:', cursor=1",
-     "SPEECH OUTPUT: 'Priority:'"]))
+     "SPEECH OUTPUT: 'Priority: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -984,7 +984,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Severity:'",
      "     VISIBLE:  'Severity:', cursor=1",
-     "SPEECH OUTPUT: 'Severity:'"]))
+     "SPEECH OUTPUT: 'Severity: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1001,15 +1001,15 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Resolution:'",
      "     VISIBLE:  'Resolution:', cursor=1",
-     "SPEECH OUTPUT: 'Resolution:'"]))
+     "SPEECH OUTPUT: 'Resolution: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'UNCONFIRMED List'",
-     "     VISIBLE:  'UNCONFIRMED List', cursor=1",
-     "SPEECH OUTPUT: 'UNCONFIRMED' voice=uppercase",
+    ["BRAILLE LINE:  'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO List'",
+     "     VISIBLE:  'UNCONFIRMED NEW ASSIGNED REOPENE', cursor=1",
+     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO' voice=uppercase",
      "SPEECH OUTPUT: 'multi-select List with 8 items'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1018,7 +1018,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Status:'",
      "     VISIBLE:  'Status:', cursor=1",
-     "SPEECH OUTPUT: 'Status:'"]))
+     "SPEECH OUTPUT: 'Status: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1034,7 +1034,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Keywords: contains all of the keywords Combo $l'",
      "     VISIBLE:  'Keywords: contains all of the ke', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link : contains all of the keywords combo box text'"]))
+     "SPEECH OUTPUT: 'Keywords link : row header contains all of the keywords combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1042,7 +1042,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings Combo $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
-     "SPEECH OUTPUT: 'Whiteboard: contains all of the words/strings combo box text'"]))
+     "SPEECH OUTPUT: 'Whiteboard: row header contains all of the words/strings combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1050,7 +1050,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'A Comment: contains the string Combo $l'",
      "     VISIBLE:  'A Comment: contains the string C', cursor=1",
-     "SPEECH OUTPUT: 'A Comment: contains the string combo box text'"]))
+     "SPEECH OUTPUT: 'A Comment: row header contains the string combo box text'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1066,7 +1066,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Target Milestone:'",
      "     VISIBLE:  'Target Milestone:', cursor=1",
-     "SPEECH OUTPUT: 'Target Milestone:'"]))
+     "SPEECH OUTPUT: 'Target Milestone: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1082,7 +1082,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Version:'",
      "     VISIBLE:  'Version:', cursor=1",
-     "SPEECH OUTPUT: 'Version:'"]))
+     "SPEECH OUTPUT: 'Version: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1098,7 +1098,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Component:'",
      "     VISIBLE:  'Component:', cursor=1",
-     "SPEECH OUTPUT: 'Component link :'"]))
+     "SPEECH OUTPUT: 'Component link : column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1114,7 +1114,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Product:'",
      "     VISIBLE:  'Product:', cursor=1",
-     "SPEECH OUTPUT: 'Product:'"]))
+     "SPEECH OUTPUT: 'Product: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1130,7 +1130,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Classification:'",
      "     VISIBLE:  'Classification:', cursor=1",
-     "SPEECH OUTPUT: 'Classification:'"]))
+     "SPEECH OUTPUT: 'Classification: column header'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1138,7 +1138,7 @@ sequence.append(utils.AssertPresentationAction(
     "Line Up",
     ["BRAILLE LINE:  'Summary: contains all of the words/strings Combo $l Search Button'",
      "     VISIBLE:  'Summary: contains all of the wor', cursor=1",
-     "SPEECH OUTPUT: 'Summary: contains all of the words/strings combo box text Search button'"]))
+     "SPEECH OUTPUT: 'Summary: row header contains all of the words/strings combo box text Search button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -1160,13 +1160,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'Home Image Bugzilla'",
-     "     VISIBLE:  'Home Image Bugzilla', cursor=1",
-     "BRAILLE LINE:  'Home Image Bugzilla New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
-     "     VISIBLE:  'Home Image Bugzilla New bug', cursor=1",
-     "SPEECH OUTPUT: 'Home link Image Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
-     "SPEECH OUTPUT: 'Home link image Bugzilla'"
-     "SPEECH OUTPUT: Home link image'"]))
+    ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
+     "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
+     "SPEECH OUTPUT: 'New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'"]))
 
 ########################################################################
 # Move to the location bar by pressing Control+L.  When it has focus
diff --git a/test/keystrokes/firefox/sayAll_bugzilla_search.py b/test/keystrokes/firefox/sayAll_bugzilla_search.py
new file mode 100644
index 0000000..006cf43
--- /dev/null
+++ b/test/keystrokes/firefox/sayAll_bugzilla_search.py
@@ -0,0 +1,181 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/python
+
+"""Test of sayAll output of Firefox on bugzilla's advanced search page."""
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+########################################################################
+# We wait for the focus to be on a blank Firefox window.
+#
+sequence.append(WaitForWindowActivate(utils.firefoxFrameNames, None))
+
+########################################################################
+# Load the local "simple form" test case.
+#
+sequence.append(KeyComboAction("<Control>l"))
+sequence.append(WaitForFocus(acc_role=pyatspi.ROLE_ENTRY))
+
+sequence.append(TypeAction(utils.htmlURLPrefix + "bugzilla-advanced.html"))
+sequence.append(KeyComboAction("Return"))
+
+sequence.append(WaitForDocLoad())
+
+sequence.append(WaitForFocus("Search for bugs",
+                             acc_role=pyatspi.ROLE_DOCUMENT_FRAME))
+
+########################################################################
+# Press Orca+Right to get out of the focused entry, then Control+Home
+# to move to the top.
+#
+sequence.append(KeyPressAction(0, None, "KP_Insert"))
+sequence.append(KeyComboAction("Right"))
+sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "Top of file",
+    ["BRAILLE LINE:  'Home Image Bugzilla New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
+     "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
+     "BRAILLE LINE:  'Home Image Bugzilla New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs gmail com | Log Out'",
+     "     VISIBLE:  'Home Image Bugzilla New bug · Br', cursor=1",
+     "SPEECH OUTPUT: 'Home link image Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
+     "SPEECH OUTPUT: 'Home link image'"]))
+
+########################################################################
+# SayAll to the End.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("KP_Add"))
+sequence.append(utils.AssertPresentationAction(
+    "KP_Add to do a SayAll",
+    ["SPEECH OUTPUT: 'Home link image'",
+     "SPEECH OUTPUT: 'Bugzilla New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie diggs gmail com | Log Out link'",
+     "SPEECH OUTPUT: ' '",
+     "SPEECH OUTPUT: 'Short Bug Search Form link'",
+     "SPEECH OUTPUT: 'Complicated Bug Search Form'",
+     "SPEECH OUTPUT: ' '",
+     "SPEECH OUTPUT: 'Give me some help link'",
+     "SPEECH OUTPUT: ' (reloads page.)'",
+     "SPEECH OUTPUT: 'Summary: row header'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'Search button'",
+     "SPEECH OUTPUT: 'Classification: column header'",
+     "SPEECH OUTPUT: 'Admin multi-select List with 8 items'",
+     "SPEECH OUTPUT: 'Product: column header'",
+     "SPEECH OUTPUT: 'accerciser multi-select List with 379 items'",
+     "SPEECH OUTPUT: 'Component link'",
+     "SPEECH OUTPUT: ': column header'",
+     "SPEECH OUTPUT: 'abiscan multi-select List with 1248 items'",
+     "SPEECH OUTPUT: 'Version: column header'",
+     "SPEECH OUTPUT: '0.0.1 multi-select List with 857 items'",
+     "SPEECH OUTPUT: 'Target Milestone: column header'",
+     "SPEECH OUTPUT: '--- multi-select List with 555 items'",
+     "SPEECH OUTPUT: 'A Comment: row header'",
+     "SPEECH OUTPUT: 'contains the string combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'Whiteboard: row header'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'Keywords link'",
+     "SPEECH OUTPUT: ': row header'",
+     "SPEECH OUTPUT: 'contains all of the keywords combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'separator'",
+     "SPEECH OUTPUT: 'Status: column header'",
+     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO'",
+     "SPEECH OUTPUT: 'multi-select List with 8 items'",
+     "SPEECH OUTPUT: 'Resolution: column header'",
+     "SPEECH OUTPUT: 'FIXED'",
+     "SPEECH OUTPUT: 'multi-select List with 12 items'",
+     "SPEECH OUTPUT: 'Severity: column header'",
+     "SPEECH OUTPUT: 'blocker multi-select List with 7 items'",
+     "SPEECH OUTPUT: 'Priority: column header'",
+     "SPEECH OUTPUT: 'Immediate multi-select List with 5 items'",
+     "SPEECH OUTPUT: 'OS: column header'",
+     "SPEECH OUTPUT: 'All multi-select List with 21 items'",
+     "SPEECH OUTPUT: 'Email and Numbering'",
+     "SPEECH OUTPUT: 'Any one of:'",
+     "SPEECH OUTPUT: 'check box checked'",
+     "SPEECH OUTPUT: ' the bug assignee'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' the reporter'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' the QA contact'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' a CC list member'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' a commenter'",
+     "SPEECH OUTPUT: 'contains combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'Any one of:'",
+     "SPEECH OUTPUT: 'check box checked'",
+     "SPEECH OUTPUT: ' the bug assignee'",
+     "SPEECH OUTPUT: 'check box checked'",
+     "SPEECH OUTPUT: ' the reporter'",
+     "SPEECH OUTPUT: 'check box checked'",
+     "SPEECH OUTPUT: ' the QA contact'",
+     "SPEECH OUTPUT: 'check box checked'",
+     "SPEECH OUTPUT: ' a CC list member'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' a commenter'",
+     "SPEECH OUTPUT: 'contains combo box'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'separator'",
+     "SPEECH OUTPUT: 'Only include combo box'",
+     "SPEECH OUTPUT: 'bugs numbered:'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: '(comma-separated list)'",
+     "SPEECH OUTPUT: 'Bug Changes'",
+     "SPEECH OUTPUT: 'â?¢Only bugs changed between:'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: ' and text Now ",
+     "(YYYY-MM-DD or relative dates)'",
+     "SPEECH OUTPUT: 'â?¢where one or more of the following changed:'",
+     "SPEECH OUTPUT: '[Bug creation] multi-select List with 26 items'",
+     "SPEECH OUTPUT: 'â?¢and the new value was:'",
+     "SPEECH OUTPUT: 'text'",
+     "SPEECH OUTPUT: 'GNOME version: column header'",
+     "SPEECH OUTPUT: 'Unspecified multi-select List with 14 items'",
+     "SPEECH OUTPUT: 'GNOME target: column header'",
+     "SPEECH OUTPUT: 'Unspecified multi-select List with 12 items'",
+     "SPEECH OUTPUT: 'Sort results by: Reuse same sort as last time combo box'",
+     "SPEECH OUTPUT: 'Search button'",
+     "SPEECH OUTPUT: '    check box not checked  and remember these as my default search options'",
+     "SPEECH OUTPUT: 'separator'",
+     "SPEECH OUTPUT: 'Advanced Searching Using Boolean Charts:'",
+     "SPEECH OUTPUT: 'check box not checked'",
+     "SPEECH OUTPUT: ' Not (negate this whole chart)'",
+     "SPEECH OUTPUT: '--- combo box'",
+     "SPEECH OUTPUT: '--- combo box text'",
+     "SPEECH OUTPUT: 'Or button'",
+     "SPEECH OUTPUT: 'And button'",
+     "SPEECH OUTPUT: '       Add another boolean chart button       '",
+     "SPEECH OUTPUT: 'separator'",
+     "SPEECH OUTPUT: 'Saved Searches: My Bugs and Patches link  | All Orca link  | Firefox link  | open orca link  | Open RFEs link'"]))
+
+########################################################################
+# Move to the location bar by pressing Control+L.  When it has focus
+# type "about:blank" and press Return to restore the browser to the
+# conditions at the test's start.
+#
+sequence.append(KeyComboAction("<Control>l"))
+sequence.append(WaitForFocus(acc_role=pyatspi.ROLE_ENTRY))
+
+sequence.append(TypeAction("about:blank"))
+sequence.append(KeyComboAction("Return"))
+
+sequence.append(WaitForDocLoad())
+
+# Just a little extra wait to let some events get through.
+#
+sequence.append(PauseAction(3000))
+
+sequence.append(utils.AssertionSummaryAction())
+
+sequence.start()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]