- Revision
- 260507
- Author
- you...@apple.com
- Date
- 2020-04-22 04:48:44 -0700 (Wed, 22 Apr 2020)
Log Message
Simplify SWServerWorker::whenActivated logic
https://bugs.webkit.org/show_bug.cgi?id=210795
Reviewed by Alex Christensen.
Source/WebCore:
Improve logging and ensure whenActivated can be called whatever the worker state is.
No change of behavior.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::didFinishInstall):
(WebCore::SWServer::fireInstallEvent):
(WebCore::SWServer::fireActivateEvent):
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::whenActivated):
Source/WebKit:
Improve logging and update code according whenActivated implementation.
Add an early check for timeouts so that we return earlier in that case.
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::createFetchTask):
(WebKit::WebSWServerConnection::startFetch):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (260506 => 260507)
--- trunk/Source/WebCore/ChangeLog 2020-04-22 11:36:27 UTC (rev 260506)
+++ trunk/Source/WebCore/ChangeLog 2020-04-22 11:48:44 UTC (rev 260507)
@@ -1,3 +1,20 @@
+2020-04-22 Youenn Fablet <you...@apple.com>
+
+ Simplify SWServerWorker::whenActivated logic
+ https://bugs.webkit.org/show_bug.cgi?id=210795
+
+ Reviewed by Alex Christensen.
+
+ Improve logging and ensure whenActivated can be called whatever the worker state is.
+ No change of behavior.
+
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::didFinishInstall):
+ (WebCore::SWServer::fireInstallEvent):
+ (WebCore::SWServer::fireActivateEvent):
+ * workers/service/server/SWServerWorker.cpp:
+ (WebCore::SWServerWorker::whenActivated):
+
2020-04-22 Enrique Ocaña González <eoca...@igalia.com>
[GStreamer][MSE] Youtube 'live stream'/H264 URLs fail to play, VP8/9 URLs play OK
Modified: trunk/Source/WebCore/workers/service/server/SWServer.cpp (260506 => 260507)
--- trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-04-22 11:36:27 UTC (rev 260506)
+++ trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-04-22 11:48:44 UTC (rev 260507)
@@ -521,14 +521,11 @@
void SWServer::didFinishInstall(const Optional<ServiceWorkerJobDataIdentifier>& jobDataIdentifier, SWServerWorker& worker, bool wasSuccessful)
{
+ RELEASE_LOG(ServiceWorker, "%p - SWServer::didFinishInstall: Finished install for service worker %llu, success is %d", this, worker.identifier().toUInt64(), wasSuccessful);
+
if (!jobDataIdentifier)
return;
- if (wasSuccessful)
- RELEASE_LOG(ServiceWorker, "%p - SWServer::didFinishInstall: Successfuly finished SW install for job %s", this, jobDataIdentifier->loggingString().utf8().data());
- else
- RELEASE_LOG_ERROR(ServiceWorker, "%p - SWServer::didFinishInstall: Failed SW install for job %s", this, jobDataIdentifier->loggingString().utf8().data());
-
if (auto* jobQueue = m_jobQueues.get(worker.registrationKey()))
jobQueue->didFinishInstall(*jobDataIdentifier, worker, wasSuccessful);
}
@@ -793,10 +790,11 @@
{
auto* contextConnection = worker.contextConnection();
if (!contextConnection) {
- LOG_ERROR("Request to fire install event on a worker whose context connection does not exist");
+ RELEASE_LOG_ERROR(ServiceWorker, "Request to fire install event on a worker whose context connection does not exist");
return;
}
+ RELEASE_LOG(ServiceWorker, "%p - SWServer::fireInstallEvent on worker %llu", this, worker.identifier().toUInt64());
contextConnection->fireInstallEvent(worker.identifier());
}
@@ -804,10 +802,11 @@
{
auto* contextConnection = worker.contextConnection();
if (!contextConnection) {
- LOG_ERROR("Request to fire install event on a worker whose context connection does not exist");
+ RELEASE_LOG_ERROR(ServiceWorker, "Request to fire activate event on a worker whose context connection does not exist");
return;
}
+ RELEASE_LOG(ServiceWorker, "%p - SWServer::fireActivateEvent on worker %llu", this, worker.identifier().toUInt64());
contextConnection->fireActivateEvent(worker.identifier());
}
Modified: trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp (260506 => 260507)
--- trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp 2020-04-22 11:36:27 UTC (rev 260506)
+++ trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp 2020-04-22 11:48:44 UTC (rev 260507)
@@ -266,12 +266,12 @@
void SWServerWorker::whenActivated(CompletionHandler<void(bool)>&& handler)
{
- if (state() == ServiceWorkerState::Activated) {
- handler(true);
+ if (state() == ServiceWorkerState::Activating) {
+ m_whenActivatedHandlers.append(WTFMove(handler));
return;
}
- ASSERT(state() == ServiceWorkerState::Activating);
- m_whenActivatedHandlers.append(WTFMove(handler));
+ ASSERT(state() == ServiceWorkerState::Activated);
+ handler(state() == ServiceWorkerState::Activated);
}
void SWServerWorker::setState(ServiceWorkerState state)
Modified: trunk/Source/WebKit/ChangeLog (260506 => 260507)
--- trunk/Source/WebKit/ChangeLog 2020-04-22 11:36:27 UTC (rev 260506)
+++ trunk/Source/WebKit/ChangeLog 2020-04-22 11:48:44 UTC (rev 260507)
@@ -1,3 +1,17 @@
+2020-04-22 Youenn Fablet <you...@apple.com>
+
+ Simplify SWServerWorker::whenActivated logic
+ https://bugs.webkit.org/show_bug.cgi?id=210795
+
+ Reviewed by Alex Christensen.
+
+ Improve logging and update code according whenActivated implementation.
+ Add an early check for timeouts so that we return earlier in that case.
+
+ * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
+ (WebKit::WebSWServerConnection::createFetchTask):
+ (WebKit::WebSWServerConnection::startFetch):
+
2020-04-21 Ryan Haddad <ryanhad...@apple.com>
Unreviewed, reverting r260478.
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp (260506 => 260507)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2020-04-22 11:36:27 UTC (rev 260506)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2020-04-22 11:48:44 UTC (rev 260507)
@@ -179,7 +179,7 @@
auto* worker = server().activeWorkerFromRegistrationID(*serviceWorkerRegistrationIdentifier);
if (!worker) {
- SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED("startFetch: DidNotHandle because no active worker %s", serviceWorkerRegistrationIdentifier->loggingString().utf8().data());
+ SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED("startFetch: DidNotHandle because no active worker for registration %llu", serviceWorkerRegistrationIdentifier->toUInt64());
return nullptr;
}
@@ -191,6 +191,11 @@
return nullptr;
}
+ if (worker->hasTimedOutAnyFetchTasks()) {
+ SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED("startFetch: DidNotHandle because worker %llu has some timeouts", worker->identifier().toUInt64());
+ return nullptr;
+ }
+
auto task = makeUnique<ServiceWorkerFetchTask>(*this, loader, ResourceRequest { request }, identifier(), worker->identifier(), *serviceWorkerRegistrationIdentifier, shouldSoftUpdate);
startFetch(*task, *worker);
return task;
@@ -208,7 +213,7 @@
}
if (!success) {
- SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED("startFetch: fetchIdentifier: %s DidNotHandle because worker did not become activated", task->fetchIdentifier().loggingString().utf8().data());
+ SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED("startFetch: fetchIdentifier: %llu DidNotHandle because worker did not become activated", task->fetchIdentifier().toUInt64());
task->cannotHandle();
return;
}
@@ -237,18 +242,12 @@
task->cannotHandle();
return;
}
- SWSERVERCONNECTION_RELEASE_LOG_IF_ALLOWED("startFetch: Starting fetch %s via service worker %s", task->fetchIdentifier().loggingString().utf8().data(), task->serviceWorkerIdentifier().loggingString().utf8().data());
+ SWSERVERCONNECTION_RELEASE_LOG_IF_ALLOWED("startFetch: Starting fetch %llu via service worker %llu", task->fetchIdentifier().toUInt64(), task->serviceWorkerIdentifier().toUInt64());
static_cast<WebSWServerToContextConnection&>(*contextConnection).startFetch(*task);
});
};
-
- if (worker.state() == ServiceWorkerState::Activating) {
- worker.whenActivated(WTFMove(runServerWorkerAndStartFetch));
- return;
- }
- ASSERT(worker.state() == ServiceWorkerState::Activated);
- runServerWorkerAndStartFetch(true);
+ worker.whenActivated(WTFMove(runServerWorkerAndStartFetch));
}
void WebSWServerConnection::postMessageToServiceWorker(ServiceWorkerIdentifier destinationIdentifier, MessageWithMessagePorts&& message, const ServiceWorkerOrClientIdentifier& sourceIdentifier)