Diff
Modified: trunk/Source/WebCore/ChangeLog (282221 => 282222)
--- trunk/Source/WebCore/ChangeLog 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/ChangeLog 2021-09-09 17:03:31 UTC (rev 282222)
@@ -1,3 +1,27 @@
+2021-09-09 Sihui Liu <[email protected]>
+
+ Address post-commit comments on r282130 (Add basic support for Storage API)
+ https://bugs.webkit.org/show_bug.cgi?id=230059
+
+ Reviewed by Youenn Fablet.
+
+ No new tests as no behavior change.
+
+ * Modules/storage/StorageManager.cpp:
+ (WebCore::StorageManager::StorageManager):
+ (WebCore::StorageManager::persisted):
+ (WebCore::StorageManager::persist):
+ (WebCore::clientOrigin): Deleted.
+ * Modules/storage/StorageManager.h:
+ * dom/Document.cpp:
+ (WebCore::Document::storageConnection):
+ * dom/Document.h:
+ * dom/ScriptExecutionContext.h:
+ (WebCore::ScriptExecutionContext::storageConnection):
+ * page/NavigatorBase.cpp:
+ (WebCore::NavigatorBase::storage):
+ * page/NavigatorBase.h:
+
2021-09-09 Jer Noble <[email protected]>
Refactor Video,Audio,TextTrack and TrackLists to not depend on HTMLMediaElement
Modified: trunk/Source/WebCore/Modules/storage/StorageManager.cpp (282221 => 282222)
--- trunk/Source/WebCore/Modules/storage/StorageManager.cpp 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/Modules/storage/StorageManager.cpp 2021-09-09 17:03:31 UTC (rev 282222)
@@ -42,44 +42,52 @@
}
StorageManager::StorageManager(NavigatorBase& navigator)
- : m_navigator(navigator)
+ : m_navigator(makeWeakPtr(navigator))
{
}
-static ClientOrigin clientOrigin(ScriptExecutionContext& context)
+void StorageManager::persisted(DOMPromiseDeferred<IDLBoolean>&& promise)
{
- auto* origin = context.securityOrigin();
- return { context.topOrigin().data(), origin ? origin->data() : SecurityOriginData { } };
-}
+ if (!m_navigator)
+ return promise.reject(Exception { InvalidStateError, "Navigator does not exist"_s });
-void StorageManager::persisted(DOMPromiseDeferred<IDLBoolean>&& promise)
-{
- auto context = m_navigator.scriptExecutionContext();
+ auto context = m_navigator->scriptExecutionContext();
if (!context)
return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
- if (auto connection = context->storageConnection()) {
- return connection->persisted(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
- promise.resolve(persisted);
- });
- }
+ auto connection = context->storageConnection();
+ if (!connection)
+ return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
- return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
+ auto* origin = context->securityOrigin();
+ if (!origin)
+ return promise.reject(Exception { InvalidStateError, "Origin is invalid"_s });
+
+ return connection->persisted({ context->topOrigin().data(), origin->data() }, [promise = WTFMove(promise)](bool persisted) mutable {
+ promise.resolve(persisted);
+ });
}
void StorageManager::persist(DOMPromiseDeferred<IDLBoolean>&& promise)
{
- auto context = m_navigator.scriptExecutionContext();
+ if (!m_navigator)
+ return promise.reject(Exception { InvalidStateError, "Navigator does not exist"_s });
+
+ auto context = m_navigator->scriptExecutionContext();
if (!context)
return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
- if (auto connection = context->storageConnection()) {
- return connection->persist(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
- promise.resolve(persisted);
- });
- }
+ auto connection = context->storageConnection();
+ if (!connection)
+ return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
- return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
+ auto* origin = context->securityOrigin();
+ if (!origin)
+ return promise.reject(Exception { InvalidStateError, "Origin is invalid"_s });
+
+ return connection->persist({ context->topOrigin().data(), origin->data() }, [promise = WTFMove(promise)](bool persisted) mutable {
+ promise.resolve(persisted);
+ });
}
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/storage/StorageManager.h (282221 => 282222)
--- trunk/Source/WebCore/Modules/storage/StorageManager.h 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/Modules/storage/StorageManager.h 2021-09-09 17:03:31 UTC (rev 282222)
@@ -43,7 +43,7 @@
private:
explicit StorageManager(NavigatorBase&);
- NavigatorBase& m_navigator;
+ WeakPtr<NavigatorBase> m_navigator;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/dom/Document.cpp (282221 => 282222)
--- trunk/Source/WebCore/dom/Document.cpp 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/dom/Document.cpp 2021-09-09 17:03:31 UTC (rev 282222)
@@ -3559,7 +3559,7 @@
return page() ? &page()->permissionController() : nullptr;
}
-RefPtr<StorageConnection> Document::storageConnection()
+StorageConnection* Document::storageConnection()
{
return page() ? &page()->storageConnection() : nullptr;
}
Modified: trunk/Source/WebCore/dom/Document.h (282221 => 282222)
--- trunk/Source/WebCore/dom/Document.h 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/dom/Document.h 2021-09-09 17:03:31 UTC (rev 282222)
@@ -706,7 +706,7 @@
IDBClient::IDBConnectionProxy* idbConnectionProxy() final;
RefPtr<PermissionController> permissionController() final;
- RefPtr<StorageConnection> storageConnection() final;
+ StorageConnection* storageConnection() final;
SocketProvider* socketProvider() final;
RefPtr<RTCDataChannelRemoteHandlerConnection> createRTCDataChannelRemoteHandlerConnection() final;
Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (282221 => 282222)
--- trunk/Source/WebCore/dom/ScriptExecutionContext.h 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h 2021-09-09 17:03:31 UTC (rev 282222)
@@ -118,7 +118,7 @@
virtual IDBClient::IDBConnectionProxy* idbConnectionProxy() = 0;
virtual RefPtr<PermissionController> permissionController() { return nullptr; }
- virtual RefPtr<StorageConnection> storageConnection() { return nullptr; }
+ virtual StorageConnection* storageConnection() { return nullptr; }
virtual SocketProvider* socketProvider() = 0;
Modified: trunk/Source/WebCore/page/NavigatorBase.cpp (282221 => 282222)
--- trunk/Source/WebCore/page/NavigatorBase.cpp 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/page/NavigatorBase.cpp 2021-09-09 17:03:31 UTC (rev 282222)
@@ -140,7 +140,7 @@
return { defaultLanguage() };
}
-ExceptionOr<StorageManager&> NavigatorBase::storage()
+StorageManager& NavigatorBase::storage()
{
if (!m_storageManager)
m_storageManager = StorageManager::create(*this);
Modified: trunk/Source/WebCore/page/NavigatorBase.h (282221 => 282222)
--- trunk/Source/WebCore/page/NavigatorBase.h 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebCore/page/NavigatorBase.h 2021-09-09 17:03:31 UTC (rev 282222)
@@ -59,7 +59,7 @@
static String language();
static Vector<String> languages();
- ExceptionOr<StorageManager&> storage();
+ StorageManager& storage();
protected:
explicit NavigatorBase(ScriptExecutionContext*);
Modified: trunk/Source/WebKit/ChangeLog (282221 => 282222)
--- trunk/Source/WebKit/ChangeLog 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebKit/ChangeLog 2021-09-09 17:03:31 UTC (rev 282222)
@@ -1,3 +1,13 @@
+2021-09-09 Sihui Liu <[email protected]>
+
+ Address post-commit comments on r282130 (Add basic support for Storage API)
+ https://bugs.webkit.org/show_bug.cgi?id=230059
+
+ Reviewed by Youenn Fablet.
+
+ * NetworkProcess/storage/NetworkStorageManager.cpp:
+ (WebKit::NetworkStorageManager::localOriginStorageManager):
+
2021-09-09 Chris Dumez <[email protected]>
Implement a WebProcess cap
Modified: trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp (282221 => 282222)
--- trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp 2021-09-09 17:02:27 UTC (rev 282221)
+++ trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp 2021-09-09 17:03:31 UTC (rev 282222)
@@ -91,8 +91,8 @@
{
ASSERT(!RunLoop::isMain());
- return *m_localOriginStorageManagers.ensure(origin, [path = m_path, origin, salt = m_salt] {
- return makeUnique<OriginStorageManager>(originPath(path, origin, salt));
+ return *m_localOriginStorageManagers.ensure(origin, [&] {
+ return makeUnique<OriginStorageManager>(originPath(m_path, origin, m_salt));
}).iterator->value;
}