Title: [226191] trunk
Revision
226191
Author
[email protected]
Date
2017-12-20 11:16:10 -0800 (Wed, 20 Dec 2017)

Log Message

Support service worker interception of request with blob body
https://bugs.webkit.org/show_bug.cgi?id=181035

Patch by Youenn Fablet <[email protected]> on 2017-12-20
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/fetch-request-xhr.https-expected.txt:

Source/WebCore:

Covered by updated test.

Add support for getting blob request bodies within service worker.
Disable interception of requests with form datas.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::fromFormData):
* Modules/fetch/FetchBody.h:
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* workers/service/context/ServiceWorkerFetch.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):

Source/WebKit:

In case of service worker, remove the connection check to get access to the blob registry.
Apply this for cloning blobs registered by another process.

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::registerBlobURL):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerBlobURL):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (226190 => 226191)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-20 19:16:10 UTC (rev 226191)
@@ -1,3 +1,13 @@
+2017-12-20  Youenn Fablet  <[email protected]>
+
+        Support service worker interception of request with blob body
+        https://bugs.webkit.org/show_bug.cgi?id=181035
+
+        Reviewed by Chris Dumez.
+
+        * web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
+
 2017-12-20  Chris Dumez  <[email protected]>
 
         Do not reuse resource for memory cache if selected service worker differs

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


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt	2017-12-20 19:16:10 UTC (rev 226191)
@@ -16,6 +16,6 @@
 PASS Service Worker should intercept EventSource 
 PASS Service Worker responds to fetch event with the correct integrity_metadata 
 PASS FetchEvent#body is a string 
-FAIL FetchEvent#body is a blob assert_equals: expected "it's me the blob and more blob!" but got ""
+PASS FetchEvent#body is a blob 
 PASS Service Worker responds to fetch event with the correct keepalive value 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt (226190 => 226191)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt	2017-12-20 19:16:10 UTC (rev 226191)
@@ -5,10 +5,10 @@
 PASS event.request has the expected headers for cross-origin GET. 
 PASS event.request has the expected headers for cross-origin POST. 
 PASS FetchEvent#request.body contains XHR request data (string) 
-FAIL FetchEvent#request.body contains XHR request data (blob) promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "test blob" but got """
+PASS FetchEvent#request.body contains XHR request data (blob) 
 PASS FetchEvent#request.method is set to XHR method 
 PASS XHR using OPTIONS method 
-FAIL XHR with form data promise_test: Unhandled rejection with value: object "Error: assert_true: form data response content is as expected expected true got false"
+FAIL XHR with form data promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "POST" but got (undefined) undefined"
 FAIL XHR with mode/credentials set promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "include" but got "same-origin""
 PASS XHR to data URL 
 PASS restore global state 

Modified: trunk/Source/WebCore/ChangeLog (226190 => 226191)


--- trunk/Source/WebCore/ChangeLog	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/ChangeLog	2017-12-20 19:16:10 UTC (rev 226191)
@@ -1,3 +1,24 @@
+2017-12-20  Youenn Fablet  <[email protected]>
+
+        Support service worker interception of request with blob body
+        https://bugs.webkit.org/show_bug.cgi?id=181035
+
+        Reviewed by Chris Dumez.
+
+        Covered by updated test.
+
+        Add support for getting blob request bodies within service worker.
+        Disable interception of requests with form datas.
+
+        * Modules/fetch/FetchBody.cpp:
+        (WebCore::FetchBody::fromFormData):
+        * Modules/fetch/FetchBody.h:
+        * workers/service/context/ServiceWorkerFetch.cpp:
+        (WebCore::ServiceWorkerFetch::dispatchFetchEvent):
+        * workers/service/context/ServiceWorkerFetch.h:
+        * workers/service/context/ServiceWorkerThread.cpp:
+        (WebCore::ServiceWorkerThread::postFetchTask):
+
 2017-12-20  Jeremy Jones  <[email protected]>
 
         Send fullscreenChange earlier, in webkitWillEnterFullscreen

Modified: trunk/Source/WebCore/Modules/fetch/FetchBody.cpp (226190 => 226191)


--- trunk/Source/WebCore/Modules/fetch/FetchBody.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/Modules/fetch/FetchBody.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -70,18 +70,24 @@
     });
 }
 
