blob: f07e697627eb6be76d9bcc66424726d70480ff77 [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/timeline-test.js"></script>
<script>
function test()
{
function runTestWithDataAndCheck(input, expectedOutput)
{
WebInspector.showPanel("timeline");
var model = new WebInspector.TimelineModel();
function createFileReader(file, delegate)
{
return new InspectorTest.FakeFileReader(input, delegate, model.saveToFile.bind(model));
}
function createFileWriter(fileName, callback)
{
callback(new InspectorTest.StringOutputStream(checkSaveData));
}
function checkSaveData(output)
{
var saveData = JSON.parse(output);
saveData.shift(); // strip version info
expectedOutput.shift();
InspectorTest.assertEquals(JSON.stringify(expectedOutput), JSON.stringify(saveData), "saved data is not equal to restored");
InspectorTest.addResult("passed");
}
InspectorTest.override(model, "_createFileReader", createFileReader);
InspectorTest.override(model, "_createFileWriter", createFileWriter);
model.loadFromFile({}, new WebInspector.Progress());
}
InspectorTest.runTestSuite([
function testNormal(next)
{
var data = ["Version",
{"startTime":1310749854316.8408,"data":{"requestId":43,"url":"http://www.webkit.org/","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":1819936,"totalHeapSize":7629120},
{"startTime":1310749855118.9329,"data":{"requestId":43,"statusCode":200,"mimeType":"text/html"},"children":[],"endTime":1310749855118.968,"type":"ResourceReceiveResponse","usedHeapSize":1819936,"totalHeapSize":7629120},
{"startTime":1310749855136.245,"data":{"requestId":44,"url":"http://www.webkit.org/css/main.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855136.655,"data":{"requestId":45,"url":"http://www.webkit.org/css/green.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855137.023,"data":{"requestId":46,"url":"http://www.webkit.org/css/blue.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855137.342,"data":{"requestId":47,"url":"http://www.webkit.org/css/yellow.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855137.656,"data":{"requestId":48,"url":"http://www.webkit.org/css/pink.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855137.989,"data":{"requestId":49,"url":"http://www.webkit.org/css/purple.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120},
{"startTime":1310749855138.308,"data":{"requestId":50,"url":"http://www.webkit.org/css/gray.css","requestMethod":"GET"},"type":"ResourceSendRequest","usedHeapSize":2367192,"totalHeapSize":7629120}
];
var input = JSON.stringify(data);
runTestWithDataAndCheck(input, data);
next();
},
function testIncompatible(next)
{
var data = ["Version",
{"startTime":1310749854316.8408,"data":{"requestId":43,"url":"http://www.webkit.org/","requestMethod":"GET"},"type":"UnknownRecordType","u\"s}e}dHeapSize\\":1819936,"totalHeapSize":7629120}
];
var input = JSON.stringify(data);
runTestWithDataAndCheck(input, data);
next();
},
function testMalformed(next)
{
var data = ["Version"];
// At least 1 record is parsed in first chunk.
var input = '["Version",'
+'{"startTime":1310749854316.8408,"data":{"requestId":43},"type":"UnknownRecordType"},'
+'{"startTime":1310749854316.8508,"data":{"requestId":43},"type":"UnknownRecordType"},'
+'{"startTime":1310749854316.8608,"data":{"requestId":43},"type":"UnknownRecordType"},'
+'{"startTime":1310749854316.8708,"data":{"requestId":43_MALFORMED_JSON_},"type":"UnknownRecordType"}]';
runTestWithDataAndCheck(input, data);
next();
}
]);
}
</script>
</head>
<body onload="runTest()">
<p>
Tests the Timeline save/load functionality.
</p>
<p>
Also tests save/load of unknown (incompatible) record types. <a href="https://bugs.webkit.org/show_bug.cgi?id=91714">(Bug 91714)</a>
</p>
</body>
</html>