| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="resources/test-helpers.sub.js"></script> |
| <script> |
| function resourceUrl(path) { |
| return get_host_info()['HTTPS_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> |