Title: [225294] trunk
Revision
225294
Author
commit-qu...@webkit.org
Date
2017-11-29 13:47:37 -0800 (Wed, 29 Nov 2017)

Log Message

Add support for FetchEvent.clientId
https://bugs.webkit.org/show_bug.cgi?id=180052

Patch by Youenn Fablet <you...@apple.com> on 2017-11-29
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:
* web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js:

Source/WebCore:

Covered by updated test.

Add script execution context identifier as a FetchOptions parameter.
This is then sent to the service worker process which can then set FetchEvent.clientId appropriately.
If the fetch is for a subresource, clientId is used directly.
If it is a navigation, clientId is set to targetClientId.

* loader/FetchOptions.h:
(WebCore::FetchOptions::encode const):
(WebCore::FetchOptions::decode):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::prepareFetch):
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::setClientIdentifierIfNeeded):
* loader/cache/CachedResourceRequest.h:
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* workers/service/context/ServiceWorkerFetch.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):
* workers/service/context/ServiceWorkerThread.h:

Source/WebKit:

Using FetchOption persistency coders for cache API and modernizing IPC FetchOptions decoding.

* WebKit/Shared/WebCoreArgumentCoders.cpp:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::encode):
(WebKit::CacheStorage::Cache::decodeRecordHeader):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (225293 => 225294)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-11-29 21:47:37 UTC (rev 225294)
@@ -1,3 +1,14 @@
+2017-11-29  Youenn Fablet  <you...@apple.com>
+
+        Add support for FetchEvent.clientId
+        https://bugs.webkit.org/show_bug.cgi?id=180052
+
+        Reviewed by Chris Dumez.
+
+        * web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:
+        * web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js:
+
 2017-11-29  Ms2ger  <ms2...@igalia.com>
 
         Rebaseline imported/w3c/web-platform-tests/resource-timing/single-entry-per-resource.html.

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt (225293 => 225294)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt	2017-11-29 21:47:37 UTC (rev 225294)
@@ -4,7 +4,7 @@
 FAIL Service Worker responds to fetch event with string assert_unreached: unexpected rejection: assert_equals: The character set of the response created with a string should be UTF-8 expected "UTF-8" but got "windows-1252" Reached unreachable code
 FAIL Service Worker responds to fetch event with blob body assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a test string expected "Test blob" but got "" Reached unreachable code
 FAIL Service Worker responds to fetch event with the referrer URL assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with the referrer URL expected "Referrer: https://localhost:9443/service-workers/service-worker/fetch-event.https.html" but got "" Reached unreachable code
-FAIL Service Worker responds to fetch event with an existing client id assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a client id expected "Client ID Not Found" but got "Client ID Found: " Reached unreachable code
+PASS Service Worker responds to fetch event with an existing client id 
 PASS Service Worker does not respond to fetch event 
 PASS Service Worker responds to fetch event with null response body 
 PASS Service Worker fetches other file in fetch event 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js (225293 => 225294)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js	2017-11-29 21:47:37 UTC (rev 225294)
