3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/importer.html">
9 <link rel="import" href="/tracing/timeline_view.html">
10 <link rel="import" href="/tracing/timeline_viewport.html">
11 <link rel="import" href="/tracing/trace_model.html">
16 tvcm.unittest.testSuite(function() { // @suppress longLineCheck
17 function getSynchronous(url) {
18 var req = new XMLHttpRequest();
19 req.open('GET', url, false);
20 // Without the mime type specified like this, the file's bytes are not
21 // retrieved correctly.
22 req.overrideMimeType('text/plain; charset=x-user-defined');
24 return req.responseText;
27 var model = undefined;
32 function timedDrawingContainerPerfTest(name, testFn, iterations) {
34 function setUpOnce() {
35 if (model !== undefined)
37 var fileUrl = '/test_data/thread_time_visualisation.json.gz';
38 var events = getSynchronous(fileUrl);
39 model = new tracing.TraceModel();
40 model.importTraces([events], true);
45 viewportDiv = document.createElement('div');
47 if (this.name === 'draw_softwareCanvas') {
48 viewportDiv.width = '200px';
49 viewportDiv.style.width = '200px';
52 this.addHTMLOutput(viewportDiv);
54 var viewport = new tracing.TimelineViewport(viewportDiv);
56 drawingContainer = new tracing.tracks.DrawingContainer(viewport);
57 viewport.modelTrackContainer = drawingContainer;
59 var modelTrack = new tracing.tracks.TraceModelTrack(viewport);
60 drawingContainer.appendChild(modelTrack);
62 modelTrack.model = model;
64 viewportDiv.appendChild(drawingContainer);
67 drawingContainer.updateCanvasSizeIfNeeded_();
70 var w = drawingContainer.canvas.width;
71 var min = model.bounds.min;
72 var range = model.bounds.range;
74 var boost = range * 0.15;
75 var dt = new tracing.TimelineDisplayTransform();
76 dt.xSetWorldBounds(min - boost, min + range + boost, w);
77 modelTrack.viewport.setDisplayTransformImmediately(dt);
81 viewportDiv.innerText = '';
82 drawingContainer = undefined;
85 timedPerfTest(name, testFn, {
88 iterations: iterations
92 var n110100 = [1, 10, 100];
93 n110100.forEach(function(val) {
94 timedDrawingContainerPerfTest(
95 'draw_softwareCanvas_' + val,
97 drawingContainer.draw_();