2 <script src=
"../resources/testharness.js"></script>
3 <script src=
"../resources/testharnessreport.js"></script>
4 <script src=
"../resources/get-host-info.js"></script>
5 <script src=
"resources/test-helpers.js"></script>
7 function resourceUrl(path
) {
8 return get_host_info()['HTTP_ORIGIN'] + base_path() + path
;
11 function verify(performance
, resource
, description
) {
12 var entry
= performance
.getEntriesByName(resourceUrl(resource
))[0];
13 assert_greater_than(entry
.workerStart
, 0, description
);
14 assert_greater_than_equal(entry
.workerStart
, entry
.startTime
, description
);
15 assert_less_than_equal(entry
.workerStart
, entry
.fetchStart
, description
);
16 if (resource
.indexOf('redirect.php') != -1) {
17 assert_less_than_equal(entry
.workerStart
, entry
.redirectStart
,
20 assert_equals(entry
.redirectStart
, 0, description
);
24 async_test(function(t
) {
25 var worker_url
= 'resources/resource-timing-worker.js';
26 var scope
= 'resources/resource-timing-iframe.html';
29 service_worker_unregister_and_register(t
, worker_url
, scope
)
32 return wait_for_state(t
, r
.installing
, 'activated');
35 return with_iframe(scope
);
37 .then(function(frame
) {
38 var performance
= frame
.contentWindow
.performance
;
39 verify(performance
, 'resources/dummy.js', 'Generated response');
40 verify(performance
, 'resources/empty.js', 'Network fallback');
41 verify(performance
, 'resources/redirect.php?Redirect=empty.js',
44 return registration
.unregister();
49 .catch(unreached_rejection(t
));
50 }, 'Controlled resource loads');
53 var url
= resourceUrl('resources/test-helpers.js');
54 var entry
= window
.performance
.getEntriesByName(url
)[0];
55 assert_equals(entry
.workerStart
, 0, 'Non-controlled');
56 }, 'Non-controlled resource loads');