Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html b/third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..71b00000083cecda4957393ad17235b599284213 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html |
| @@ -0,0 +1,123 @@ |
| +<html> |
| +<head> |
| +<script src="../inspector-test.js"></script> |
| +<script src="service-workers-test.js"></script> |
| +<script> |
| + |
| +function initializeServiceWorker(script, scope) { |
| + return navigator.serviceWorker.register(script, {scope: scope}) |
| + .then(reg => waitForActivated(reg.installing)); |
| +} |
| + |
| +function waitForActivated(worker) { |
| + if (worker.state === 'activated') |
| + return Promise.resolve(); |
| + if (worker.state === 'redundant') |
| + return Promise.reject(new Error('The worker is redundant')); |
| + return new Promise(resolve => { |
| + worker.addEventListener('statechange', _ => { |
| + if (worker.state === 'activated') |
| + resolve(); |
| + }); |
| + }); |
| +} |
| + |
| +function loadIframe(url) |
| +{ |
| + var callback; |
| + var promise = new Promise((fulfill) => callback = fulfill); |
| + var frame = document.createElement('iframe'); |
| + frame.src = url; |
| + frame.onload = callback; |
| + document.body.appendChild(frame); |
| + return promise; |
| +} |
| + |
| +function test() |
| +{ |
| + var scriptURL = "http://127.0.0.1:8000/inspector/service-workers/resources/navigation-preload-worker.php"; |
| + var scope = "http://127.0.0.1:8000/inspector/service-workers/resources/navigation-preload-scope.php"; |
| + |
| + InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype, |
| + "navigationPreloadSent", |
| + navigationPreloadSent, |
| + true); |
| + InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype, |
| + "navigationPreloadResponseReceived", |
| + navigationPreloadResponseReceived, |
| + true); |
| + InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype, |
| + "navigationPreloadFailed", |
| + navigationPreloadFailed, |
| + true); |
| + InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype, |
| + "navigationPreloadFinished", |
| + navigationPreloadFinished, |
| + true); |
| + |
| + function navigationPreloadSent(requestId, url, timestamp, wallTime, initiator) |
| + { |
| + InspectorTest.addResult("navigationPreloadSent:"); |
| + InspectorTest.addResult(" url: " + url); |
| + InspectorTest.addResult(" initiator.type: " + initiator.type); |
| + } |
| + function navigationPreloadResponseReceived(requestId, timestamp, response) |
| + { |
| + InspectorTest.addResult("navigationPreloadResponseReceived:"); |
| + InspectorTest.addResult(" response.url: " + response.url); |
| + InspectorTest.addResult(" response.timing available: " + |
| + !!response.timing); |
| + InspectorTest.addResult(" response.requestHeaders available: " + |
| + !!response.requestHeaders); |
| + if (response.requestHeaders) { |
| + InspectorTest.addResult( |
| + " response.requestHeaders['Service-Worker-Navigation-Preload']: " + |
| + response.requestHeaders['Service-Worker-Navigation-Preload']); |
| + } |
| + |
| + } |
| + function navigationPreloadFailed(requestId, timestamp, errorMessage) |
| + { |
| + InspectorTest.addResult("navigationPreloadFailed:"); |
| + InspectorTest.addResult(" errorMessage: " + errorMessage); |
| + } |
| + function navigationPreloadFinished(requestId, timestamp) |
| + { |
| + InspectorTest.addResult("navigationPreloadFinished:"); |
| + } |
| + |
| + InspectorTest.callFunctionInPageAsync("initializeServiceWorker", |
| + [ scriptURL, scope ]) |
| + .then(_ => { |
| + InspectorTest.addResult("-----------------"); |
| + InspectorTest.addResult("Loading an iframe."); |
| + return InspectorTest.callFunctionInPageAsync("loadIframe", [ scope ]); |
| + }) |
| + .then(_ => { |
| + InspectorTest.addResult("The iframe loaded."); |
| + InspectorTest.addResult("-----------------"); |
| + InspectorTest.addResult("Loading another iframe."); |
| + return InspectorTest.callFunctionInPageAsync( |
| + "loadIframe", [ scope + "?EarlyReturn"]); |
| + }) |
| + .then(_ => { |
| + InspectorTest.addResult("The iframe loaded."); |
| + InspectorTest.addResult("-----------------"); |
| + InspectorTest.addResult("Loading another iframe."); |
| + return InspectorTest.callFunctionInPageAsync( |
| + "loadIframe", [ scope + "?RedirectError"]); |
| + }) |
| + .then(_ => { |
| + InspectorTest.addResult("The iframe loaded."); |
| + InspectorTest.addResult("-----------------"); |
| + InspectorTest.addResult("Done"); |
| + InspectorTest.completeTest(); |
| + }); |
| +} |
| + |
| +</script> |
| +</head> |
| +<body onload="runTest()"> |
| +<p>Tests the navigation request related events are availale in the DevTools.</p> |
|
falken
2017/01/17 14:38:36
nit: available
horo
2017/01/18 14:25:02
Done.
|
| +</body> |
| +</html> |