- 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 };