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

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: reuse existing instrumentation for network 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..0805b50b80f06de50e61b30708ff415c0c773d52
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/service-workers/service-workers-navigation-preload.html
@@ -0,0 +1,136 @@
+<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 = {};
+
+ InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype,
pfeldman 2017/01/20 20:41:46 Could you instead listen to the NetworkManager eve
horo 2017/01/23 08:05:32 Done.
+ "requestWillBeSent",
+ requestWillBeSent,
+ true);
+ InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype,
+ "responseReceived",
+ responseReceived,
+ true);
+ InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype,
+ "loadingFailed",
+ loadingFailed,
+ true);
+ InspectorTest.addSniffer(SDK.NetworkDispatcher.prototype,
+ "loadingFinished",
+ loadingFinished,
+ true);
+
+ function requestWillBeSent(requestId, frameId, loaderId, documentURL, request, timestamp, wallTime, initiator, redirectResponse, type)
+ {
+ if (initiator.type != "preload") {
+ return;
+ }
+ preloadRequestIDs[requestId] = true;
+ InspectorTest.addResult("requestWillBeSent:");
+ InspectorTest.addResult(" url: " + request.url);
+ InspectorTest.addResult(" initiator.type: " + initiator.type);
+ }
+ function responseReceived(requestId, frameId, loaderId, timestamp, type, response)
+ {
+ if (!preloadRequestIDs[requestId]) {
+ return;
+ }
+ InspectorTest.addResult("responseReceived:");
+ 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 loadingFailed(requestId, timestamp, type, errorText, canceled, blockedReason)
+ {
+ if (!preloadRequestIDs[requestId]) {
+ return;
+ }
+ InspectorTest.addResult("loadingFailed:");
+ InspectorTest.addResult(" errorText: " + errorText);
+ }
+ function loadingFinished(requestId, timestamp, encodedDataLength)
+ {
+ if (!preloadRequestIDs[requestId]) {
+ return;
+ }
+ InspectorTest.addResult("loadingFinished:");
+ }
+ 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