| Index: third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/performance-timeline.https.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/performance-timeline.https.html b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/performance-timeline.https.html
|
| index 182076baa9841f1aed31175ff960fa063d6ef0c0..d2ed677e6d011c9cf3aeb22a7bbf8cdb5d5e4b61 100644
|
| --- a/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/performance-timeline.https.html
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/performance-timeline.https.html
|
| @@ -8,4 +8,45 @@ service_worker_test(
|
| 'resources/performance-timeline-worker.js',
|
| 'Test Performance Timeline API in Service Worker');
|
|
|
| +// The purpose of this test is to verify that service worker overhead
|
| +// is included in the Performance API's timing information.
|
| +promise_test(t => {
|
| + let script = 'resources/empty-but-slow-worker.js';
|
| + let scope = 'resources/dummy.txt?slow-sw-timing';
|
| + let url = new URL(scope, window.location).href;
|
| + let slowURL = url + '&slow';
|
| + let frame;
|
| + return service_worker_unregister_and_register(t, script, scope)
|
| + .then(reg => wait_for_state(t, reg.installing, 'activated'))
|
| + .then(_ => with_iframe(scope))
|
| + .then(f => {
|
| + frame = f;
|
| + return Promise.all([
|
| + // This will get effectively an empty service worker FetchEvent
|
| + // handler. It should have no additional delay. Note that the
|
| + // text() call is necessary to complete the response and have the
|
| + // timings show up in the performance entries.
|
| + frame.contentWindow.fetch(url).then(r => r && r.text()),
|
| + // This will cause the service worker to spin for two seconds
|
| + // in its FetchEvent handler.
|
| + frame.contentWindow.fetch(slowURL).then(r => r && r.text())
|
| + ]);
|
| + })
|
| + .then(_ => {
|
| + function elapsed(u) {
|
| + let entry = frame.contentWindow.performance.getEntriesByName(u);
|
| + return entry[0] ? entry[0].duration : undefined;
|
| + }
|
| + let urlTime = elapsed(url);
|
| + let slowURLTime = elapsed(slowURL);
|
| + // Verify the request slowed by the service worker is indeed measured
|
| + // to be slower. Note, we compare to smaller delay instead of the exact
|
| + // delay amount to avoid making the test racy under automation.
|
| + assert_true(slowURLTime >= urlTime + 1500,
|
| + 'Slow service worker request should measure increased delay.');
|
| + frame.remove();
|
| + return service_worker_unregister_and_done(t, scope);
|
| + })
|
| +}, 'empty service worker fetch event included in performance timings');
|
| +
|
| </script>
|
|
|