[WebAccessibilityObjectWrapper detach] should detach either the wrapped AXObject...
authorandresg_22@apple.com <andresg_22@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Feb 2020 05:37:30 +0000 (05:37 +0000)
committerandresg_22@apple.com <andresg_22@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Feb 2020 05:37:30 +0000 (05:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=207178

Reviewed by Chris Fleizach.

Detach either the AXObject or the IsolatedObject depending on the thread that the method is invoed on.

* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(-[WebAccessibilityObjectWrapperBase detachAXObject]):
(-[WebAccessibilityObjectWrapperBase detachIsolatedObject]):
(-[WebAccessibilityObjectWrapperBase detach]): Detach one or the other depending on the thread.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255661 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm

index fcf4f15..3aa028e 100644 (file)
@@ -1,3 +1,17 @@
+2020-02-03  Andres Gonzalez  <andresg_22@apple.com>
+
+        [WebAccessibilityObjectWrapper detach] should detach either the wrapped AXObject or the IsolatedObject but not both.
+        https://bugs.webkit.org/show_bug.cgi?id=207178
+
+        Reviewed by Chris Fleizach.
+
+        Detach either the AXObject or the IsolatedObject depending on the thread that the method is invoed on.
+
+        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
+        (-[WebAccessibilityObjectWrapperBase detachAXObject]):
+        (-[WebAccessibilityObjectWrapperBase detachIsolatedObject]):
+        (-[WebAccessibilityObjectWrapperBase detach]): Detach one or the other depending on the thread.
+
 2020-02-03  Sihui Liu  <sihui_liu@apple.com>
 
         Crash in WebCore::IDBServer::IDBServer::createIndex
 2020-02-03  Sihui Liu  <sihui_liu@apple.com>
 
         Crash in WebCore::IDBServer::IDBServer::createIndex
index b423736..592be96 100644 (file)
@@ -310,13 +310,29 @@ NSArray *convertToNSArray(const WebCore::AXCoreObject::AccessibilityChildrenVect
 }
 #endif
 
 }
 #endif
 
-- (void)detach
+- (void)detachAXObject
 {
     m_axObject = nullptr;
 {
     m_axObject = nullptr;
+}
+
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
+- (void)detachIsolatedObject
+{
     m_isolatedObject = nullptr;
     m_isolatedObject = nullptr;
+}
 #endif
 #endif
+
+- (void)detach
+{
     _identifier = InvalidAXID;
     _identifier = InvalidAXID;
+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
+    if (!isMainThread()) {
+        ASSERT(AXObjectCache::clientSupportsIsolatedTree());
+        [self detachIsolatedObject];
+        return;
+    }
+#endif
+    [self detachAXObject];
 }
 
 - (BOOL)updateObjectBackingStore
 }
 
 - (BOOL)updateObjectBackingStore