mirror of
https://github.com/servo/servo.git
synced 2025-08-28 08:38:20 +01:00
Update web-platform-tests to revision 78f764c05c229883e87ad135c7153051a66e2851
This commit is contained in:
parent
55347aa39f
commit
bf84a079f9
1983 changed files with 58006 additions and 31437 deletions
|
@ -15,7 +15,7 @@ function crossOriginUrl(path) {
|
|||
function verify(options) {
|
||||
const url = options.mode === 'cross-origin' ? crossOriginUrl(options.resource)
|
||||
: resourceUrl(options.resource);
|
||||
const entryList = options.performance.getEntriesByName(url);
|
||||
const entryList = options.performance.getEntriesByName(url, 'resource');
|
||||
if (options.should_no_performance_entry) {
|
||||
// The performance timeline may not have an entry for a resource
|
||||
// which failed to load.
|
||||
|
@ -137,7 +137,7 @@ promise_test(function(t) {
|
|||
|
||||
test(() => {
|
||||
const url = resourceUrl('resources/test-helpers.sub.js');
|
||||
const entry = window.performance.getEntriesByName(url)[0];
|
||||
const entry = window.performance.getEntriesByName(url, 'resource')[0];
|
||||
assert_equals(entry.workerStart, 0, 'Non-controlled');
|
||||
}, 'Non-controlled resource loads');
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
|
@ -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
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue