Title: [255916] releases/WebKitGTK/webkit-2.28/Source/WebKit

Diff

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog	2020-02-06 15:08:33 UTC (rev 255916)
@@ -1,5 +1,17 @@
 2020-02-05  Chris Dumez  <[email protected]>
 
+        Unreviewed, rolling out r255706.
+
+        Caused assertions in API tests
+
+        Reverted changeset:
+
+        "Partial revert of r248734 to fix leak of StorageAreaMaps"
+        https://bugs.webkit.org/show_bug.cgi?id=207073
+        https://trac.webkit.org/changeset/255706
+
+2020-02-05  Chris Dumez  <[email protected]>
+
         Unreviewed, follow-up assertion fix after r255662.
 
         * UIProcess/WebProcessPool.cpp:

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp	2020-02-06 15:08:33 UTC (rev 255916)
@@ -37,14 +37,14 @@
 namespace WebKit {
 using namespace WebCore;
 
-Ref<StorageAreaImpl> StorageAreaImpl::create(Ref<StorageAreaMap>&& storageAreaMap)
+Ref<StorageAreaImpl> StorageAreaImpl::create(StorageAreaMap& storageAreaMap)
 {
-    return adoptRef(*new StorageAreaImpl(WTFMove(storageAreaMap)));
+    return adoptRef(*new StorageAreaImpl(storageAreaMap));
 }
 
-StorageAreaImpl::StorageAreaImpl(Ref<StorageAreaMap>&& storageAreaMap)
+StorageAreaImpl::StorageAreaImpl(StorageAreaMap& storageAreaMap)
     : m_identifier(Identifier::generate())
-    , m_storageAreaMap(WTFMove(storageAreaMap))
+    , m_storageAreaMap(makeWeakPtr(storageAreaMap))
 {
 }
 
@@ -54,17 +54,17 @@
 
 unsigned StorageAreaImpl::length()
 {
-    return m_storageAreaMap->length();
+    return m_storageAreaMap ? m_storageAreaMap->length() : 0;
 }
 
 String StorageAreaImpl::key(unsigned index)
 {
-    return m_storageAreaMap->key(index);
+    return m_storageAreaMap ? m_storageAreaMap->key(index) : nullString();
 }
 
 String StorageAreaImpl::item(const String& key)
 {
-    return m_storageAreaMap->item(key);
+    return m_storageAreaMap ? m_storageAreaMap->item(key) : nullString();
 }
 
 void StorageAreaImpl::setItem(Frame* sourceFrame, const String& key, const String& value, bool& quotaException)
@@ -71,27 +71,37 @@
 {
     ASSERT(!value.isNull());
 
-    m_storageAreaMap->setItem(sourceFrame, this, key, value, quotaException);
+    if (m_storageAreaMap)
+        m_storageAreaMap->setItem(sourceFrame, this, key, value, quotaException);
 }
 
 void StorageAreaImpl::removeItem(Frame* sourceFrame, const String& key)
 {
-    m_storageAreaMap->removeItem(sourceFrame, this, key);
+    if (m_storageAreaMap)
+        m_storageAreaMap->removeItem(sourceFrame, this, key);
 }
 
 void StorageAreaImpl::clear(Frame* sourceFrame)
 {
-    m_storageAreaMap->clear(sourceFrame, this);
+    if (m_storageAreaMap)
+        m_storageAreaMap->clear(sourceFrame, this);
 }
 
 bool StorageAreaImpl::contains(const String& key)
 {
-    return m_storageAreaMap->contains(key);
+    if (m_storageAreaMap)
+        return m_storageAreaMap->contains(key);
+
+    return false;
 }
 
 StorageType StorageAreaImpl::storageType() const
 {
-    return m_storageAreaMap->type();
+    if (m_storageAreaMap)
+        return m_storageAreaMap->type();
+
+    // We probably need an Invalid type.
+    return StorageType::Local;
 }
 
 size_t StorageAreaImpl::memoryBytesUsedByCache()

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h	2020-02-06 15:08:33 UTC (rev 255916)
@@ -43,13 +43,13 @@
 public:
     using Identifier = StorageAreaImplIdentifier;
 
-    static Ref<StorageAreaImpl> create(Ref<StorageAreaMap>&&);
+    static Ref<StorageAreaImpl> create(StorageAreaMap&);
     virtual ~StorageAreaImpl();
 
     Identifier identifier() const { return m_identifier; }
 
 private:
-    StorageAreaImpl(Ref<StorageAreaMap>&&);
+    StorageAreaImpl(StorageAreaMap&);
 
     // WebCore::StorageArea.
     unsigned length() override;
@@ -66,7 +66,7 @@
     void closeDatabaseIfIdle() override;
 
     Identifier m_identifier;
-    Ref<StorageAreaMap> m_storageAreaMap;
+    WeakPtr<StorageAreaMap> m_storageAreaMap;
 };
 
 } // namespace WebKit

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp	2020-02-06 15:08:33 UTC (rev 255916)
@@ -49,11 +49,6 @@
 namespace WebKit {
 using namespace WebCore;
 
-Ref<StorageAreaMap> StorageAreaMap::create(StorageNamespaceImpl& storageNamespace, Ref<WebCore::SecurityOrigin>&& securityOrigin)
-{
-    return adoptRef(*new StorageAreaMap(storageNamespace, WTFMove(securityOrigin)));
-}
-
 StorageAreaMap::StorageAreaMap(StorageNamespaceImpl& storageNamespace, Ref<WebCore::SecurityOrigin>&& securityOrigin)
     : m_namespace(storageNamespace)
     , m_securityOrigin(WTFMove(securityOrigin))
@@ -65,8 +60,6 @@
 
 StorageAreaMap::~StorageAreaMap()
 {
-    m_namespace.didDestroyStorageAreaMap(*this);
-
     disconnect();
 }
 

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h	2020-02-06 15:08:33 UTC (rev 255916)
@@ -46,9 +46,10 @@
 class StorageAreaImpl;
 class StorageNamespaceImpl;
 
-class StorageAreaMap final : public RefCounted<StorageAreaMap>, private IPC::MessageReceiver, public CanMakeWeakPtr<StorageAreaMap> {
+class StorageAreaMap final : private IPC::MessageReceiver, public CanMakeWeakPtr<StorageAreaMap> {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<StorageAreaMap> create(StorageNamespaceImpl&, Ref<WebCore::SecurityOrigin>&&);
+    StorageAreaMap(StorageNamespaceImpl&, Ref<WebCore::SecurityOrigin>&&);
     ~StorageAreaMap();
 
     WebCore::StorageType type() const { return m_type; }
@@ -70,8 +71,6 @@
     void disconnect();
 
 private:
-    StorageAreaMap(StorageNamespaceImpl&, Ref<WebCore::SecurityOrigin>&&);
-
     void didSetItem(uint64_t mapSeed, const String& key, bool quotaError);
     void didRemoveItem(uint64_t mapSeed, const String& key);
     void didClear(uint64_t mapSeed);

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp	2020-02-06 15:08:33 UTC (rev 255916)
@@ -102,12 +102,10 @@
 
 Ref<StorageArea> StorageNamespaceImpl::storageArea(const SecurityOriginData& securityOriginData)
 {
-    RefPtr<StorageAreaMap> map;
-    auto* mapPtr = m_storageAreaMaps.ensure(securityOriginData, [&] {
-        map = StorageAreaMap::create(*this, securityOriginData.securityOrigin());
-        return map.get();
+    auto& map = m_storageAreaMaps.ensure(securityOriginData, [&] {
+        return makeUnique<StorageAreaMap>(*this, securityOriginData.securityOrigin());
     }).iterator->value;
-    return StorageAreaImpl::create(*mapPtr);
+    return StorageAreaImpl::create(*map);
 }
 
 Ref<StorageNamespace> StorageNamespaceImpl::copy(Page& newPage)

Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h (255915 => 255916)


--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h	2020-02-06 15:08:29 UTC (rev 255915)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.h	2020-02-06 15:08:33 UTC (rev 255916)
@@ -79,7 +79,7 @@
 
     const unsigned m_quotaInBytes;
 
-    HashMap<WebCore::SecurityOriginData, StorageAreaMap*> m_storageAreaMaps;
+    HashMap<WebCore::SecurityOriginData, std::unique_ptr<StorageAreaMap>> m_storageAreaMaps;
 };
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to