Title: [226361] trunk
- Revision
- 226361
- Author
- [email protected]
- Date
- 2018-01-03 09:32:31 -0800 (Wed, 03 Jan 2018)
Log Message
Select service worker for documents with data/blob URLS
https://bugs.webkit.org/show_bug.cgi?id=181213
Patch by Youenn Fablet <[email protected]> on 2018-01-03
Reviewed by Alex Christensen.
Source/WebCore:
Covered by updated test.
Reusing the service worker of the parent for blob/data URL documents.
* loader/DocumentLoader.cpp:
(WebCore::isLocalURL):
(WebCore::DocumentLoader::commitData):
LayoutTests:
* http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
* http/tests/workers/service/serviceworkerclients-claim.https.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (226360 => 226361)
--- trunk/LayoutTests/ChangeLog 2018-01-03 17:28:37 UTC (rev 226360)
+++ trunk/LayoutTests/ChangeLog 2018-01-03 17:32:31 UTC (rev 226361)
@@ -1,3 +1,13 @@
+2018-01-03 Youenn Fablet <[email protected]>
+
+ Select service worker for documents with data/blob URLS
+ https://bugs.webkit.org/show_bug.cgi?id=181213
+
+ Reviewed by Alex Christensen.
+
+ * http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
+ * http/tests/workers/service/serviceworkerclients-claim.https.html:
+
2018-01-03 Ms2ger <[email protected]>
[GTK] Remove crash annotation for createImageBitmap-invalid-args.html.
Modified: trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https-expected.txt (226360 => 226361)
--- trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https-expected.txt 2018-01-03 17:28:37 UTC (rev 226360)
+++ trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https-expected.txt 2018-01-03 17:32:31 UTC (rev 226361)
@@ -1,4 +1,7 @@
+
PASS Setup worker
PASS Test self.clients.claim
+PASS Test data URL frame
+PASS Test blob URL frame
Modified: trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https.html (226360 => 226361)
--- trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https.html 2018-01-03 17:28:37 UTC (rev 226360)
+++ trunk/LayoutTests/http/tests/workers/service/serviceworkerclients-claim.https.html 2018-01-03 17:32:31 UTC (rev 226361)
@@ -2,6 +2,7 @@
<head>
<script src=""
<script src=""
+<script src=""
</head>
<body>
<script>
@@ -47,6 +48,36 @@
var text = await response.text();
assert_equals(text, "PASS");
}, "Test self.clients.claim");
+
+var htmlString = '<html><script>async function doTest() { ' +
+ ' var response = await fetch("https://127.0.0.1:8443/pinkelephant");' +
+ ' var text = await response.text();' +
+ ' window.parent.postMessage(text, "*");' +
+ '}' +
+ 'doTest();' +
+ '</scr' + 'ipt></h' + 'tml>';
+
+promise_test(async (test) => {
+ var promise = new Promise((resolve, reject) => {
+ window.addEventListener("message", (event) => {
+ resolve(event.data);
+ }, false);
+ setTimeout(() => { reject("Did not receive any message from iframe"); }, 5000);
+ });
+ var frame = await withFrame("data:text/html," + htmlString);
+ var result = await promise;
+ assert_equals(result, "PASS");
+}, "Test data URL frame");
+
+promise_test(async (test) => {
+ var blob = new Blob([''], {type: "text/html"});
+ var blobURL = URL.createObjectURL(blob);
+ var frame = await withFrame(blobURL);
+ var response = await frame.contentWindow.fetch("https://127.0.0.1:8443/pinkelephant");
+ var text = await response.text();
+ assert_equals(text, "PASS");
+}, "Test blob URL frame");
+
</script>
</body>
</html>
Modified: trunk/Source/WebCore/ChangeLog (226360 => 226361)
--- trunk/Source/WebCore/ChangeLog 2018-01-03 17:28:37 UTC (rev 226360)
+++ trunk/Source/WebCore/ChangeLog 2018-01-03 17:32:31 UTC (rev 226361)
@@ -1,3 +1,18 @@
+2018-01-03 Youenn Fablet <[email protected]>
+
+ Select service worker for documents with data/blob URLS
+ https://bugs.webkit.org/show_bug.cgi?id=181213
+
+ Reviewed by Alex Christensen.
+
+ Covered by updated test.
+
+ Reusing the service worker of the parent for blob/data URL documents.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::isLocalURL):
+ (WebCore::DocumentLoader::commitData):
+
2018-01-03 Ryan Haddad <[email protected]>
Unreviewed, rolling out r226352.
Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (226360 => 226361)
--- trunk/Source/WebCore/loader/DocumentLoader.cpp 2018-01-03 17:28:37 UTC (rev 226360)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp 2018-01-03 17:32:31 UTC (rev 226361)
@@ -863,6 +863,15 @@
cancelMainResourceLoad(error);
}
+#if ENABLE(SERVICE_WORKER)
+static inline bool isLocalURL(const URL& url)
+{
+ // https://fetch.spec.whatwg.org/#is-local
+ auto protocol = url.protocol().toStringWithoutCopying();
+ return equalLettersIgnoringASCIICase(protocol, "data") || equalLettersIgnoringASCIICase(protocol, "blob") || equalLettersIgnoringASCIICase(protocol, "about");
+}
+#endif
+
void DocumentLoader::commitData(const char* bytes, size_t length)
{
if (!m_gotFirstByte) {
@@ -892,8 +901,12 @@
if (m_serviceWorkerRegistrationData && m_serviceWorkerRegistrationData->activeWorker) {
m_frame->document()->setActiveServiceWorker(ServiceWorker::getOrCreate(*m_frame->document(), WTFMove(m_serviceWorkerRegistrationData->activeWorker.value())));
m_serviceWorkerRegistrationData = { };
+ } else if (isLocalURL(m_frame->document()->url())) {
+ if (auto* parent = m_frame->document()->parentDocument())
+ m_frame->document()->setActiveServiceWorker(parent->activeServiceWorker());
}
- if (SchemeRegistry::canServiceWorkersHandleURLScheme(m_frame->document()->url().protocol().toStringWithoutCopying()))
+
+ if (m_frame->document()->activeServiceWorker() || SchemeRegistry::canServiceWorkersHandleURLScheme(m_frame->document()->url().protocol().toStringWithoutCopying()))
m_frame->document()->setServiceWorkerConnection(&ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(m_frame->page()->sessionID()));
}
#endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes