Package: release.debian.org Severity: normal Tags: jessie User: release.debian....@packages.debian.org Usertags: pu
Hello, In Bug#800602, a blind user reported that when using the greeter-hide-users=false option of lightdm, on reboot the focus is as expected initially on the password field, so the user can directly type it. The Orca screen reader however happens to speak the password letters out loud instead of just "star"! This is due to the way Orca discovers widgets, it does not notice that this is a password field, and thus continues to speak typed letters out. Upstream fixed this by checking hard, before speaking typed letters out, whether the current widget is a password widget, and we have been testing this fix in unstable & testing since 20th october now. Since speaking passwords out loud is a security issue, I'd like to upload the attached change which backports the fix. Samuel -- System Information: Debian Release: stretch/sid APT prefers testing APT policy: (990, 'testing'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.2.4 (SMP w/4 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) -- Samuel Actually, typing random strings in the Finder does the equivalent of filename completion. (Discussion in comp.os.linux.misc on the intuitiveness of commands: file completion vs. the Mac Finder.)
diff -Nru gnome-orca-3.14.0/debian/changelog gnome-orca-3.14.0/debian/changelog --- gnome-orca-3.14.0/debian/changelog 2015-02-15 23:51:26.000000000 +0100 +++ gnome-orca-3.14.0/debian/changelog 2015-11-11 01:20:47.000000000 +0100 @@ -1,3 +1,10 @@ +gnome-orca (3.14.0-4+deb8u1) jessie; urgency=medium + + * patches/password-not-spoken.diff: Make sure to bring focus on password + entry when typing a key, so we don't echo it. (Closes: #800602). + + -- Samuel Thibault <sthiba...@debian.org> Wed, 11 Nov 2015 01:19:34 +0100 + gnome-orca (3.14.0-4) unstable; urgency=medium * Team upload. diff -Nru gnome-orca-3.14.0/debian/patches/password-not-spoken.diff gnome-orca-3.14.0/debian/patches/password-not-spoken.diff --- gnome-orca-3.14.0/debian/patches/password-not-spoken.diff 1970-01-01 01:00:00.000000000 +0100 +++ gnome-orca-3.14.0/debian/patches/password-not-spoken.diff 2015-11-11 01:17:29.000000000 +0100 @@ -0,0 +1,89 @@ +commit 4d23f948e15dcdc741ee8b8c45b5aca2a4ee7fc3 +Author: Joanmarie Diggs <jdi...@igalia.com> +Date: Tue Oct 20 16:33:03 2015 -0400 + + Be sure we have an active window and focused object when a key is pressed + +--- a/src/orca/orca.py ++++ b/src/orca/orca.py +@@ -250,6 +250,8 @@ def _processKeyboardEvent(event): + return False + + if isPressedEvent: ++ if not orca_state.activeWindow: ++ orca_state.activeWindow = script.utilities.activeWindow() + script.presentationInterrupt() + script.presentKeyboardEvent(keyboardEvent) + if keyboardEvent.isModifierKey() and not isOrcaModifier: +--- a/src/orca/script_utilities.py ++++ b/src/orca/script_utilities.py +@@ -661,6 +661,9 @@ class Utilities: + the FOCUSED state can be found. + """ + ++ if not root: ++ return None ++ + if root.getState().contains(pyatspi.STATE_FOCUSED): + return root + +--- a/src/orca/scripts/default.py ++++ b/src/orca/scripts/default.py +@@ -2527,6 +2527,11 @@ class Script(script.Script): + - event: the Event + """ + ++ role = event.source.getRole() ++ state = event.source.getState() ++ if role == pyatspi.ROLE_PASSWORD_TEXT and state.contains(pyatspi.STATE_FOCUSED): ++ orca.setLocusOfFocus(event, event.source, False) ++ + # Ignore text deletions from non-focused objects, unless the + # currently focused object is the parent of the object from which + # text was deleted +@@ -2538,7 +2543,7 @@ class Script(script.Script): + # We'll also ignore sliders because we get their output via + # their values changing. + # +- if event.source.getRole() == pyatspi.ROLE_SLIDER: ++ if role == pyatspi.ROLE_SLIDER: + return + + # [[[NOTE: WDW - if we handle events synchronously, we'll +@@ -2606,6 +2611,11 @@ class Script(script.Script): + - event: the Event + """ + ++ role = event.source.getRole() ++ state = event.source.getState() ++ if role == pyatspi.ROLE_PASSWORD_TEXT and state.contains(pyatspi.STATE_FOCUSED): ++ orca.setLocusOfFocus(event, event.source, False) ++ + # Ignore text insertions from non-focused objects, unless the + # currently focused object is the parent of the object from which + # text was inserted. +@@ -2617,11 +2627,9 @@ class Script(script.Script): + ignoreRoles = [pyatspi.ROLE_LABEL, + pyatspi.ROLE_SLIDER, + pyatspi.ROLE_SPIN_BUTTON] +- role = event.source.getRole() + if role in ignoreRoles: + return + +- state = event.source.getState() + if role == pyatspi.ROLE_TABLE_CELL \ + and not state.contains(pyatspi.STATE_FOCUSED) \ + and not state.contains(pyatspi.STATE_SELECTED): +@@ -4147,6 +4155,12 @@ class Script(script.Script): + except: + return False + ++ if role in [pyatspi.ROLE_DIALOG, pyatspi.ROLE_FRAME, pyatspi.ROLE_WINDOW]: ++ focusedObject = self.utilities.focusedObject(orca_state.activeWindow) ++ if focusedObject: ++ orca.setLocusOfFocus(None, focusedObject, False) ++ role = focusedObject.getRole() ++ + if role == pyatspi.ROLE_PASSWORD_TEXT: + return False + diff -Nru gnome-orca-3.14.0/debian/patches/series gnome-orca-3.14.0/debian/patches/series --- gnome-orca-3.14.0/debian/patches/series 2015-02-15 23:50:51.000000000 +0100 +++ gnome-orca-3.14.0/debian/patches/series 2015-11-11 01:17:18.000000000 +0100 @@ -1,3 +1,4 @@ mate-notifications.diff lightdm libreoffice +password-not-spoken.diff