Update web-platform-tests to revision 78f764c05c229883e87ad135c7153051a66e2851

This commit is contained in:
WPT Sync Bot 2019-03-06 20:32:15 -05:00
parent 55347aa39f
commit bf84a079f9
1983 changed files with 58006 additions and 31437 deletions

View file

@ -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');

View file

@ -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);
});

View file

@ -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

View file

@ -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 requests 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>