Diff
Modified: trunk/LayoutTests/ChangeLog (224343 => 224344)
--- trunk/LayoutTests/ChangeLog 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/LayoutTests/ChangeLog 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,5 +1,19 @@
2017-11-02 Youenn Fablet <[email protected]>
+ Service Worker fetch should transmit headers to its client
+ https://bugs.webkit.org/show_bug.cgi?id=179156
+
+ Reviewed by Chris Dumez.
+
+ * http/tests/workers/service/basic-fetch.https-expected.txt:
+ * http/tests/workers/service/resources/basic-fetch-worker.js:
+ Adding header specific subtest.
+ * http/tests/workers/service/resources/image-fetch-worker.js:
+ Updating test so that image does not go in the memory cache.
+ Otherwise test is flaky when run multiple times on the same runner.
+
+2017-11-02 Youenn Fablet <[email protected]>
+
Fix WPT service worker tests using www1 URLs
https://bugs.webkit.org/show_bug.cgi?id=179144
Modified: trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt (224343 => 224344)
--- trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,8 +1,9 @@
-CONSOLE MESSAGE: line 12: test1 status code: 200
-CONSOLE MESSAGE: line 13: test1 status text: Hello from service worker
-CONSOLE MESSAGE: line 16: test1 source: Service worker
-CONSOLE MESSAGE: line 19: test2 status code: 500
-CONSOLE MESSAGE: line 20: test2 status text: Error from service worker
-CONSOLE MESSAGE: line 23: test2 source: Service worker
-CONSOLE MESSAGE: line 32: test3 fetch failed as expected
+test1 status code: 200
+test1 status text: Hello from service worker
+test1 header Hello: World
+test1 source: Service worker
+test2 status code: 500
+test2 status text: Error from service worker
+test2 source: Service worker
+test3 fetch failed as expected
Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js (224343 => 224344)
--- trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,6 +1,6 @@
self.addEventListener("fetch", (event) => {
if (event.request.url.indexOf("test1") !== -1) {
- event.respondWith(new Response(null, { status: 200, statusText: "Hello from service worker" }));
+ event.respondWith(new Response(null, { status: 200, statusText: "Hello from service worker", headers: [["Hello", "World"]] }));
return;
}
if (event.request.url.indexOf("test2") !== -1) {
Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js (224343 => 224344)
--- trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,8 +1,3 @@
-function done()
-{
- finishSWTest();
-}
-
async function test()
{
try {
@@ -9,30 +4,31 @@
await navigator.serviceWorker.register("resources/basic-fetch-worker.js", { });
var response = await fetch("test1");
- console.log("test1 status code: " + response.status);
- console.log("test1 status text: " + response.statusText);
+ log("test1 status code: " + response.status);
+ log("test1 status text: " + response.statusText);
+ log("test1 header Hello: " + response.headers.get("hello"));
if (window.internals)
- console.log("test1 source: " + internals.fetchResponseSource(response));
+ log("test1 source: " + internals.fetchResponseSource(response));
var response = await fetch("test2");
- console.log("test2 status code: " + response.status);
- console.log("test2 status text: " + response.statusText);
+ log("test2 status code: " + response.status);
+ log("test2 status text: " + response.statusText);
if (window.internals)
- console.log("test2 source: " + internals.fetchResponseSource(response));
+ log("test2 source: " + internals.fetchResponseSource(response));
try {
response = await fetch("test3");
- console.log("test3 fetch succeeded unexpectedly");
- console.log("test3 status code: " + response.status);
- console.log("test3 status text: " + response.statusText);
+ log("test3 fetch succeeded unexpectedly");
+ log("test3 status code: " + response.status);
+ log("test3 status text: " + response.statusText);
} catch (e) {
- console.log("test3 fetch failed as expected");
+ log("test3 fetch failed as expected");
}
} catch(e) {
- console.log("Got exception: " + e);
+ log("Got exception: " + e);
}
finishSWTest();
}
Modified: trunk/LayoutTests/http/tests/workers/service/resources/image-fetch-worker.js (224343 => 224344)
--- trunk/LayoutTests/http/tests/workers/service/resources/image-fetch-worker.js 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/LayoutTests/http/tests/workers/service/resources/image-fetch-worker.js 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,3 +1,4 @@
+var response;
var status = "no status";
self.addEventListener("fetch", (event) => {
if (event.request.url.indexOf("status") !== -1) {
@@ -10,8 +11,13 @@
return;
}
status = "Fetching " + event.request.url.substring(0, event.request.url.length - 18);
- event.respondWith(fetch(event.request.url.substring(0, event.request.url.length - 18)).then((response) => {
+ event.respondWith(fetch(event.request.url.substring(0, event.request.url.length - 18)).then((r) => {
+ response = r;
status = "Got response for " + event.request.url.substring(0, event.request.url.length - 18) + ", status code is " + response.status;
- return response;
+ return response.arrayBuffer();
+ }).then((buffer) => {
+ var headers = new Headers(response.headers);
+ headers.set("cache-control", "no-cache");
+ return new Response(buffer, {headers: headers});
}));
});
Modified: trunk/Source/WebCore/ChangeLog (224343 => 224344)
--- trunk/Source/WebCore/ChangeLog 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/Source/WebCore/ChangeLog 2017-11-02 17:46:48 UTC (rev 224344)
@@ -1,3 +1,20 @@
+2017-11-02 Youenn Fablet <[email protected]>
+
+ Service Worker fetch should transmit headers to its client
+ https://bugs.webkit.org/show_bug.cgi?id=179156
+
+ Reviewed by Chris Dumez.
+
+ Covered by updated tests.
+
+ Making resourceResponse getter return a ResourceResponse with the headers of the FetchResponse Headers object.
+
+ * Modules/cache/DOMCache.cpp:
+ (WebCore::DOMCache::toConnectionRecord):
+ * Modules/fetch/FetchResponse.cpp:
+ (WebCore::FetchResponse::resourceResponse const):
+ * Modules/fetch/FetchResponse.h:
+
2017-11-02 Chris Dumez <[email protected]>
Update SWServerJobQueue to follow the Service Worker specification more closely
Modified: trunk/Source/WebCore/Modules/cache/DOMCache.cpp (224343 => 224344)
--- trunk/Source/WebCore/Modules/cache/DOMCache.cpp 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.cpp 2017-11-02 17:46:48 UTC (rev 224344)
@@ -480,11 +480,7 @@
Record DOMCache::toConnectionRecord(const FetchRequest& request, FetchResponse& response, DOMCacheEngine::ResponseBody&& responseBody)
{
- // FIXME: Add a setHTTPHeaderFields on ResourceResponseBase.
- ResourceResponse cachedResponse = response.resourceResponse();
- for (auto& header : response.headers().internalHeaders())
- cachedResponse.setHTTPHeaderField(header.key, header.value);
-
+ auto cachedResponse = response.resourceResponse();
ResourceRequest cachedRequest = request.internalRequest();
cachedRequest.setHTTPHeaderFields(request.headers().internalHeaders());
Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp (224343 => 224344)
--- trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-11-02 17:46:48 UTC (rev 224344)
@@ -438,4 +438,13 @@
return !isActive();
}
+ResourceResponse FetchResponse::resourceResponse() const
+{
+ auto response = m_response;
+ // FIXME: Add a setHTTPHeaderFields on ResourceResponseBase.
+ for (auto& header : headers().internalHeaders())
+ response.setHTTPHeaderField(header.key, header.value);
+ return response;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.h (224343 => 224344)
--- trunk/Source/WebCore/Modules/fetch/FetchResponse.h 2017-11-02 17:46:02 UTC (rev 224343)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.h 2017-11-02 17:46:48 UTC (rev 224344)
@@ -95,7 +95,7 @@
void consumeBodyWhenLoaded(ConsumeDataCallback&&);
void consumeBodyFromReadableStream(ConsumeDataCallback&&);
- const ResourceResponse& resourceResponse() const { return m_response; }
+ WEBCORE_EXPORT ResourceResponse resourceResponse() const;
uint64_t bodySizeWithPadding() const { return m_bodySizeWithPadding; }
void setBodySizeWithPadding(uint64_t size) { m_bodySizeWithPadding = size; }