blob: 8163a2b8ca63ec7b82c7b45a9568e5886cc24031 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 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.
-->
<link rel="import" href="/core/trace_model/trace_model.html">
<link rel="import" href="/extras/full_config.html">
<script>
'use strict';
tv.b.unittest.testSuite(function() { // @suppress longLineCheck
function getSynchronous(url) {
var req = new XMLHttpRequest();
req.open('GET', url, false);
// Without the mime type specified like this, the file's bytes are not
// retrieved correctly.
req.overrideMimeType('text/plain; charset=x-user-defined');
req.send(null);
return req.responseText;
}
var model = undefined;
var drawingContainer;
var viewportDiv;
function timedDrawingContainerPerfTest(name, testFn, iterations) {
function setUpOnce() {
if (model !== undefined)
return;
var fileUrl = '/test_data/thread_time_visualisation.json.gz';
var events = getSynchronous(fileUrl);
model = new tv.c.TraceModel();
model.importTraces([events], true);
}
function setUp() {
setUpOnce();
viewportDiv = document.createElement('div');
var viewport = new tv.c.TimelineViewport(viewportDiv);
drawingContainer = new tv.c.tracks.DrawingContainer(viewport);
viewport.modelTrackContainer = drawingContainer;
var modelTrack = new tv.c.tracks.TraceModelTrack(viewport);
drawingContainer.appendChild(modelTrack);
modelTrack.model = model;
viewportDiv.appendChild(drawingContainer);
this.addHTMLOutput(viewportDiv);
// Size the canvas.
drawingContainer.updateCanvasSizeIfNeeded_();
// Size the viewport.
var w = drawingContainer.canvas.width;
var min = model.bounds.min;
var range = model.bounds.range;
var boost = range * 0.15;
var dt = new tv.c.TimelineDisplayTransform();
dt.xSetWorldBounds(min - boost, min + range + boost, w);
modelTrack.viewport.setDisplayTransformImmediately(dt);
};
function tearDown() {
viewportDiv.innerText = '';
drawingContainer = undefined;
}
timedPerfTest(name, testFn, {
setUp: setUp,
tearDown: tearDown,
iterations: iterations
});
}
var n110100 = [1, 10, 100];
n110100.forEach(function(val) {
timedDrawingContainerPerfTest(
'draw_softwareCanvas_' + val,
function() {
drawingContainer.draw_();
}, val);
});
});
</script>