[orca] Chromium: Present treeitem node level
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Chromium: Present treeitem node level
- Date: Sat, 13 Jul 2019 20:58:58 +0000 (UTC)
commit 262dcb5295abc7cd3e14e7470b88445aad1cc085
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Sat Jul 13 16:55:59 2019 -0400
Chromium: Present treeitem node level
.../scripts/toolkits/Gecko/script_utilities.py | 20 -------------------
src/orca/scripts/web/script_utilities.py | 23 ++++++++++++++++++++++
2 files changed, 23 insertions(+), 20 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script_utilities.py
b/src/orca/scripts/toolkits/Gecko/script_utilities.py
index e93fa25cb..7bc286105 100644
--- a/src/orca/scripts/toolkits/Gecko/script_utilities.py
+++ b/src/orca/scripts/toolkits/Gecko/script_utilities.py
@@ -72,26 +72,6 @@ class Utilities(web.Utilities):
return True
- def nodeLevel(self, obj):
- """Determines the level of at which this object is at by using
- the object attribute 'level'. To be consistent with the default
- nodeLevel() this value is 0-based (Gecko return is 1-based) """
-
- if obj is None or self.isDead(obj) or obj.getRole() == pyatspi.ROLE_HEADING \
- or (obj.parent and obj.parent.getRole() == pyatspi.ROLE_MENU):
- return -1
-
- try:
- attrs = obj.getAttributes()
- except:
- msg = "GECKO: Exception getting attributes for %s" % obj
- debug.println(debug.LEVEL_INFO, msg, True)
- return -1
- for attr in attrs:
- if attr.startswith("level:"):
- return int(attr[6:]) - 1
- return -1
-
def isLayoutOnly(self, obj):
if super().isLayoutOnly(obj):
return True
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index c1f38841c..2080f913e 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -108,6 +108,7 @@ class Utilities(script_utilities.Utilities):
self._tag = {}
self._xmlRoles = {}
self._treatAsDiv = {}
+ self._nodeLevel = {}
self._posinset = {}
self._setsize = {}
self._currentObjectContents = None
@@ -184,6 +185,7 @@ class Utilities(script_utilities.Utilities):
self._tag = {}
self._xmlRoles = {}
self._treatAsDiv = {}
+ self._nodeLevel = {}
self._posinset = {}
self._setsize = {}
self._paths = {}
@@ -516,6 +518,27 @@ class Utilities(script_utilities.Utilities):
self._roleDescription[hash(obj)] = rv
return rv
+ def nodeLevel(self, obj):
+ if not (obj and self.inDocumentContent(obj)):
+ return super().nodeLevel(obj)
+
+ rv = self._nodeLevel.get(hash(obj))
+ if rv is not None:
+ return rv
+
+ rv = -1
+ if not (self.inMenu(obj) or obj.getRole() == pyatspi.ROLE_HEADING):
+ try:
+ attrs = dict([attr.split(':', 1) for attr in obj.getAttributes()])
+ except:
+ attrs = {}
+
+ # ARIA levels are 1-based; non-web content is 0-based. Be consistent.
+ rv = int(attrs.get('level', 0)) -1
+
+ self._nodeLevel[hash(obj)] = rv
+ return rv
+
def getPositionInSet(self, obj):
rv = self._posinset.get(hash(obj))
if rv is not None:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]