@@ -4,9 +4,9 @@
 // the `event` object. In the case of the `onmessage` handler, it provides the
 // Client instance attributes of the requested clients.
 self._onfetch_ = function(e) {
-  if (e.request.mode === 'navigate' && e.clientId !== null) {
+  if (e.request.mode === 'navigate' && e.clientId !== "") {
     e.respondWith(Response.error(
-      '`clientId` incorrectly set to non-null value for request with mode `navigate`'
+      '`clientId` incorrectly set to non-empty value for request with mode `navigate`'
     ));
     return;
   }

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js (225293 => 225294)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js	2017-11-29 21:47:37 UTC (rev 225294)
@@ -29,7 +29,7 @@
 
 function handleClientId(event) {
   var body;
-  if (event.clientId !== null) {
+  if (event.clientId !== "") {
     body = 'Client ID Found: ' + event.clientId;
   } else {
     body = 'Client ID Not Found';

Modified: trunk/Source/WebCore/ChangeLog (225293 => 225294)


--- trunk/Source/WebCore/ChangeLog	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/ChangeLog	2017-11-29 21:47:37 UTC (rev 225294)
@@ -1,5 +1,34 @@
 2017-11-29  Youenn Fablet  <you...@apple.com>
 
+        Add support for FetchEvent.clientId
+        https://bugs.webkit.org/show_bug.cgi?id=180052
+
+        Reviewed by Chris Dumez.
+
+        Covered by updated test.
+
+        Add script execution context identifier as a FetchOptions parameter.
+        This is then sent to the service worker process which can then set FetchEvent.clientId appropriately.
+        If the fetch is for a subresource, clientId is used directly.
+        If it is a navigation, clientId is set to targetClientId.
+
+        * loader/FetchOptions.h:
+        (WebCore::FetchOptions::encode const):
+        (WebCore::FetchOptions::decode):
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::prepareFetch):
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::CachedResourceRequest::setClientIdentifierIfNeeded):
+        * loader/cache/CachedResourceRequest.h:
+        * workers/service/context/ServiceWorkerFetch.cpp:
+        (WebCore::ServiceWorkerFetch::dispatchFetchEvent):
+        * workers/service/context/ServiceWorkerFetch.h:
+        * workers/service/context/ServiceWorkerThread.cpp:
+        (WebCore::ServiceWorkerThread::postFetchTask):
+        * workers/service/context/ServiceWorkerThread.h:
+
+2017-11-29  Youenn Fablet  <you...@apple.com>
+
         Flaky crash in WebCore::DOMGuardedObject::clear() during service worker tests
         https://bugs.webkit.org/show_bug.cgi?id=180045
         <rdar://problem/35737288>

Modified: trunk/Source/WebCore/loader/FetchOptions.h (225293 => 225294)


--- trunk/Source/WebCore/loader/FetchOptions.h	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/loader/FetchOptions.h	2017-11-29 21:47:37 UTC (rev 225294)
@@ -28,6 +28,7 @@
 
 #pragma once
 
+#include "DocumentIdentifier.h"
 #include "ReferrerPolicy.h"
 #include <wtf/text/WTFString.h>
 
@@ -44,8 +45,10 @@
     FetchOptions(Destination, Mode, Credentials, Cache, Redirect, ReferrerPolicy, String&&, bool);
     FetchOptions isolatedCopy() const { return { destination, mode, credentials, cache, redirect, referrerPolicy, integrity.isolatedCopy(), keepAlive }; }
 
+    template<class Encoder> void encodePersistent(Encoder&) const;
+    template<class Decoder> static bool decodePersistent(Decoder&, FetchOptions&);
     template<class Encoder> void encode(Encoder&) const;
-    template<class Decoder> static bool decode(Decoder&, FetchOptions&);
+    template<class Decoder> static std::optional<FetchOptions> decode(Decoder&);
 
     Destination destination { Destination::EmptyString };
     Mode mode { Mode::NoCors };
@@ -55,6 +58,7 @@
     ReferrerPolicy referrerPolicy { ReferrerPolicy::EmptyString };
     String integrity;
     bool keepAlive { false };
+    std::optional<DocumentIdentifier> clientIdentifier;
 };
 
 inline FetchOptions::FetchOptions(Destination destination, Mode mode, Credentials credentials, Cache cache, Redirect redirect, ReferrerPolicy referrerPolicy, String&& integrity, bool keepAlive)
@@ -155,8 +159,9 @@
 
 namespace WebCore {
 
-template<class Encoder> inline void FetchOptions::encode(Encoder& encoder) const
+template<class Encoder> inline void FetchOptions::encodePersistent(Encoder& encoder) const
 {
+    // Changes to encoding here should bump NetworkCache Storage format version.
     encoder << destination;
     encoder << mode;
     encoder << credentials;
@@ -167,7 +172,7 @@
     encoder << keepAlive;
 }
 
-template<class Decoder> inline bool FetchOptions::decode(Decoder& decoder, FetchOptions& options)
+template<class Decoder> inline bool FetchOptions::decodePersistent(Decoder& decoder, FetchOptions& options)
 {
     FetchOptions::Destination destination;
     if (!decoder.decode(destination))
@@ -213,4 +218,25 @@
     return true;
 }
 
+template<class Encoder> inline void FetchOptions::encode(Encoder& encoder) const
+{
+    encodePersistent(encoder);
+    encoder << clientIdentifier;
+}
+
+template<class Decoder> inline std::optional<FetchOptions> FetchOptions::decode(Decoder& decoder)
+{
+    FetchOptions options;
+    if (!decodePersistent(decoder, options))
+        return std::nullopt;
+
+    std::optional<std::optional<DocumentIdentifier>> clientIdentifier;
+    decoder >> clientIdentifier;
+    if (!clientIdentifier)
+        return std::nullopt;
+    options.clientIdentifier = WTFMove(clientIdentifier.value());
+
+    return WTFMove(options);
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (225293 => 225294)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -693,6 +693,7 @@
         if (!request.origin())
             request.setOrigin(document->securityOrigin());
 #if ENABLE(SERVICE_WORKER)
+        request.setClientIdentifierIfNeeded(document->identifier());
         if (auto* activeServiceWorker = document->activeServiceWorker())
             request.setSelectedServiceWorkerIdentifierIfNeeded(activeServiceWorker->identifier());
 #endif

Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp (225293 => 225294)


--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -274,6 +274,12 @@
 }
 
 #if ENABLE(SERVICE_WORKER)
+void CachedResourceRequest::setClientIdentifierIfNeeded(DocumentIdentifier clientIdentifier)
+{
+    if (!m_options.clientIdentifier)
+        m_options.clientIdentifier = clientIdentifier;
+}
+
 void CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded(ServiceWorkerIdentifier identifier)
 {
     if (isNonSubresourceRequest(m_options.destination))

Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.h (225293 => 225294)


--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.h	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.h	2017-11-29 21:47:37 UTC (rev 225294)
@@ -98,6 +98,7 @@
     static String splitFragmentIdentifierFromRequestURL(ResourceRequest&);
 
 #if ENABLE(SERVICE_WORKER)
+    void setClientIdentifierIfNeeded(DocumentIdentifier);
     void setSelectedServiceWorkerIdentifierIfNeeded(ServiceWorkerIdentifier);
     void setNavigationServiceWorkerRegistrationData(const std::optional<ServiceWorkerRegistrationData>&);
 #endif

Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp (225293 => 225294)


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -33,6 +33,7 @@
 #include "FetchRequest.h"
 #include "FetchResponse.h"
 #include "ResourceRequest.h"
+#include "ServiceWorkerClientIdentifier.h"
 #include "WorkerGlobalScope.h"
 
 namespace WebCore {
@@ -89,7 +90,7 @@
     client->didFinish();
 }
 
-Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&& client, WorkerGlobalScope& globalScope, ResourceRequest&& request, FetchOptions&& options)
+Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&& client, WorkerGlobalScope& globalScope, std::optional<ServiceWorkerClientIdentifier> clientId, ResourceRequest&& request, FetchOptions&& options)
 {
     ASSERT(globalScope.isServiceWorkerGlobalScope());
 
@@ -96,9 +97,14 @@
     auto requestHeaders = FetchHeaders::create(FetchHeaders::Guard::Immutable, HTTPHeaderMap { request.httpHeaderFields() });
     auto fetchRequest = FetchRequest::create(globalScope, FetchBody::fromFormData(request.httpBody()), WTFMove(requestHeaders),  WTFMove(request), WTFMove(options), request.httpReferrer());
 
-    // FIXME: Initialize other FetchEvent::Init fields.
     FetchEvent::Init init;
     init.request = WTFMove(fetchRequest);
+    if (options.mode == FetchOptions::Mode::Navigate) {
+        // FIXME: Set reservedClientId.
+        if (clientId)
+            init.targetClientId = clientId->toString();
+    } else if (clientId)
+        init.clientId = clientId->toString();
     init.cancelable = true;
     auto event = FetchEvent::create(eventNames().fetchEvent, WTFMove(init), Event::IsTrusted::Yes);
 

Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h (225293 => 225294)


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h	2017-11-29 21:47:37 UTC (rev 225294)
@@ -37,6 +37,7 @@
 class FormData;
 class ResourceRequest;
 class ResourceResponse;
+struct ServiceWorkerClientIdentifier;
 class SharedBuffer;
 class WorkerGlobalScope;
 
@@ -53,7 +54,7 @@
     virtual void didNotHandle() = 0;
 };
 
-Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&&, WorkerGlobalScope&, ResourceRequest&&, FetchOptions&&);
+Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&&, WorkerGlobalScope&, std::optional<ServiceWorkerClientIdentifier>, ResourceRequest&&, FetchOptions&&);
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp (225293 => 225294)


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -94,12 +94,12 @@
     WorkerThread::runEventLoop();
 }
 
