Title: [291334] trunk/Source/WebKit
- Revision
- 291334
- Author
- sihui_...@apple.com
- Date
- 2022-03-16 00:20:01 -0700 (Wed, 16 Mar 2022)
Log Message
Suspend newly created NetworkStorageManager if network process is or will be suspended
https://bugs.webkit.org/show_bug.cgi?id=237915
Reviewed by Chris Dumez.
When network process receives prepareToSuspend message, we suspend existing NetworkStorageManagers (so no more
database operation can be performed). We should do the same thing for new NetworkStorageManager created between
prepareToSuspend and processDidResume messages.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::processDidResume):
(WebKit::NetworkProcess::resume): Deleted.
* NetworkProcess/NetworkProcess.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (291333 => 291334)
--- trunk/Source/WebKit/ChangeLog 2022-03-16 06:07:28 UTC (rev 291333)
+++ trunk/Source/WebKit/ChangeLog 2022-03-16 07:20:01 UTC (rev 291334)
@@ -1,3 +1,21 @@
+2022-03-16 Sihui Liu <sihui_...@apple.com>
+
+ Suspend newly created NetworkStorageManager if network process is or will be suspended
+ https://bugs.webkit.org/show_bug.cgi?id=237915
+
+ Reviewed by Chris Dumez.
+
+ When network process receives prepareToSuspend message, we suspend existing NetworkStorageManagers (so no more
+ database operation can be performed). We should do the same thing for new NetworkStorageManager created between
+ prepareToSuspend and processDidResume messages.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::addWebsiteDataStore):
+ (WebKit::NetworkProcess::prepareToSuspend):
+ (WebKit::NetworkProcess::processDidResume):
+ (WebKit::NetworkProcess::resume): Deleted.
+ * NetworkProcess/NetworkProcess.h:
+
2022-03-15 Simon Fraser <simon.fra...@apple.com>
REGRESSION (r291191): [iOS] ASSERTION FAILED: m_contentsBufferHandle in WebKit::RemoteLayerBackingStore::paintContents()
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (291333 => 291334)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-03-16 06:07:28 UTC (rev 291333)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-03-16 07:20:01 UTC (rev 291334)
@@ -442,10 +442,12 @@
auto sessionID = parameters.networkSessionParameters.sessionID;
addStorageSession(sessionID, parameters.networkSessionParameters.shouldUseTestingNetworkSession, parameters.uiProcessCookieStorageIdentifier, parameters.cookieStoragePathExtensionHandle);
- m_networkSessions.ensure(sessionID, [&]() {
+ auto& session = m_networkSessions.ensure(sessionID, [&]() {
return NetworkSession::create(*this, parameters.networkSessionParameters);
- });
-
+ }).iterator->value;
+
+ if (m_isSuspended)
+ session->storageManager().suspend([] { });
}
void NetworkProcess::forEachNetworkSession(const Function<void(NetworkSession&)>& functor)
@@ -2114,6 +2116,7 @@
{
RELEASE_LOG(ProcessSuspension, "%p - NetworkProcess::prepareToSuspend(), isSuspensionImminent=%d", this, isSuspensionImminent);
+ m_isSuspended = true;
lowMemoryHandler(Critical::Yes);
RefPtr<CallbackAggregator> callbackAggregator = CallbackAggregator::create([this, completionHandler = WTFMove(completionHandler)]() mutable {
@@ -2153,11 +2156,9 @@
void NetworkProcess::processDidResume()
{
RELEASE_LOG(ProcessSuspension, "%p - NetworkProcess::processDidResume()", this);
- resume();
-}
-void NetworkProcess::resume()
-{
+ m_isSuspended = false;
+
for (auto& connection : m_webProcessConnections.values())
connection->endSuspension();
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (291333 => 291334)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2022-03-16 06:07:28 UTC (rev 291333)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2022-03-16 07:20:01 UTC (rev 291334)
@@ -175,7 +175,6 @@
void processWillSuspendImminentlyForTestingSync(CompletionHandler<void()>&&);
void prepareToSuspend(bool isSuspensionImminent, CompletionHandler<void()>&&);
void processDidResume();
- void resume();
CacheModel cacheModel() const { return m_cacheModel; }
@@ -524,6 +523,7 @@
bool m_privateClickMeasurementEnabled { true };
bool m_ftpEnabled { false };
+ bool m_isSuspended { false };
};
#if !PLATFORM(COCOA)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes