| 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..89b9dba5f73878bbd4005398f417da4a06964dd1
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html
|
| @@ -0,0 +1,130 @@
|
| +<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";
|
| + var preloadRequestIDs = {};
|
| +
|
| + function onRequestStarted(event)
|
| + {
|
| + var request = event.data;
|
| + if (request.initiator().type != "preload") {
|
| + return;
|
| + }
|
| + preloadRequestIDs[request.requestId()] = true;
|
| + InspectorTest.addResult("onRequestStarted:");
|
| + InspectorTest.addResult(" url: " + request.url());
|
| + }
|
| +
|
| + function onResponseReceived(event)
|
| + {
|
| + var request = event.data;
|
| + if (!preloadRequestIDs[request.requestId()]) {
|
| + return;
|
| + }
|
| + InspectorTest.addResult("onResponseReceived:");
|
| + InspectorTest.addResult(" timing available: " + !!request.timing);
|
| + request.requestHeaders().map(header => {
|
| + if (header.name == 'Service-Worker-Navigation-Preload') {
|
| + InspectorTest.addResult(
|
| + " requestHeaders['Service-Worker-Navigation-Preload']: " +
|
| + header.value);
|
| + }
|
| + })
|
| + }
|
| + function onRequestFinished(event)
|
| + {
|
| + var request = event.data;
|
| + if (!preloadRequestIDs[request.requestId()]) {
|
| + return;
|
| + }
|
| + InspectorTest.addResult("onRequestFinished:");
|
| + if (request.localizedFailDescription) {
|
| + InspectorTest.addResult(" localizedFailDescription: " +
|
| + request.localizedFailDescription);
|
| + }
|
| + }
|
| +
|
| + SDK.targetManager.addModelListener(
|
| + SDK.NetworkManager,
|
| + SDK.NetworkManager.Events.RequestStarted,
|
| + onRequestStarted);
|
| + SDK.targetManager.addModelListener(
|
| + SDK.NetworkManager,
|
| + SDK.NetworkManager.Events.ResponseReceived,
|
| + onResponseReceived);
|
| + SDK.targetManager.addModelListener(
|
| + SDK.NetworkManager,
|
| + SDK.NetworkManager.Events.RequestFinished,
|
| + onRequestFinished);
|
| +
|
| +
|
| + 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 + "?BrokenChunked"]);
|
| + })
|
| + .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 available in the DevTools</p>
|
| +</body>
|
| +</html>
|
|
|