-void ServiceWorkerThread::postFetchTask(Ref<ServiceWorkerFetch::Client>&& client, ResourceRequest&& request, FetchOptions&& options)
+void ServiceWorkerThread::postFetchTask(Ref<ServiceWorkerFetch::Client>&& client, std::optional<ServiceWorkerClientIdentifier>&& clientId, ResourceRequest&& request, FetchOptions&& options)
 {
     // FIXME: instead of directly using runLoop(), we should be using something like WorkerGlobalScopeProxy.
     // FIXME: request and options come straigth from IPC so are already isolated. We should be able to take benefit of that.
-    runLoop().postTaskForMode([this, client = WTFMove(client), request = request.isolatedCopy(), options = options.isolatedCopy()] (ScriptExecutionContext& context) mutable {
-        auto fetchEvent = ServiceWorkerFetch::dispatchFetchEvent(WTFMove(client), downcast<WorkerGlobalScope>(context), WTFMove(request), WTFMove(options));
+    runLoop().postTaskForMode([this, client = WTFMove(client), clientId, request = request.isolatedCopy(), options = options.isolatedCopy()] (ScriptExecutionContext& context) mutable {
+        auto fetchEvent = ServiceWorkerFetch::dispatchFetchEvent(WTFMove(client), downcast<WorkerGlobalScope>(context), clientId, WTFMove(request), WTFMove(options));
         updateExtendedEventsSet(fetchEvent.ptr());
     }, WorkerRunLoop::defaultMode());
 }

Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h (225293 => 225294)


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h	2017-11-29 21:47:37 UTC (rev 225294)
@@ -57,7 +57,9 @@
     WorkerObjectProxy& workerObjectProxy() const { return m_workerObjectProxy; }
 
     WEBCORE_EXPORT void postFetchTask(Ref<ServiceWorkerFetch::Client>&&, ResourceRequest&&, FetchOptions&&);
+    WEBCORE_EXPORT void postFetchTask(Ref<ServiceWorkerFetch::Client>&&, std::optional<ServiceWorkerClientIdentifier>&&, ResourceRequest&&, FetchOptions&&);
     WEBCORE_EXPORT void postMessageToServiceWorkerGlobalScope(Ref<SerializedScriptValue>&&, std::unique_ptr<MessagePortChannelArray>&&, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData);
+
     void fireInstallEvent();
     void fireActivateEvent();
 

Modified: trunk/Source/WebKit/ChangeLog (225293 => 225294)


--- trunk/Source/WebKit/ChangeLog	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebKit/ChangeLog	2017-11-29 21:47:37 UTC (rev 225294)
@@ -1,3 +1,21 @@
+2017-11-29  Youenn Fablet  <you...@apple.com>
+
+        Add support for FetchEvent.clientId
+        https://bugs.webkit.org/show_bug.cgi?id=180052
+
+        Reviewed by Chris Dumez.
+
+        Using FetchOption persistency coders for cache API and modernizing IPC FetchOptions decoding.
+
+        * WebKit/Shared/WebCoreArgumentCoders.cpp:
+        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
+        (WebKit::CacheStorage::Cache::encode):
+        (WebKit::CacheStorage::Cache::decodeRecordHeader):
+        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
+        (WebKit::WebSWContextManagerConnection::startFetch):
+        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
+        (WebKit::WebSWContextManagerConnection::startFetch):
+
 2017-11-29  Alex Christensen  <achristen...@webkit.org>
 
         Make WebFrameLoaderClient more robust against null pointer dereferencing

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp (225293 => 225294)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -539,7 +539,7 @@
     encoder << recordInformation.size;
     encoder << record.requestHeadersGuard;
     record.request.encodeWithoutPlatformData(encoder);
-    encoder << record.options;
+    record.options.encodePersistent(encoder);
     encoder << record.referrer;
 
     encoder << record.responseHeadersGuard;
@@ -580,7 +580,7 @@
     if (!record.request.decodeWithoutPlatformData(decoder))
         return std::nullopt;
 
-    if (!decoder.decode(record.options))
+    if (!FetchOptions::decodePersistent(decoder, record.options))
         return std::nullopt;
 
     if (!decoder.decode(record.referrer))

Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp (225293 => 225294)


--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -290,8 +290,9 @@
     if (!decoder.decode(request))
         return std::nullopt;
 
-    WebCore::FetchOptions options;
-    if (!decoder.decode(options))
+    std::optional<WebCore::FetchOptions> options;
+    decoder >> options;
+    if (!options)
         return std::nullopt;
 
     String referrer;
@@ -337,7 +338,7 @@
         }
     }
 
