Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html

Issue 2620463002: Show service worker navigation preload requests in DevTools Network tab (Closed)
Patch Set: fix crash Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698