diff options
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/resource-timing.https.html')
-rw-r--r-- | testing/web-platform/tests/service-workers/service-worker/resource-timing.https.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/resource-timing.https.html b/testing/web-platform/tests/service-workers/service-worker/resource-timing.https.html new file mode 100644 index 000000000..f33c41d71 --- /dev/null +++ b/testing/web-platform/tests/service-workers/service-worker/resource-timing.https.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<script> +function resourceUrl(path) { + return get_host_info()['HTTP_ORIGIN'] + base_path() + path; +} + +function verify(performance, resource, description) { + var entry = performance.getEntriesByName(resourceUrl(resource))[0]; + assert_greater_than(entry.workerStart, 0, description); + assert_greater_than_equal(entry.workerStart, entry.startTime, description); + assert_less_than_equal(entry.workerStart, entry.fetchStart, description); + if (resource.indexOf('redirect.py') != -1) { + assert_less_than_equal(entry.workerStart, entry.redirectStart, + description); + } else { + assert_equals(entry.redirectStart, 0, description); + } +} + +async_test(function(t) { + var worker_url = 'resources/resource-timing-worker.js'; + var scope = 'resources/resource-timing-iframe.html'; + var registration; + + service_worker_unregister_and_register(t, worker_url, scope) + .then(function(r) { + registration = r; + return wait_for_state(t, r.installing, 'activated'); + }) + .then(function() { + return with_iframe(scope); + }) + .then(function(frame) { + var performance = frame.contentWindow.performance; + verify(performance, 'resources/dummy.js', 'Generated response'); + verify(performance, 'resources/empty.js', 'Network fallback'); + verify(performance, 'resources/redirect.py?Redirect=empty.js', + 'Redirect'); + frame.remove(); + return registration.unregister(); + }) + .then(function() { + t.done(); + }) + .catch(unreached_rejection(t)); +}, 'Controlled resource loads'); + +test(function() { + var url = resourceUrl('resources/test-helpers.sub.js'); + var entry = window.performance.getEntriesByName(url)[0]; + assert_equals(entry.workerStart, 0, 'Non-controlled'); +}, 'Non-controlled resource loads'); + +</script> |