[orca] Handle more cases of objects going defunct on us



commit 4b998fc13bf5fb21d951f4af2d54afd956ac1a4b
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Mar 17 15:35:28 2020 -0400

    Handle more cases of objects going defunct on us

 src/orca/script_utilities.py                           | 7 ++++++-
 src/orca/scripts/toolkits/Chromium/script_utilities.py | 9 ++++++++-
 src/orca/scripts/web/script_utilities.py               | 2 +-
 3 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index 9d9ef73ea..b4f5d3bd3 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -1431,7 +1431,12 @@ class Utilities:
         if not obj:
             return False
 
-        if obj.getRole() == pyatspi.ROLE_TREE_ITEM:
+        try:
+            role = obj.getRole()
+        except:
+            return False
+
+        if role == pyatspi.ROLE_TREE_ITEM:
             return True
 
         isTree = lambda x: x and x.getRole() in [pyatspi.ROLE_TREE, pyatspi.ROLE_TREE_TABLE]
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index 7dfc21a0f..a7f4ec557 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -56,7 +56,14 @@ class Utilities(web.Utilities):
         if not (obj and self.inDocumentContent(obj)):
             return super().isStaticTextLeaf(obj)
 
-        if obj.childCount:
+        try:
+            childCount = obj.childCount
+        except:
+            msg = "CHROMIUM: Exception getting child count of %s" % obj
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        if childCount:
             return False
 
         if self.isListItemMarker(obj):
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 1d67a19dc..a5a372067 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -3405,7 +3405,7 @@ class Utilities(script_utilities.Utilities):
         return rv
 
     def isFakePlaceholderForEntry(self, obj):
-        if not (obj and self.inDocumentContent(obj)):
+        if not (obj and self.inDocumentContent(obj) and obj.parent):
             return False
 
         if not (obj.parent.getRole() == pyatspi.ROLE_ENTRY and obj.parent.name):


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