blob: d4edcac68c993433b6a9a0bd7a7416d2cd4a3fb7 [file] [log] [blame]
<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>