object_instance_track_test.html revision 4a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724
1<!DOCTYPE html> 2<!-- 3Copyright (c) 2013 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/object_collection.html"> 11<link rel="import" href="/tracing/model/selection_state.html"> 12<link rel="import" href="/tracing/ui/timeline_viewport.html"> 13<link rel="import" href="/tracing/ui/tracks/drawing_container.html"> 14<link rel="import" href="/tracing/ui/tracks/object_instance_track.html"> 15 16<script> 17'use strict'; 18 19tr.b.unittest.testSuite(function() { // @suppress longLineCheck 20 var EventSet = tr.model.EventSet; 21 var ObjectInstanceTrack = tr.ui.tracks.ObjectInstanceTrack; 22 var Viewport = tr.ui.TimelineViewport; 23 24 var createObjects = function() { 25 var objects = new tr.model.ObjectCollection({}); 26 objects.idWasCreated('0x1000', 'tr.e.cc', 'Frame', 10); 27 objects.addSnapshot('0x1000', 'tr.e.cc', 'Frame', 10, 'snapshot-1'); 28 objects.addSnapshot('0x1000', 'tr.e.cc', 'Frame', 25, 'snapshot-2'); 29 objects.addSnapshot('0x1000', 'tr.e.cc', 'Frame', 40, 'snapshot-3'); 30 objects.idWasDeleted('0x1000', 'tr.e.cc', 'Frame', 45); 31 32 objects.idWasCreated('0x1001', 'skia', 'Picture', 20); 33 objects.addSnapshot('0x1001', 'skia', 'Picture', 20, 'snapshot-1'); 34 objects.idWasDeleted('0x1001', 'skia', 'Picture', 25); 35 return objects; 36 }; 37 38 test('instantiate', function() { 39 var objects = createObjects(); 40 var frames = objects.getAllInstancesByTypeName()['Frame']; 41 frames[0].snapshots[1].selectionState = 42 tr.model.SelectionState.SELECTED; 43 44 var div = document.createElement('div'); 45 46 var viewport = new Viewport(div); 47 var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport); 48 div.appendChild(drawingContainer); 49 50 var track = ObjectInstanceTrack(viewport); 51 drawingContainer.appendChild(track); 52 53 this.addHTMLOutput(div); 54 drawingContainer.invalidate(); 55 56 track.heading = 'testBasic'; 57 track.objectInstances = frames; 58 var dt = new tr.ui.TimelineDisplayTransform(); 59 dt.xSetWorldBounds(0, 50, track.clientWidth); 60 track.viewport.setDisplayTransformImmediately(dt); 61 }); 62 63 test('selectionHitTestingWithThreadTrack', function() { 64 var objects = createObjects(); 65 var frames = objects.getAllInstancesByTypeName()['Frame']; 66 67 var track = ObjectInstanceTrack(new Viewport()); 68 track.objectInstances = frames; 69 70 // Hit outside range 71 var selection = new EventSet(); 72 track.addIntersectingEventsInRangeToSelectionInWorldSpace( 73 8, 8.1, 0.1, selection); 74 assert.equal(selection.length, 0); 75 76 // Hit the first snapshot, via pixel-nearness. 77 selection = new EventSet(); 78 track.addIntersectingEventsInRangeToSelectionInWorldSpace( 79 9.98, 9.99, 0.1, selection); 80 assert.equal(selection.length, 1); 81 assert.instanceOf(selection[0], tr.model.ObjectSnapshot); 82 83 // Hit the instance, between the 1st and 2nd snapshots 84 selection = new EventSet(); 85 track.addIntersectingEventsInRangeToSelectionInWorldSpace( 86 20, 20.1, 0.1, selection); 87 assert.equal(selection.length, 1); 88 assert.instanceOf(selection[0], tr.model.ObjectInstance); 89 }); 90 91 test('addEventNearToProvidedEventToSelection', function() { 92 var objects = createObjects(); 93 var frames = objects.getAllInstancesByTypeName()['Frame']; 94 95 var track = ObjectInstanceTrack(new Viewport()); 96 track.objectInstances = frames; 97 98 var instance = new tr.model.ObjectInstance( 99 {}, '0x1000', 'cat', 'n', 10); 100 101 assert.doesNotThrow(function() { 102 track.addEventNearToProvidedEventToSelection(instance, 0, undefined); 103 }); 104 }); 105}); 106</script> 107 108