Unreviewed, rolling out r251045.

Broke internal builds

Reverted changeset:

"AX: Make AXIsolatedTree compile again"
https://bugs.webkit.org/show_bug.cgi?id=202702
https://trac.webkit.org/changeset/251045

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251074 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index cb5ee37..ead4c88 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2019-10-14  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r251045.
+
+        Broke internal builds
+
+        Reverted changeset:
+
+        "AX: Make AXIsolatedTree compile again"
+        https://bugs.webkit.org/show_bug.cgi?id=202702
+        https://trac.webkit.org/changeset/251045
+
 2019-10-14  youenn fablet  <youenn@apple.com>
 
         Reuse existing web processes for running service workers
diff --git a/Source/WebCore/accessibility/AXObjectCache.cpp b/Source/WebCore/accessibility/AXObjectCache.cpp
index aae4d86..e0bbda2 100644
--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ b/Source/WebCore/accessibility/AXObjectCache.cpp
@@ -730,10 +730,8 @@
 
     m_idsInUse.remove(axID);
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
-    if (auto pageID = m_document.pageID()) {
-        if (auto tree = AXIsolatedTree::treeForPageID(*pageID))
-            tree->removeNode(axID);
-    }
+    if (auto pageID = m_document.pageID())
+        AXIsolatedTree::treeForPageID(*pageID)->removeNode(axID);
 #endif
 
     ASSERT(m_objects.size() >= m_idsInUse.size());
@@ -2948,7 +2946,6 @@
     auto isolatedTreeNode = AXIsolatedTreeNode::create(object);
     nodeChanges.append(isolatedTreeNode.copyRef());
 
-    isolatedTreeNode->setTreeIdentifier(tree.treeIdentifier());
     isolatedTreeNode->setParent(parentID);
     associateIsolatedTreeNode(object, isolatedTreeNode, tree.treeIdentifier());
 
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
index 586adf0..0e7d542 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
@@ -42,9 +42,9 @@
     return ++s_currentTreeID;
 }
 
-HashMap<PageIdentifier, Ref<AXIsolatedTree>>& AXIsolatedTree::treePageCache()
+HashMap<uint64_t, Ref<AXIsolatedTree>>& AXIsolatedTree::treePageCache()
 {
-    static NeverDestroyed<HashMap<PageIdentifier, Ref<AXIsolatedTree>>> map;
+    static NeverDestroyed<HashMap<uint64_t, Ref<AXIsolatedTree>>> map;
     return map;
 }
 
@@ -67,6 +67,16 @@
     return adoptRef(*new AXIsolatedTree());
 }
 
