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();