-std::optional<FetchBody> FetchBody::fromFormData(FormData* formData)
+std::optional<FetchBody> FetchBody::fromFormData(FormData& formData)
 {
-    if (!formData || formData->isEmpty())
-        return std::nullopt;
+    ASSERT(!formData.isEmpty());
 
-    if (auto buffer = formData->asSharedBuffer()) {
+    if (auto buffer = formData.asSharedBuffer()) {
         FetchBody body;
         body.m_consumer.setData(buffer.releaseNonNull());
         return WTFMove(body);
     }
 
-    // FIXME: Support blob and form data bodies.
+    auto url = ""
+    if (!url.isNull()) {
+        // FIXME: Properly set mime type and size of the blob.
+        Ref<const Blob> blob = Blob::deserialize(url, { }, 0, { });
+        return FetchBody { WTFMove(blob) };
+    }
+
+    // FIXME: Support form data bodies.
     return std::nullopt;
 }
 

Modified: trunk/Source/WebCore/Modules/fetch/FetchBody.h (226190 => 226191)


--- trunk/Source/WebCore/Modules/fetch/FetchBody.h	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/Modules/fetch/FetchBody.h	2017-12-20 19:16:10 UTC (rev 226191)
@@ -58,7 +58,7 @@
     static FetchBody extract(ScriptExecutionContext&, Init&&, String&);
     FetchBody() = default;
 
-    static std::optional<FetchBody> fromFormData(FormData*);
+    static std::optional<FetchBody> fromFormData(FormData&);
 
     void loadingFailed();
     void loadingSucceeded();

Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp (226190 => 226191)


--- trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -910,7 +910,7 @@
             auto familyNameString = folded.createCFString();
             RetainPtr<CFDictionaryRef> attributes;
 #if CAN_DISALLOW_USER_INSTALLED_FONTS
-            if (m_allowUserInstalledFonts == FontCache::AllowUserInstalledFonts::No) {
+            if (m_allowUserInstalledFonts == AllowUserInstalledFonts::No) {
                 CFTypeRef keys[] = { kCTFontFamilyNameAttribute, kCTFontUserInstalledAttribute };
                 CFTypeRef values[] = { familyNameString.get(), kCFBooleanFalse };
                 attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
@@ -948,7 +948,7 @@
 #endif
             RetainPtr<CFDictionaryRef> attributes;
 #if CAN_DISALLOW_USER_INSTALLED_FONTS
-            if (m_allowUserInstalledFonts == FontCache::AllowUserInstalledFonts::No) {
+            if (m_allowUserInstalledFonts == AllowUserInstalledFonts::No) {
                 CFTypeRef keys[] = { kCTFontEnabledAttribute, nameAttribute, kCTFontUserInstalledAttribute };
                 CFTypeRef values[] = { kCFBooleanTrue, postScriptNameString.get(), kCFBooleanFalse };
                 attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));

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


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -91,13 +91,24 @@
     });
 }
 
-Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&& client, WorkerGlobalScope& globalScope, std::optional<ServiceWorkerClientIdentifier> clientId, ResourceRequest&& request, String&& referrer, FetchOptions&& options)
+void dispatchFetchEvent(Ref<Client>&& client, ServiceWorkerGlobalScope& globalScope, std::optional<ServiceWorkerClientIdentifier> clientId, ResourceRequest&& request, String&& referrer, FetchOptions&& options)
 {
     ASSERT(globalScope.isServiceWorkerGlobalScope());
 
     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), WTFMove(referrer));
 
+    auto* formData = request.httpBody();
+    std::optional<FetchBody> body;
+    if (formData && !formData->isEmpty()) {
+        body = FetchBody::fromFormData(*formData);
+        if (!body) {
+            client->didNotHandle();
+            return;
+        }
+    }
+
+    auto fetchRequest = FetchRequest::create(globalScope, WTFMove(body), WTFMove(requestHeaders),  WTFMove(request), WTFMove(options), WTFMove(referrer));
+
     FetchEvent::Init init;
     init.request = WTFMove(fetchRequest);
     if (options.mode == FetchOptions::Mode::Navigate) {
@@ -118,12 +129,13 @@
     if (!event->respondWithEntered()) {
         if (event->defaultPrevented()) {
             client->didFail();
-            return event;
+            return;
         }
         client->didNotHandle();
         // FIXME: Handle soft update.
     }
-    return event;
+
+    globalScope.updateExtendedEventsSet(event.ptr());
 }
 
 } // namespace ServiceWorkerFetch

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


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h	2017-12-20 19:16:10 UTC (rev 226191)
@@ -38,8 +38,8 @@
 class ResourceRequest;
 class ResourceResponse;
 struct ServiceWorkerClientIdentifier;
+class ServiceWorkerGlobalScope;
 class SharedBuffer;
