[orca] Chromium: Cache results for isStaticTextLeaf



commit 00e4c9a62c09acbd1bdb8f4aae3302994697034d
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Apr 23 00:48:16 2019 -0400

    Chromium: Cache results for isStaticTextLeaf

 src/orca/scripts/toolkits/Chromium/script_utilities.py | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index d66077c41..a8895e357 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -43,23 +43,27 @@ class Utilities(web.Utilities):
 
     def __init__(self, script):
         super().__init__(script)
+        self._isStaticTextLeaf = {}
 
     def clearCachedObjects(self):
         super().clearCachedObjects()
+        self._isStaticTextLeaf = {}
 
     def isStaticTextLeaf(self, obj):
         if not (obj and self.inDocumentContent(obj)):
             return super().isStaticTextLeaf(obj)
 
-        if obj.getRole() != pyatspi.ROLE_TEXT:
-            return False
+        rv = self._isStaticTextLeaf.get(hash(obj))
+        if rv is not None:
+            return rv
 
-        if self._getTag(obj):
-            return False
+        rv = obj.getRole() == pyatspi.ROLE_TEXT and not self._getTag(obj)
+        if rv:
+            msg = "CHROMIUM: %s believed to be static text leaf" % obj
+            debug.println(debug.LEVEL_INFO, msg, True)
 
-        msg = "CHROMIUM: %s believed to be static text leaf" % obj
-        debug.println(debug.LEVEL_INFO, msg, True)
-        return True
+        self._isStaticTextLeaf[hash(obj)] = rv
+        return rv
 
     def selectedChildCount(self, obj):
         count = super().selectedChildCount(obj)


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