+Ref<AXIsolatedTree> AXIsolatedTree::initializePageTreeForID(PageIdentifier pageID, AXObjectCache& cache)
+{
+    RELEASE_ASSERT(isMainThread());
+    auto tree = cache->generateIsolatedAccessibilityTree();
+    tree->setInitialRequestInProgress(true);
+    tree->applyPendingChanges();
+    tree->setInitialRequestInProgress(false);
+    return tree;
+}
+
 RefPtr<AXIsolatedTreeNode> AXIsolatedTree::nodeInTreeForID(AXIsolatedTreeID treeID, AXID axID)
 {
     return treeForID(treeID)->nodeForID(axID);
@@ -99,6 +109,7 @@
 
 RefPtr<AXIsolatedTreeNode> AXIsolatedTree::nodeForID(AXID axID) const
 {
+    RELEASE_ASSERT(!isMainThread() || initialRequest);
     if (!axID)
         return nullptr;
     return m_readerThreadNodeMap.get(axID);
@@ -139,9 +150,14 @@
         m_pendingAppends.append(node.copyRef());
 }
 
+void AXIsolatedTree::setInitialRequestInProgress(bool initialRequestInProgress)
+{
+    m_initialRequestInProgress = initialRequestInProgress;
+}
+
 void AXIsolatedTree::applyPendingChanges()
 {
-    RELEASE_ASSERT(!isMainThread());
+    RELEASE_ASSERT(!isMainThread() || initialRequest);
     LockHolder locker { m_changeLogLock };
     Vector<Ref<AXIsolatedTreeNode>> appendCopy;
     std::swap(appendCopy, m_pendingAppends);
@@ -153,8 +169,10 @@
     m_rootNodeID = m_pendingRootNodeID;
     m_focusedNodeID = m_pendingFocusedNodeID;
     
-    for (auto& item : appendCopy)
+    for (auto& item : appendCopy) {
+        item->setTreeIdentifier(m_treeID);
         m_readerThreadNodeMap.add(item->identifier(), WTFMove(item));
+    }
 
     for (auto item : removeCopy)
         m_readerThreadNodeMap.remove(item);
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
index 6abd783..6eec264 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
@@ -37,14 +37,15 @@
 
 class Page;
 
-class AXIsolatedTree : public ThreadSafeRefCounted<AXIsolatedTree> {
+class AXIsolatedTree : public ThreadSafeRefCounted<AXIsolatedTree>, public CanMakeWeakPtr<AXIsolatedTree> {
     WTF_MAKE_NONCOPYABLE(AXIsolatedTree); WTF_MAKE_FAST_ALLOCATED;
 
 public:
     static Ref<AXIsolatedTree> create();
     virtual ~AXIsolatedTree();
 
-    WEBCORE_EXPORT static Ref<AXIsolatedTree> createTreeForPageID(PageIdentifier);
+    static Ref<AXIsolatedTree> createTreeForPageID(PageIdentifier);
+    WEBCORE_EXPORT static Ref<AXIsolatedTree> initializePageTreeForID(PageIdentifier, AXObjectCache&);
     WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForPageID(PageIdentifier);
     WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForID(AXIsolatedTreeID);
 
@@ -63,6 +64,7 @@
     // Call on AX thread
     WEBCORE_EXPORT void applyPendingChanges();
 
+    WEBCORE_EXPORT void setInitialRequestInProgress(bool);
     AXIsolatedTreeID treeIdentifier() const { return m_treeID; }
 
 private:
@@ -84,6 +86,7 @@
     AXIsolatedTreeID m_treeID;
     AXID m_rootNodeID { InvalidAXID };
     AXID m_focusedNodeID { InvalidAXID };
+    bool m_initialRequestInProgress;
 };
 
 } // namespace WebCore
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
index d8dbb9f..e2ef412 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
@@ -95,7 +95,7 @@
 {
     m_treeIdentifier = treeIdentifier;
     if (auto tree = AXIsolatedTree::treeForID(m_treeIdentifier))
-        m_cachedTree = tree;
+        m_cachedTree = makeWeakPtr(tree.get());
 }
 
 AccessibilityObjectInterface* AXIsolatedTreeNode::focusedUIElement() const
@@ -132,7 +132,7 @@
 {
     auto value = m_attributeMap.get(propertyName);
     return WTF::switchOn(value,
-        [&] (Optional<FloatRect> typedValue) {
+        [&zeroRect] (Optional<FloatRect> typedValue) {
             if (!typedValue)
                 return FloatRect { };
             return typedValue.value();
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
index 934d63f..4374535 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
@@ -45,7 +45,7 @@
 class AXIsolatedTree;
 class AccessibilityObject;
 
-class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode> {
+class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode>, public CanMakeWeakPtr<AXIsolatedTreeNode> {
 
 public:
     enum class AXPropertyName : uint8_t {
@@ -131,7 +131,7 @@
     AXID m_identifier;
     bool m_initialized { false };
     AXIsolatedTreeID m_treeIdentifier;
-    RefPtr<AXIsolatedTree> m_cachedTree;
+    WeakPtr<AXIsolatedTree> m_cachedTree;
     Vector<AXID> m_children;
 
 #if PLATFORM(COCOA)
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
index daf34f1..b53b4ae 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
@@ -280,7 +280,7 @@
 {
     NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()];
     for (auto& child : children)
-        addChildToArray(*child, result);
+        addChildToArray(*child, result)
     return [result autorelease];
 }
 #endif
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index 0150fca..cb222b4 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -2023,7 +2023,7 @@
         children.reserveInitialCapacity(nodeChildren.size());
         auto tree = treeNode->tree();
         for (auto childID : nodeChildren)
-            children.uncheckedAppend(tree->nodeForID(childID));
+            children.uncheckedAppend(tree->nodeForID(child));
         return convertToNSArray(children);
     }
 #endif
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 142a709..6c0c6d2 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2019-10-14  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r251045.
+
+        Broke internal builds
+
+        Reverted changeset:
+
+        "AX: Make AXIsolatedTree compile again"
+        https://bugs.webkit.org/show_bug.cgi?id=202702
+        https://trac.webkit.org/changeset/251045
+
 2019-10-14  youenn fablet  <youenn@apple.com>
 
         Reuse existing web processes for running service workers
diff --git a/Source/WebKit/Configurations/BaseTarget.xcconfig b/Source/WebKit/Configurations/BaseTarget.xcconfig
index 60da40c..6f28f77 100644
--- a/Source/WebKit/Configurations/BaseTarget.xcconfig
+++ b/Source/WebKit/Configurations/BaseTarget.xcconfig
@@ -33,7 +33,7 @@
 FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_base);
 FRAMEWORK_SEARCH_PATHS[sdk=iphone*] = $(FRAMEWORK_SEARCH_PATHS_base) $(WK_PRIVATE_FRAMEWORKS_DIR);
 
-SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/A/Frameworks;
+SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks;
 
 GCC_PREFIX_HEADER = WebKit2Prefix.h;
 GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(FEATURE_DEFINES) $(WK_CORE_PREDICTION_DEFINES) U_HIDE_DEPRECATED_API U_DISABLE_RENAMING=1 U_SHOW_CPLUSPLUS_API=0 FRAMEWORK_NAME=WebKit;
diff --git a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
index d0d5657..4273db5 100644
--- a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
+++ b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
@@ -26,7 +26,6 @@
 #import "config.h"
 #import "WKAccessibilityWebPageObjectBase.h"
 
-#import "AccessibilityPrivSPI.h"
 #import "WebFrame.h"
 #import "WebPage.h"
 #import "WKArray.h"
@@ -97,7 +96,7 @@
 {
     if (isMainThread()) {
         if (auto cache = [self axObjectCache]) {
-            auto tree = cache->generateIsolatedAccessibilityTree();
+            auto tree = AXIsolatedTree::initializeTreeForPageId(m_pageID, *cache);
 
             // Now that we have created our tree, initialize the secondary thread,
             // so future requests come in on the other thread.
@@ -106,7 +105,7 @@
                 return rootNode->wrapper();
         }
     } else {
-        auto tree = WebCore::AXIsolatedTree::treeForPageID(m_pageID);
+        auto tree = AXIsolatedTree::treeForPageID(m_pageID);
         tree->applyPendingChanges();
         if (auto rootNode = tree->rootNode())
             return rootNode->wrapper();