-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set net::LOAD_VALIDATE_CACHE flag instead when requesting service wor…
…ker scripts with viaCache value Bug: 925249 Change-Id: I45578d8c0f61676b0958cfab9a7057796c0d2d0d Reviewed-on: https://chromium-review.googlesource.com/c/1474386 Commit-Queue: Ayu Ishii <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#636576}
- Loading branch information
1 parent
b7ddf2f
commit d0d5bc3
Showing
3 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<title>Test that cache is being bypassed/validated in no-cache mode on update</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="resources/test-helpers.sub.js"></script> | ||
<script> | ||
// Tests a service worker script fetch during an update check which | ||
// bypasses/validates the browser cache. The fetch should have the | ||
// 'if-none-match' request header. | ||
// | ||
// This tests the Update step: | ||
// "Set request’s cache mode to "no-cache" if any of the following are true..." | ||
// https://w3c.github.io/ServiceWorker/#update-algorithm | ||
// | ||
// The test works by registering a service worker with |updateViaCache| | ||
// set to "none". It then does an update. The test server responds with | ||
// an updated worker script that remembers the http request headers. | ||
// The updated worker reports back these headers to the test page. | ||
promise_test(async (t) => { | ||
const script = "resources/test-request-headers-worker.py"; | ||
const scope = "resources/"; | ||
|
||
// Register the service worker. | ||
await service_worker_unregister(t, scope); | ||
const registration = await navigator.serviceWorker.register( | ||
script, {scope, updateViaCache: 'none'}); | ||
await wait_for_state(t, registration.installing, 'activated'); | ||
|
||
// Do an update. | ||
await registration.update(); | ||
|
||
// Ask the new worker what the request headers were. | ||
const newWorker = registration.installing; | ||
const sawMessage = new Promise((resolve) => { | ||
navigator.serviceWorker.onmessage = (event) => { | ||
resolve(event.data); | ||
}; | ||
}); | ||
newWorker.postMessage('getHeaders'); | ||
const result = await sawMessage; | ||
|
||
// Test the result. | ||
assert_equals(result['service-worker'], 'script'); | ||
assert_equals(result['if-none-match'], 'etag'); | ||
}, 'headers in no-cache mode'); | ||
|
||
</script> |
7 changes: 7 additions & 0 deletions
7
service-workers/service-worker/resources/test-request-headers-worker.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
// The server injects the request headers here as a JSON string. | ||
const headersAsJson = `%HEADERS%`; | ||
const headers = JSON.parse(headersAsJson); | ||
|
||
self.addEventListener('message', async (e) => { | ||
e.source.postMessage(headers); | ||
}); |
16 changes: 16 additions & 0 deletions
16
service-workers/service-worker/resources/test-request-headers-worker.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import json | ||
import os | ||
|
||
def main(request, response): | ||
path = os.path.join(os.path.dirname(__file__), | ||
"test-request-headers-worker.js") | ||
body = open(path, "rb").read() | ||
|
||
data = {key:request.headers[key] for key,value in request.headers.iteritems()} | ||
body = body.replace("%HEADERS%", json.dumps(data)) | ||
|
||
headers = [] | ||
headers.append(("ETag", "etag")) | ||
headers.append(("Content-Type", 'text/javascript')) | ||
|
||
return headers, body |