Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / src / tracing / tracks / drawing_container_perf_test.js
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.
4
5 'use strict';
6
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');
11
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);
16     req.send(null);
17     return req.responseText;
18   }
19
20   var model = undefined;
21
22   var drawingContainer;
23   var viewportDiv;
24
25   function timedDrawingContainerPerfTest(name, testFn, iterations) {
26
27     function setUpOnce() {
28       if (model !== undefined)
29         return;
30       var events = getSynchronous('/test_data/huge_trace.json');
31       model = new tracing.TraceModel();
32       model.importTraces([events], true);
33     }
34
35     function setUp() {
36       setUpOnce();
37       viewportDiv = document.createElement('div');
38
39       if (this.name === 'drawTrackContents_softwareCanvas') {
40         viewportDiv.width = '200px';
41         viewportDiv.style.width = '200px';
42       }
43
44       this.addHTMLOutput(viewportDiv);
45
46       var viewport = new tracing.TimelineViewport(viewportDiv);
47
48       drawingContainer = new tracing.tracks.DrawingContainer(viewport);
49       viewport.modelTrackContainer = drawingContainer;
50
51       var modelTrack = new tracing.tracks.TraceModelTrack(viewport);
52       drawingContainer.appendChild(modelTrack);
53
54       modelTrack.model = model;
55
56       viewportDiv.appendChild(drawingContainer);
57
58       // Size the canvas.
59       drawingContainer.updateCanvasSizeIfNeeded_();
60
61       // Size the viewport.
62       var w = drawingContainer.canvas.width;
63       var min = model.bounds.min;
64       var range = model.bounds.range;
65
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);
70     };
71
72     function tearDown() {
73       viewportDiv.innerText = '';
74       drawingContainer = undefined;
75     }
76
77     timedPerfTest(name, testFn, {
78       setUp: setUp,
79       tearDown: tearDown,
80       iterations: iterations
81     });
82   }
83
84   var n110100 = [1, 10, 100];
85   n110100.forEach(function(val) {
86     timedDrawingContainerPerfTest(
87         'drawTrackContents_softwareCanvas_' + val,
88         function() {
89           drawingContainer.drawTrackContents_();
90         }, val);
91   });
92 });