Title: [260507] trunk/Source
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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to