frame_track_test.html revision cef7893435aa41160dd1255c43cb8498279738cc
1<!DOCTYPE html> 2<!-- 3Copyright (c) 2015 The Chromium Authors. All rights reserved. 4Use of this source code is governed by a BSD-style license that can be 5found in the LICENSE file. 6--> 7 8<link rel="import" href="/tracing/core/test_utils.html"> 9<link rel="import" href="/tracing/model/event_set.html"> 10<link rel="import" href="/tracing/model/frame.html"> 11<link rel="import" href="/tracing/ui/timeline_viewport.html"> 12<link rel="import" href="/tracing/ui/tracks/drawing_container.html"> 13<link rel="import" href="/tracing/ui/tracks/frame_track.html"> 14 15<script> 16'use strict'; 17 18tr.b.unittest.testSuite(function() { 19 var Frame = tr.model.Frame; 20 var FrameTrack = tr.ui.tracks.FrameTrack; 21 var EventSet = tr.model.EventSet; 22 var SelectionState = tr.model.SelectionState; 23 var Viewport = tr.ui.TimelineViewport; 24 25 var createFrames = function() { 26 var frames = undefined; 27 var model = tr.c.TestUtils.newModel(function(model) { 28 var process = model.getOrCreateProcess(1); 29 var thread = process.getOrCreateThread(1); 30 for (var i = 1; i < 5; i++) { 31 var slice = tr.c.TestUtils.newSliceEx( 32 {title: 'work for frame', start: i * 20, duration: 10}); 33 thread.sliceGroup.pushSlice(slice); 34 var events = [slice]; 35 var threadTimeRanges = 36 [{thread: thread, start: slice.start, end: slice.end}]; 37 process.frames.push(new Frame(events, threadTimeRanges)); 38 } 39 frames = process.frames; 40 }); 41 return frames; 42 }; 43 44 test('instantiate', function() { 45 var frames = createFrames(); 46 frames[1].selectionState = SelectionState.SELECTED; 47 48 var div = document.createElement('div'); 49 var viewport = new Viewport(div); 50 var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport); 51 div.appendChild(drawingContainer); 52 53 var track = FrameTrack(viewport); 54 drawingContainer.appendChild(track); 55 56 this.addHTMLOutput(div); 57 drawingContainer.invalidate(); 58 59 track.frames = frames; 60 var dt = new tr.ui.TimelineDisplayTransform(); 61 dt.xSetWorldBounds(0, 50, track.clientWidth); 62 track.viewport.setDisplayTransformImmediately(dt); 63 64 assert.equal(track.items[0].start, 20); 65 }); 66 67 test('modelMapping', function() { 68 var frames = createFrames(); 69 70 var div = document.createElement('div'); 71 var viewport = new Viewport(div); 72 var track = FrameTrack(viewport); 73 track.frames = frames; 74 75 var a0 = track.items[0].modelItem; 76 assert.equal(a0, frames[0]); 77 }); 78 79 test('selectionMapping', function() { 80 var frames = createFrames(); 81 82 var div = document.createElement('div'); 83 var viewport = new Viewport(div); 84 var track = FrameTrack(viewport); 85 track.frames = frames; 86 87 var selection = new EventSet(); 88 track.items[0].addToSelection(selection); 89 90 // select both frame, but not its component slice 91 assert.equal(selection.length, 1); 92 93 var frameCount = 0; 94 var eventCount = 0; 95 selection.forEach(function(event) { 96 if (event instanceof Frame) { 97 assert.equal(event, frames[0]); 98 frameCount++; 99 } else 100 eventCount++; 101 }); 102 assert.equal(frameCount, 1); 103 assert.equal(eventCount, 0); 104 }); 105}); 106</script> 107