Title: [289348] branches/safari-613-branch/Source
Revision
289348
Author
[email protected]
Date
2022-02-07 18:58:07 -0800 (Mon, 07 Feb 2022)

Log Message

Cherry-pick r289081. rdar://problem/87163253

    Delay writing origin file in NetworkStorageManager
    https://bugs.webkit.org/show_bug.cgi?id=235897
    rdar://87163253

    Reviewed by Geoffrey Garen.

    Revert r288924 that delays writing origin file to when OriginStorageManager is destroyed, and take a different
    approach that schedules a async task to write origin file. PLT results show that the new approach can also make
    up for PLT regresion caused by r286936, where network process started to write origin file before replying sync
    storage message from web process.

    * NetworkProcess/storage/NetworkStorageManager.cpp:
    (WebKit::NetworkStorageManager::localOriginStorageManager):
    * NetworkProcess/storage/OriginStorageManager.cpp:
    (WebKit::OriginStorageManager::OriginStorageManager):
    (WebKit::OriginStorageManager::~OriginStorageManager): Deleted.
    * NetworkProcess/storage/OriginStorageManager.h:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@289081 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-613-branch/Source/WebCore/Headers.cmake (289347 => 289348)


--- branches/safari-613-branch/Source/WebCore/Headers.cmake	2022-02-08 02:58:04 UTC (rev 289347)
+++ branches/safari-613-branch/Source/WebCore/Headers.cmake	2022-02-08 02:58:07 UTC (rev 289348)
@@ -225,6 +225,8 @@
     Modules/indexeddb/server/IDBConnectionToClient.h
     Modules/indexeddb/server/IDBConnectionToClientDelegate.h
     Modules/indexeddb/server/IDBServer.h
+    Modules/indexeddb/server/MemoryIDBBackingStore.h
+    Modules/indexeddb/server/SQLiteIDBBackingStore.h
     Modules/indexeddb/server/ServerOpenDBRequest.h
     Modules/indexeddb/server/UniqueIDBDatabase.h
     Modules/indexeddb/server/UniqueIDBDatabaseConnection.h

Modified: branches/safari-613-branch/Source/WebKit/ChangeLog (289347 => 289348)


--- branches/safari-613-branch/Source/WebKit/ChangeLog	2022-02-08 02:58:04 UTC (rev 289347)
+++ branches/safari-613-branch/Source/WebKit/ChangeLog	2022-02-08 02:58:07 UTC (rev 289348)
@@ -1,5 +1,50 @@
 2022-02-07  Russell Epstein  <[email protected]>
 
