| <!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> |
| |