Title: [282222] trunk/Source
Revision
282222
Author
[email protected]
Date
2021-09-09 10:03:31 -0700 (Thu, 09 Sep 2021)

Log Message

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.

Source/WebCore:

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:

Source/WebKit:

* NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::localOriginStorageManager):

Modified Paths

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;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to