-    return {{ WTFMove(identifier), WTFMove(updateResponseCounter), WTFMove(requestHeadersGuard), WTFMove(request), WTFMove(options), WTFMove(referrer), WTFMove(responseHeadersGuard), WTFMove(response), WTFMove(responseBody), responseBodySize }};
+    return {{ WTFMove(identifier), WTFMove(updateResponseCounter), WTFMove(requestHeadersGuard), WTFMove(request), WTFMove(options.value()), WTFMove(referrer), WTFMove(responseHeadersGuard), WTFMove(response), WTFMove(responseBody), responseBodySize }};
 }
 
 void ArgumentCoder<EventTrackingRegions>::encode(Encoder& encoder, const EventTrackingRegions& eventTrackingRegions)

Modified: trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp (225293 => 225294)


--- trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp	2017-11-29 21:42:00 UTC (rev 225293)
+++ trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp	2017-11-29 21:47:37 UTC (rev 225294)
@@ -141,9 +141,12 @@
     }
 
     auto client = WebServiceWorkerFetchTaskClient::create(m_connectionToStorageProcess.copyRef(), serverConnectionIdentifier, fetchIdentifier);
+    std::optional<ServiceWorkerClientIdentifier> clientId;
+    if (options.clientIdentifier)
+        clientId = ServiceWorkerClientIdentifier { serverConnectionIdentifier, options.clientIdentifier.value() };
 
     request.setHTTPBody(formData.takeData());
-    serviceWorkerThreadProxy->thread().postFetchTask(WTFMove(client), WTFMove(request), WTFMove(options));
+    serviceWorkerThreadProxy->thread().postFetchTask(WTFMove(client), WTFMove(clientId), WTFMove(request), WTFMove(options));
 }
 
 void WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope(ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to