Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / tracks / drawing_container_perf_test.html
1 <!DOCTYPE html>
2 <!--
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.
6 -->
7
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">
12
13 <script>
14 'use strict';
15
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');
23     req.send(null);
24     return req.responseText;
25   }
26
27   var model = undefined;
28
29   var drawingContainer;
30   var viewportDiv;
31
32   function timedDrawingContainerPerfTest(name, testFn, iterations) {
33
34     function setUpOnce() {
35       if (model !== undefined)
36         return;
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);
41     }
42
43     function setUp() {
44       setUpOnce();
45       viewportDiv = document.createElement('div');
46
47       if (this.name === 'draw_softwareCanvas') {
48         viewportDiv.width = '200px';
49         viewportDiv.style.width = '200px';
50       }
51
52       this.addHTMLOutput(viewportDiv);
53
54       var viewport = new tracing.TimelineViewport(viewportDiv);
55
56       drawingContainer = new tracing.tracks.DrawingContainer(viewport);
57       viewport.modelTrackContainer = drawingContainer;
58
59       var modelTrack = new tracing.tracks.TraceModelTrack(viewport);
60       drawingContainer.appendChild(modelTrack);
61
62       modelTrack.model = model;
63
64       viewportDiv.appendChild(drawingContainer);
65
66       // Size the canvas.
67       drawingContainer.updateCanvasSizeIfNeeded_();
68
69       // Size the viewport.
70       var w = drawingContainer.canvas.width;
71       var min = model.bounds.min;
72       var range = model.bounds.range;
73
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);
78     };
79
80     function tearDown() {
81       viewportDiv.innerText = '';
82       drawingContainer = undefined;
83     }
84
85     timedPerfTest(name, testFn, {
86       setUp: setUp,
87       tearDown: tearDown,
88       iterations: iterations
89     });
90   }
91
92   var n110100 = [1, 10, 100];
93   n110100.forEach(function(val) {
94     timedDrawingContainerPerfTest(
95         'draw_softwareCanvas_' + val,
96         function() {
97           drawingContainer.draw_();
98         }, val);
99   });
100 });
101 </script>
102