blob: 1711c36c38577451de841d43be906412e492183c [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 conversion of Inspector's resource representation into HAR format.\n`);
await TestRunner.loadModule('network_test_runner');
await TestRunner.showPanel('network');
await TestRunner.NetworkAgent.setCacheDisabled(true);
NetworkTestRunner.makeSimpleXHR('GET', 'resources/initiator.css', false, sendBinaryRequest);
function sendBinaryRequest() {
NetworkTestRunner.makeSimpleXHR('GET', 'resources/binary.data', false, makeHAR);
}
async function makeHAR() {
var stream = new TestRunner.StringOutputStream(onSaved);
var progress = new Common.Progress();
await Network.HARWriter.write(stream, NetworkTestRunner.networkRequests(), progress);
progress.done();
stream.close();
}
function dumpContent(content) {
if (!content) {
TestRunner.addResult(' NOT FOUND');
return;
}
var propertyNames = Object.keys(content);
propertyNames.sort();
for (var prop of propertyNames)
TestRunner.addResult(` ${prop}: ` + JSON.stringify(content[prop]));
}
function onSaved(data) {
var har = JSON.parse(data);
TestRunner.addResult('initiator.css:');
dumpContent(findEntry(har, /\/initiator\.css$/).response.content);
TestRunner.addResult('');
TestRunner.addResult('binary.data:');
dumpContent(findEntry(har, /\/binary\.data$/).response.content);
TestRunner.completeTest();
}
function findEntry(har, regexp) {
var entry = har.log.entries.find(entry => regexp.test(entry.request.url));
if (entry)
return entry;
TestRunner.addResult('FAIL: can\'t find resource for ' + regexp);
return null;
}
})();