+        Cherry-pick r289081. rdar://problem/87163253
+
+    Delay writing origin file in NetworkStorageManager
+    https://bugs.webkit.org/show_bug.cgi?id=235897
+    rdar://87163253
+    
+    Reviewed by Geoffrey Garen.
+    
+    Revert r288924 that delays writing origin file to when OriginStorageManager is destroyed, and take a different
+    approach that schedules a async task to write origin file. PLT results show that the new approach can also make
+    up for PLT regresion caused by r286936, where network process started to write origin file before replying sync
+    storage message from web process.
+    
+    * NetworkProcess/storage/NetworkStorageManager.cpp:
+    (WebKit::NetworkStorageManager::localOriginStorageManager):
+    * NetworkProcess/storage/OriginStorageManager.cpp:
+    (WebKit::OriginStorageManager::OriginStorageManager):
+    (WebKit::OriginStorageManager::~OriginStorageManager): Deleted.
+    * NetworkProcess/storage/OriginStorageManager.h:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@289081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2022-02-03  Sihui Liu  <[email protected]>
+
+            Delay writing origin file in NetworkStorageManager
+            https://bugs.webkit.org/show_bug.cgi?id=235897
+            rdar://87163253
+
+            Reviewed by Geoffrey Garen.
+
+            Revert r288924 that delays writing origin file to when OriginStorageManager is destroyed, and take a different
+            approach that schedules a async task to write origin file. PLT results show that the new approach can also make
+            up for PLT regresion caused by r286936, where network process started to write origin file before replying sync
+            storage message from web process.
+
+            * NetworkProcess/storage/NetworkStorageManager.cpp:
+            (WebKit::NetworkStorageManager::localOriginStorageManager):
+            * NetworkProcess/storage/OriginStorageManager.cpp:
+            (WebKit::OriginStorageManager::OriginStorageManager):
+            (WebKit::OriginStorageManager::~OriginStorageManager): Deleted.
+            * NetworkProcess/storage/OriginStorageManager.h:
+
+2022-02-07  Russell Epstein  <[email protected]>
+
         Cherry-pick r289072. rdar://problem/88439656
 
     [iOS][WP] Add access to required syscalls

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp (289347 => 289348)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp	2022-02-08 02:58:04 UTC (rev 289347)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp	2022-02-08 02:58:07 UTC (rev 289348)
@@ -210,12 +210,16 @@
 
     return *m_localOriginStorageManagers.ensure(origin, [&] {
         auto originDirectory = originDirectoryPath(m_path, origin, m_salt);
-        // We write origin file at when OriginStorageManager is destroyed to avoid delay
-        // in replying sync messages for Web Storage API.
-        auto writeOriginFileFunction = [originFile = originFilePath(originDirectory), origin]() {
-            writeOriginToFileIfNecessary(originFile, origin);
-        };
-        return makeUnique<OriginStorageManager>(WTFMove(writeOriginFileFunction), WTFMove(originDirectory), LocalStorageManager::localStorageFilePath(m_customLocalStoragePath, origin));
+        // Write origin file asynchronously to avoid delay in replying sync messages for Web Storage API.
+        if (!originDirectory.isEmpty()) {
+            m_queue->dispatch([this, protectedThis = Ref { *this }, origin, originDirectory]() mutable {
+                if (!m_localOriginStorageManagers.contains(origin))
+                    return;
+
+                writeOriginToFileIfNecessary(originFilePath(originDirectory), origin);
+            });
+        }
+        return makeUnique<OriginStorageManager>(WTFMove(originDirectory), LocalStorageManager::localStorageFilePath(m_customLocalStoragePath, origin));
     }).iterator->value;
 }
 

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp (289347 => 289348)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp	2022-02-08 02:58:04 UTC (rev 289347)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp	2022-02-08 02:58:07 UTC (rev 289348)
@@ -269,19 +269,14 @@
     std::unique_ptr<SessionStorageManager> m_sessionStorageManager;
 };
 
-OriginStorageManager::OriginStorageManager(Function<void()>&& writeOriginFileFunction, String&& path, String&& localStoragePath)
-    : m_writeOriginFileFunction(WTFMove(writeOriginFileFunction))
-    , m_path(WTFMove(path))
+OriginStorageManager::OriginStorageManager(String&& path, String&& localStoragePath)
+    : m_path(WTFMove(path))
     , m_localStoragePath(WTFMove(localStoragePath))
 {
     ASSERT(!RunLoop::isMain());
 }
 
-OriginStorageManager::~OriginStorageManager()
-{
-    if (m_writeOriginFileFunction)
-        m_writeOriginFileFunction();
-}
+OriginStorageManager::~OriginStorageManager() = default;
 
 void OriginStorageManager::connectionClosed(IPC::Connection::UniqueID connection)
 {

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h (289347 => 289348)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h	2022-02-08 02:58:04 UTC (rev 289347)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h	2022-02-08 02:58:07 UTC (rev 289348)
@@ -44,7 +44,7 @@
 class OriginStorageManager {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    OriginStorageManager(Function<void()>&&, String&& path, String&& localStoragePath);
+    OriginStorageManager(String&& path, String&& localStoragePath);
     ~OriginStorageManager();
 
     void connectionClosed(IPC::Connection::UniqueID);
@@ -69,7 +69,6 @@
     void createOriginFileIfNecessary(const WebCore::ClientOrigin&);
     void deleteOriginFileIfNecessary();
 
-    Function<void()> m_writeOriginFileFunction;
     std::unique_ptr<StorageBucket> m_defaultBucket;
     String m_path;
     bool m_persisted { false };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to