[orca] Don't allow pseudo elements to have caret context



commit 086487be2a355170d9a18c35517ade179e9fb2b8
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri May 10 21:30:57 2019 +0200

    Don't allow pseudo elements to have caret context

 src/orca/scripts/toolkits/Chromium/script_utilities.py | 18 ++++++++++++++++++
 src/orca/scripts/web/script_utilities.py               |  7 +++++++
 2 files changed, 25 insertions(+)
---
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index 6a2b74b78..953d52ee4 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -44,10 +44,12 @@ class Utilities(web.Utilities):
     def __init__(self, script):
         super().__init__(script)
         self._isStaticTextLeaf = {}
+        self._isPseudoElement = {}
 
     def clearCachedObjects(self):
         super().clearCachedObjects()
         self._isStaticTextLeaf = {}
+        self._isPseudoElement = {}
 
     def isStaticTextLeaf(self, obj):
         if not (obj and self.inDocumentContent(obj)):
@@ -66,6 +68,22 @@ class Utilities(web.Utilities):
         self._isStaticTextLeaf[hash(obj)] = rv
         return rv
 
+    def isPseudoElement(self, obj):
+        if not (obj and self.inDocumentContent(obj)):
+            return super().isPseudoElement(obj)
+
+        rv = self._isPseudoElement.get(hash(obj))
+        if rv is not None:
+            return rv
+
+        rv = self._getTag(obj) in ["<pseudo:before>", "<pseudo:after>"]
+        if rv:
+            msg = "CHROMIUM: %s believed to be pseudo element" % obj
+            debug.println(debug.LEVEL_INFO, msg, True)
+
+        self._isPseudoElement[hash(obj)] = rv
+        return rv
+
     def selectedChildCount(self, obj):
         count = super().selectedChildCount(obj)
         if count or "Selection" in pyatspi.listInterfaces(obj):
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index b00118f66..7a9eda345 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -3666,9 +3666,16 @@ class Utilities(script_utilities.Utilities):
             msg = "WEB: Parent of null child cannot have caret context %s" % obj
             debug.println(debug.LEVEL_INFO, msg, True)
             return False
+        if self.isPseudoElement(obj):
+            msg = "WEB: Pseudo element cannot have caret context %s" % obj
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
 
         return True
 
+    def isPseudoElement(self, obj):
+        return False
+
     def searchForCaretContext(self, obj):
         contextObj, contextOffset = None, -1
         while obj:


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