[orca] Prefer landmark role over object attributes when searching for landmarks



commit 5382e1329a15f05c60aa1fb1ce582e33dd732724
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Mon Aug 12 17:18:28 2019 -0400

    Prefer landmark role over object attributes when searching for landmarks

 src/orca/script_utilities.py                           | 3 +++
 src/orca/scripts/toolkits/Chromium/script_utilities.py | 3 +++
 src/orca/scripts/web/script_utilities.py               | 5 ++++-
 src/orca/structural_navigation.py                      | 4 +++-
 4 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index 6a81c8ccc..f892949ff 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -881,6 +881,9 @@ class Utilities:
     def isFigure(self, obj):
         return False
 
+    def supportsLandmarkRole(self):
+        return False
+
     def isLandmark(self, obj):
         return False
 
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index b7f989419..7d5ea80f9 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -450,3 +450,6 @@ class Utilities(web.Utilities):
             return False
 
         return True
+
+    def supportsLandmarkRole(self):
+        return True
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index df5f08e63..a7be9767f 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -4386,8 +4386,11 @@ class Utilities(script_utilities.Utilities):
                  pyatspi.ROLE_LINK,
                  pyatspi.ROLE_TABLE,
                  pyatspi.ROLE_FORM,
-                 pyatspi.ROLE_SECTION, # We can nuke this when Firefox correcly maps landmarks
                  pyatspi.ROLE_LANDMARK]
+
+        if not self.supportsLandmarkRole():
+            roles.append(pyatspi.ROLE_SECTION)
+
         rule = col.createMatchRule(stateset.raw(), col.MATCH_NONE,
                                    "", col.MATCH_NONE,
                                    roles, col.MATCH_ANY,
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index 2ede1fa45..d1d9b3867 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -2234,6 +2234,9 @@ class StructuralNavigation:
           the criteria (e.g. the level of a heading).
         """
 
+        if self._script.utilities.supportsLandmarkRole():
+            return MatchCriteria(collection, roles=[pyatspi.ROLE_LANDMARK])
+
         # NOTE: there is a limitation in the AT-SPI Collections interface
         # when it comes to an attribute whose value can be a list.  For
         # example, the xml-roles attribute can be a space-separate list
@@ -2273,7 +2276,6 @@ class StructuralNavigation:
         """
 
         if obj:
-            landmark = obj
             [obj, characterOffset] = self._getCaretPosition(obj)
             self._setCaretPosition(obj, characterOffset)
             self._presentLine(obj, characterOffset)


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