blob: 36175a9a142e157c7194302b594331ae20ba58d8 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests WebInspector extension API returns valid data for redirected resources\n`);
await TestRunner.loadModule('extensions_test_runner');
await TestRunner.navigatePromise('resources/extensions-network-redirect.html');
ExtensionsTestRunner.runExtensionTests([
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);
},
]);
})();