1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 tvcm.require('tracing.importer.trace_event_importer');
8 tvcm.require('tracing.timeline_view');
9 tvcm.require('tracing.timeline_viewport');
10 tvcm.require('tracing.trace_model');
12 tvcm.unittest.testSuite('tracing.tracks.drawing_container_perf_test', function() { // @suppress longLineCheck
13 function getSynchronous(url) {
14 var req = new XMLHttpRequest();
15 req.open('GET', url, false);
17 return req.responseText;
20 var model = undefined;
25 function timedDrawingContainerPerfTest(name, testFn, iterations) {
27 function setUpOnce() {
28 if (model !== undefined)
30 var events = getSynchronous('/test_data/huge_trace.json');
31 model = new tracing.TraceModel();
32 model.importTraces([events], true);
37 viewportDiv = document.createElement('div');
39 if (this.name === 'drawTrackContents_softwareCanvas') {
40 viewportDiv.width = '200px';
41 viewportDiv.style.width = '200px';
44 this.addHTMLOutput(viewportDiv);
46 var viewport = new tracing.TimelineViewport(viewportDiv);
48 drawingContainer = new tracing.tracks.DrawingContainer(viewport);
49 viewport.modelTrackContainer = drawingContainer;
51 var modelTrack = new tracing.tracks.TraceModelTrack(viewport);
52 drawingContainer.appendChild(modelTrack);
54 modelTrack.model = model;
56 viewportDiv.appendChild(drawingContainer);
59 drawingContainer.updateCanvasSizeIfNeeded_();
62 var w = drawingContainer.canvas.width;
63 var min = model.bounds.min;
64 var range = model.bounds.range;
66 var boost = range * 0.15;
67 var dt = new tracing.TimelineDisplayTransform();
68 dt.xSetWorldBounds(min - boost, min + range + boost, w);
69 modelTrack.viewport.setDisplayTransformImmediately(dt);
73 viewportDiv.innerText = '';
74 drawingContainer = undefined;
77 timedPerfTest(name, testFn, {
80 iterations: iterations
84 var n110100 = [1, 10, 100];
85 n110100.forEach(function(val) {
86 timedDrawingContainerPerfTest(
87 'drawTrackContents_softwareCanvas_' + val,
89 drawingContainer.drawTrackContents_();