-class WorkerGlobalScope;
 
 namespace ServiceWorkerFetch {
 class Client : public ThreadSafeRefCounted<Client> {
@@ -54,7 +54,7 @@
     virtual void didNotHandle() = 0;
 };
 
-Ref<FetchEvent> dispatchFetchEvent(Ref<Client>&&, WorkerGlobalScope&, std::optional<ServiceWorkerClientIdentifier>, ResourceRequest&&, String&& referrer, FetchOptions&&);
+void dispatchFetchEvent(Ref<Client>&&, ServiceWorkerGlobalScope&, std::optional<ServiceWorkerClientIdentifier>, ResourceRequest&&, String&& referrer, FetchOptions&&);
 };
 
 } // namespace WebCore

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


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -96,9 +96,7 @@
     // 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([client = WTFMove(client), clientId, request = request.isolatedCopy(), referrer = referrer.isolatedCopy(), options = options.isolatedCopy()] (ScriptExecutionContext& context) mutable {
-        auto& serviceWorkerGlobalScope = downcast<ServiceWorkerGlobalScope>(context);
-        auto fetchEvent = ServiceWorkerFetch::dispatchFetchEvent(WTFMove(client), serviceWorkerGlobalScope, clientId, WTFMove(request), WTFMove(referrer), WTFMove(options));
-        serviceWorkerGlobalScope.updateExtendedEventsSet(fetchEvent.ptr());
+        ServiceWorkerFetch::dispatchFetchEvent(WTFMove(client), downcast<ServiceWorkerGlobalScope>(context), clientId, WTFMove(request), WTFMove(referrer), WTFMove(options));
     }, WorkerRunLoop::defaultMode());
 }
 

Modified: trunk/Source/WebKit/ChangeLog (226190 => 226191)


--- trunk/Source/WebKit/ChangeLog	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/ChangeLog	2017-12-20 19:16:10 UTC (rev 226191)
@@ -1,3 +1,23 @@
+2017-12-20  Youenn Fablet  <[email protected]>
+
+        Support service worker interception of request with blob body
+        https://bugs.webkit.org/show_bug.cgi?id=181035
+
+        Reviewed by Chris Dumez.
+
+        In case of service worker, remove the connection check to get access to the blob registry.
+        Apply this for cloning blobs registered by another process.
+
+        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
+        (WebKit::NetworkBlobRegistry::registerBlobURL):
+        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
+        (WebKit::BlobRegistryProxy::registerBlobURL):
+
 2017-12-20  Daniel Bates  <[email protected]>
 
         Remove Alternative Presentation Button

Modified: trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp (226190 => 226191)


--- trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -71,16 +71,19 @@
     mapIterator->value.add(url);
 }
 
-void NetworkBlobRegistry::registerBlobURL(NetworkConnectionToWebProcess* connection, const WebCore::URL& url, const WebCore::URL& srcURL)
+void NetworkBlobRegistry::registerBlobURL(NetworkConnectionToWebProcess* connection, const WebCore::URL& url, const WebCore::URL& srcURL, bool shouldBypassConnectionCheck)
 {
     // The connection may not be registered if NetworkProcess prevously crashed for any reason.
     BlobForConnectionMap::iterator mapIterator = m_blobsForConnection.find(connection);
-    if (mapIterator == m_blobsForConnection.end())
-        return;
+    if (mapIterator == m_blobsForConnection.end()) {
+        if (!shouldBypassConnectionCheck)
+            return;
+        mapIterator = m_blobsForConnection.add(connection, HashSet<URL>()).iterator;
+    }
 
     blobRegistry().registerBlobURL(url, srcURL);
 
-    ASSERT(mapIterator->value.contains(srcURL));
+    ASSERT(shouldBypassConnectionCheck || mapIterator->value.contains(srcURL));
     mapIterator->value.add(url);
 }
 

Modified: trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h (226190 => 226191)


--- trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h	2017-12-20 19:16:10 UTC (rev 226191)
@@ -48,7 +48,7 @@
 
     void registerFileBlobURL(NetworkConnectionToWebProcess*, const WebCore::URL&, const String& path, RefPtr<SandboxExtension>&&, const String& contentType);
     void registerBlobURL(NetworkConnectionToWebProcess*, const WebCore::URL&, Vector<WebCore::BlobPart>&&, const String& contentType);
