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