[orca] Filter out selection event spam from browser chrome autocompletes
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Filter out selection event spam from browser chrome autocompletes
- Date: Wed, 7 Oct 2015 21:37:42 +0000 (UTC)
commit ca1c7103df879606d2edf34c0e555f4e4bd5cead
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Wed Oct 7 17:26:42 2015 -0400
Filter out selection event spam from browser chrome autocompletes
src/orca/scripts/toolkits/Gecko/script.py | 10 +++++++++
src/orca/scripts/web/script.py | 25 ++++++++++++++++++++++
src/orca/scripts/web/script_utilities.py | 32 +++++++++++++++++++++++++++++
3 files changed, 67 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index 6497a18..a9f75cf 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -218,6 +218,16 @@ class Script(web.Script):
debug.println(debug.LEVEL_INFO, msg)
default.Script.onNameChanged(self, event)
+ def onSelectedChanged(self, event):
+ """Callback for object:state-changed:selected accessibility events."""
+
+ if super().onSelectedChanged(event):
+ return
+
+ msg = "GECKO: Passing along event to default script"
+ debug.println(debug.LEVEL_INFO, msg)
+ default.Script.onSelectedChanged(self, event)
+
def onSelectionChanged(self, event):
"""Callback for object:selection-changed accessibility events."""
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 7cc444f..04e2b0f 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -1444,9 +1444,34 @@ class Script(default.Script):
return True
+ def onSelectedChanged(self, event):
+ """Callback for object:state-changed:selected accessibility events."""
+
+ if self.utilities.eventIsChromeAutocompleteNoise(event):
+ msg = "WEB: Ignoring event believed to be chrome autocomplete noise"
+ debug.println(debug.LEVEL_INFO, msg)
+ return True
+
+ if not self.utilities.inDocumentContent(event.source):
+ msg = "WEB: Event source is not in document content"
+ debug.println(debug.LEVEL_INFO, msg)
+ return False
+
+ if orca_state.locusOfFocus != event.source:
+ msg = "WEB: Ignoring because event source is not locusOfFocus"
+ debug.println(debug.LEVEL_INFO, msg)
+ return True
+
+ return False
+
def onSelectionChanged(self, event):
"""Callback for object:selection-changed accessibility events."""
+ if self.utilities.eventIsChromeAutocompleteNoise(event):
+ msg = "WEB: Ignoring event believed to be chrome autocomplete noise"
+ debug.println(debug.LEVEL_INFO, msg)
+ return True
+
if not self.utilities.inDocumentContent(event.source):
msg = "WEB: Event source is not in document content"
debug.println(debug.LEVEL_INFO, msg)
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 42fbd7e..3b1989c 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -2169,6 +2169,38 @@ class Utilities(script_utilities.Utilities):
return False
+ def eventIsChromeAutocompleteNoise(self, event):
+ if self.inDocumentContent(event.source):
+ return False
+
+ selection = ["object:selection-changed", "object:state-changed:selected"]
+ if not event.type in selection:
+ return False
+
+ try:
+ focusRole = orca_state.locusOfFocus.getRole()
+ focusState = orca_state.locusOfFocus.getState()
+ except:
+ msg = "WEB: Exception getting role and state for %s" % orca_state.locusOfFocus
+ debug.println(debug.LEVEL_INFO, msg)
+ return False
+
+ try:
+ role = event.source.getRole()
+ except:
+ msg = "WEB: Exception getting role for %s" % event.source
+ debug.println(debug.LEVEL_INFO, msg)
+ return False
+
+ if role in [pyatspi.ROLE_MENU, pyatspi.ROLE_MENU_ITEM] \
+ and focusRole == pyatspi.ROLE_ENTRY \
+ and focusState.contains(pyatspi.STATE_FOCUSED):
+ lastKey, mods = self.lastKeyAndModifiers()
+ if lastKey not in ["Down", "Up"]:
+ return True
+
+ return False
+
def textEventIsDueToInsertion(self, event):
if not event.type.startswith("object:text-"):
return False
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]