[orca] Chromium: Improve reliability of identifying find-in-page widgets



commit 352388d5d83bbcb166dfff1c5c69af4b862238d5
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Thu Aug 1 11:50:10 2019 -0400

    Chromium: Improve reliability of identifying find-in-page widgets

 .../scripts/toolkits/Chromium/script_utilities.py  | 24 ++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index d8fd8b8f3..dd7cb0c56 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -366,10 +366,25 @@ class Utilities(web.Utilities):
                   and len(re.findall("\d+", x.name)) == 2
         statusBars = self.findAllDescendants(root, isMatch)
         if len(statusBars) == 1:
+            statusBars[0].clearCache()
             return statusBars[0].name
 
         return ""
 
+    def isFindDialog(self, obj):
+        if not obj or self.inDocumentContent(obj):
+            return False
+
+        if obj.getRole() != pyatspi.ROLE_DIALOG:
+            return False
+
+        result = self.getFindResultsCount(obj)
+        if result:
+            msg = "CHROMIUM: %s believed to be find-in-page dialog (%s)" % (obj, result)
+            debug.println(debug.LEVEL_INFO, msg, True)
+
+        return bool(result)
+
     def inFindToolbar(self, obj=None):
         if not obj:
             obj = orca_state.locusOfFocus
@@ -381,15 +396,12 @@ class Utilities(web.Utilities):
             return False
 
         isDialog = lambda x: x and x.getRole() == pyatspi.ROLE_DIALOG
-        if not pyatspi.findAncestor(obj, isDialog):
-            return False
-
-        result = self.getFindResultsCount(obj.parent)
+        result = self.isFindDialog(pyatspi.findAncestor(obj, isDialog))
         if result:
-            msg = "CHROMIUM: %s believed to be find-in-page widget (%s)" % (obj, result)
+            msg = "CHROMIUM: %s believed to be find-in-page widget" % obj
             debug.println(debug.LEVEL_INFO, msg, True)
 
-        return bool(result)
+        return result
 
     def isHidden(self, obj):
         if not super().isHidden(obj):


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