| <html> |
| <head> |
| <script src="inspector-test.js"></script> |
| <script src="extensions-network-test.js"></script> |
| <script src="extensions-test.js"></script> |
| <script type="text/javascript"> |
| |
| function extension_doRequest(force, callback) |
| { |
| function callbackWrapper(request) |
| { |
| var lastCallback = !request || /\?redirected=true$/.test(request.request.url); |
| if (lastCallback) |
| webInspector.network.onRequestFinished.removeListener(callbackWrapper); |
| callback(request, lastCallback); |
| } |
| webInspector.network.onRequestFinished.addListener(callbackWrapper); |
| webInspector.inspectedWindow.eval("doRequest(" + force + ")", function(result) { |
| if (result) |
| callbackWrapper(null); |
| }); |
| } |
| |
| function extension_testGetRedirectRequestContent(nextTest) |
| { |
| function onRequestFinished(request, lastCallback) |
| { |
| if (!lastCallback) |
| return; |
| extension_getRequestByUrl([ /redirect-methods-result.php\?status=302$/ ], function(request) { |
| request.getContent(onContent); |
| }); |
| } |
| function onContent(content, encoding) |
| { |
| output("content: " + content + ", encoding: " + encoding); |
| nextTest(); |
| } |
| extension_doRequest(false, onRequestFinished); |
| } |
| |
| function extension_testRedirectRequestInHAR(nextTest) |
| { |
| function onRequestFinished(resource, lastCallback) |
| { |
| if (lastCallback) |
| webInspector.network.getHAR(onHAR); |
| } |
| function onHAR(har) |
| { |
| var entries = har.entries; |
| var urls = []; |
| for (var i = 0; i < entries.length; ++i) { |
| var url = entries[i].request.url; |
| // Workaround for GTK DRT that requests favicon.ico along with the page. |
| if (!/\/favicon\.ico$/.test(url)) |
| urls.push(url); |
| } |
| urls.sort(); |
| output("Requests in HAR:\n" + urls.join("\n")); |
| nextTest(); |
| } |
| extension_doRequest(false, onRequestFinished); |
| } |
| |
| function extension_testRedirectRequestFinished(nextTest) |
| { |
| function onRequestFinished(request, lastCallback) |
| { |
| output("Finished request: " + request.request.url); |
| if (lastCallback) |
| nextTest(); |
| } |
| extension_doRequest(true, onRequestFinished); |
| } |
| |
| var requestDone = false; |
| |
| function doRequest(force) |
| { |
| // Only do request once per test suite, to make tests independent on each other. |
| // Returns true iff request is alredy done (so the caller shouldn't wait for onFinished). |
| if (requestDone && !force) |
| return true; |
| requestDone = true; |
| // We can't use XHR here -- the content for XHRs is pushed from back-end. |
| var iframe = document.createElement("iframe"); |
| iframe.src = "/loading/resources/redirect-methods-result.php?status=302"; |
| document.body.appendChild(iframe); |
| return false; |
| } |
| |
| var test = function() |
| { |
| InspectorTest.reloadPage(InspectorTest.runExtensionTests); |
| } |
| |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests WebInspector extension API returns valid data for redirected resources</p> |
| </body> |
| </html> |