blob: 453a479b5ec3369210e8499606cf2cac28a1f10e [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 resources initiator for images initiated by IMG tag, static CSS, CSS class added from JavaScript and XHR.\n`);
await TestRunner.loadModule('network_test_runner');
await TestRunner.loadModule('console_test_runner');
await TestRunner.showPanel('network');
await TestRunner.evaluateInPagePromise(`
function loadData()
{
var iframe = document.createElement("iframe");
iframe.src = "resources/network-initiator-frame.html";
document.body.appendChild(iframe);
}
`);
step2();
function step2() {
ConsoleTestRunner.addConsoleSniffer(step3, true);
TestRunner.evaluateInPage('loadData()');
}
var expectedDoneMessages = 2;
async function step3() {
let messages = await ConsoleTestRunner.dumpConsoleMessagesIntoArray();
let doneMessagesCount = 0;
for (let i = 0; i < messages.length; i++) {
if (messages[i].endsWith("Done.")) {
doneMessagesCount++;
}
}
if (doneMessagesCount < expectedDoneMessages)
return;
function dumpInitiator(url) {
var matching_requests = NetworkTestRunner.findRequestsByURLPattern(new RegExp(url.replace('.', '\\.')));
if (matching_requests.length === 0) {
TestRunner.addResult(url + ' NOT FOUND');
return;
}
var request = matching_requests[0];
var initiator = request.initiator();
TestRunner.addResult(request.url() + ': ' + initiator.type);
if (initiator.url)
TestRunner.addResult(' ' + initiator.url + ' ' + initiator.lineNumber + ' ' + initiator.columnNumber);
if (initiator.stack) {
var stackTrace = initiator.stack;
for (var i = 0; i < stackTrace.callFrames.length; ++i) {
var frame = stackTrace.callFrames[i];
if (frame.lineNumber) {
TestRunner.addResult(' ' + frame.functionName + ' ' + frame.url + ' ' + frame.lineNumber + ' ' + frame.columnNumber);
break;
}
}
}
}
dumpInitiator('initiator.css');
dumpInitiator('size=100');
dumpInitiator('size=200');
dumpInitiator('size=300');
dumpInitiator('size=400');
dumpInitiator('style.css');
dumpInitiator('empty.html');
dumpInitiator('module1.js');
dumpInitiator('module2.js');
dumpInitiator('example.ttf');
TestRunner.completeTest();
}
})();