-    void registerBlobURL(NetworkConnectionToWebProcess*, const WebCore::URL&, const WebCore::URL& srcURL);
+    void registerBlobURL(NetworkConnectionToWebProcess*, const WebCore::URL&, const WebCore::URL& srcURL, bool shouldBypassConnectionCheck);
     void registerBlobURLOptionallyFileBacked(NetworkConnectionToWebProcess*, const WebCore::URL&, const WebCore::URL& srcURL, const String& fileBackedPath, const String& contentType);
     void registerBlobURLForSlice(NetworkConnectionToWebProcess*, const WebCore::URL&, const WebCore::URL& srcURL, int64_t start, int64_t end);
     void unregisterBlobURL(NetworkConnectionToWebProcess*, const WebCore::URL&);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (226190 => 226191)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -389,9 +389,9 @@
     NetworkBlobRegistry::singleton().registerBlobURL(this, url, WTFMove(blobParts), contentType);
 }
 
-void NetworkConnectionToWebProcess::registerBlobURLFromURL(const URL& url, const URL& srcURL)
+void NetworkConnectionToWebProcess::registerBlobURLFromURL(const URL& url, const URL& srcURL, bool shouldBypassConnectionCheck)
 {
-    NetworkBlobRegistry::singleton().registerBlobURL(this, url, srcURL);
+    NetworkBlobRegistry::singleton().registerBlobURL(this, url, srcURL, shouldBypassConnectionCheck);
 }
 
 void NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob(const Vector<String>& filePaths, SandboxExtension::HandleArray&& handles)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (226190 => 226191)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2017-12-20 19:16:10 UTC (rev 226191)
@@ -110,7 +110,7 @@
 
     void registerFileBlobURL(const WebCore::URL&, const String& path, SandboxExtension::Handle&&, const String& contentType);
     void registerBlobURL(const WebCore::URL&, Vector<WebCore::BlobPart>&&, const String& contentType);
-    void registerBlobURLFromURL(const WebCore::URL&, const WebCore::URL& srcURL);
+    void registerBlobURLFromURL(const WebCore::URL&, const WebCore::URL& srcURL, bool shouldBypassConnectionCheck);
     void preregisterSandboxExtensionsForOptionallyFileBackedBlob(const Vector<String>& fileBackedPath, SandboxExtension::HandleArray&&);
     void registerBlobURLOptionallyFileBacked(const WebCore::URL&, const WebCore::URL& srcURL, const String& fileBackedPath, const String& contentType);
     void registerBlobURLForSlice(const WebCore::URL&, const WebCore::URL& srcURL, int64_t start, int64_t end);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (226190 => 226191)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2017-12-20 19:16:10 UTC (rev 226191)
@@ -42,7 +42,7 @@
 
     RegisterFileBlobURL(WebCore::URL url, String path, WebKit::SandboxExtension::Handle extensionHandle, String contentType)
     RegisterBlobURL(WebCore::URL url, Vector<WebCore::BlobPart> blobParts, String contentType)
-    RegisterBlobURLFromURL(WebCore::URL url, WebCore::URL srcURL)
+    RegisterBlobURLFromURL(WebCore::URL url, WebCore::URL srcURL, bool shouldBypassConnectionCheck)
     PreregisterSandboxExtensionsForOptionallyFileBackedBlob(Vector<String> filePaths, WebKit::SandboxExtension::HandleArray extensionHandles)
     RegisterBlobURLOptionallyFileBacked(WebCore::URL url, WebCore::URL srcURL, String fileBackedPath, String contentType)
     RegisterBlobURLForSlice(WebCore::URL url, WebCore::URL srcURL, int64_t start, int64_t end)

Modified: trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp (226190 => 226191)


--- trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp	2017-12-20 18:55:53 UTC (rev 226190)
+++ trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp	2017-12-20 19:16:10 UTC (rev 226191)
@@ -31,6 +31,7 @@
 #include "WebCoreArgumentCoders.h"
 #include "WebProcess.h"
 #include <WebCore/BlobDataFileReference.h>
+#include <WebCore/SWContextManager.h>
 
 using namespace WebCore;
 
@@ -54,7 +55,11 @@
 
 void BlobRegistryProxy::registerBlobURL(const URL& url, const URL& srcURL)
 {
-    WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL(url, srcURL), 0);
+    bool shouldBypassConnectionCheck = false;
+#if ENABLE(SERVICE_WORKER)
+    shouldBypassConnectionCheck = SWContextManager::singleton().connection();
+#endif
+    WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL { url, srcURL, shouldBypassConnectionCheck }, 0);
 }
 
 void BlobRegistryProxy::registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, RefPtr<WebCore::BlobDataFileReference>&& file, const String& contentType)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to