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.
8 <link rel="import" href="/tracing/test_utils.html">
9 <link rel="import" href="/tracing/selection.html">
10 <link rel="import" href="/tracing/trace_model/event.html">
11 <link rel="import" href="/tracing/trace_model/object_collection.html">
12 <link rel="import" href="/tracing/timeline_viewport.html">
13 <link rel="import" href="/tracing/tracks/drawing_container.html">
14 <link rel="import" href="/tracing/tracks/object_instance_track.html">
19 tvcm.unittest.testSuite(function() { // @suppress longLineCheck
20 var Selection = tracing.Selection;
21 var ObjectInstanceTrack = tracing.tracks.ObjectInstanceTrack;
22 var Viewport = tracing.TimelineViewport;
24 var createObjects = function() {
25 var objects = new tracing.trace_model.ObjectCollection({});
26 objects.idWasCreated('0x1000', 'cc', 'Frame', 10);
27 objects.addSnapshot('0x1000', 'cc', 'Frame', 10, 'snapshot-1');
28 objects.addSnapshot('0x1000', 'cc', 'Frame', 25, 'snapshot-2');
29 objects.addSnapshot('0x1000', 'cc', 'Frame', 40, 'snapshot-3');
30 objects.idWasDeleted('0x1000', 'cc', 'Frame', 45);
32 objects.idWasCreated('0x1001', 'skia', 'Picture', 20);
33 objects.addSnapshot('0x1001', 'skia', 'Picture', 20, 'snapshot-1');
34 objects.idWasDeleted('0x1001', 'skia', 'Picture', 25);
38 test('instantiate', function() {
39 var objects = createObjects();
40 var frames = objects.getAllInstancesByTypeName()['Frame'];
41 frames[0].snapshots[1].selectionState =
42 tracing.trace_model.SelectionState.SELECTED;
44 var div = document.createElement('div');
45 this.addHTMLOutput(div);
47 var viewport = new Viewport(div);
48 var drawingContainer = new tracing.tracks.DrawingContainer(viewport);
49 div.appendChild(drawingContainer);
51 var track = ObjectInstanceTrack(viewport);
52 drawingContainer.invalidate();
53 drawingContainer.appendChild(track);
55 track.heading = 'testBasic';
56 track.objectInstances = frames;
57 var dt = new tracing.TimelineDisplayTransform();
58 dt.xSetWorldBounds(0, 50, track.clientWidth);
59 track.viewport.setDisplayTransformImmediately(dt);
62 test('selectionHitTestingWithThreadTrack', function() {
63 var objects = createObjects();
64 var frames = objects.getAllInstancesByTypeName()['Frame'];
66 var track = ObjectInstanceTrack(new Viewport());
67 track.objectInstances = frames;
70 var selection = new Selection();
71 track.addIntersectingItemsInRangeToSelectionInWorldSpace(
72 8, 8.1, 0.1, selection);
73 assertEquals(0, selection.length);
75 // Hit the first snapshot, via pixel-nearness.
76 selection = new Selection();
77 track.addIntersectingItemsInRangeToSelectionInWorldSpace(
78 9.98, 9.99, 0.1, selection);
79 assertEquals(1, selection.length);
80 assertTrue(selection[0] instanceof tracing.trace_model.ObjectSnapshot);
82 // Hit the instance, between the 1st and 2nd snapshots
83 selection = new Selection();
84 track.addIntersectingItemsInRangeToSelectionInWorldSpace(
85 20, 20.1, 0.1, selection);
86 assertEquals(1, selection.length);
87 assertTrue(selection[0] instanceof tracing.trace_model.ObjectInstance);
90 test('addItemNearToProvidedEventToSelection', function() {
91 var objects = createObjects();
92 var frames = objects.getAllInstancesByTypeName()['Frame'];
94 var track = ObjectInstanceTrack(new Viewport());
95 track.objectInstances = frames;
97 var instance = new tracing.trace_model.ObjectInstance(
98 {}, '0x1000', 'cat', 'n', 10);
100 assertDoesNotThrow(function() {
101 track.addItemNearToProvidedEventToSelection(instance, 0, undefined);