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/trace_model/object_collection.html">
14 tvcm.unittest.testSuite(function() { // @suppress longLineCheck
15 var TestObjectInstance = function(parent, id, category, name, creationTs) {
16 tracing.trace_model.ObjectInstance.call(
17 this, parent, id, category, name, creationTs);
20 TestObjectInstance.prototype = {
21 __proto__: tracing.trace_model.ObjectInstance.prototype
24 test('objectInstanceSubtype', function() {
25 // Register that TestObjects are bound to TestObjectInstance.
26 tracing.trace_model.ObjectInstance.register(
27 'TestObject', TestObjectInstance);
29 var collection = new tracing.trace_model.ObjectCollection({ });
30 collection.idWasCreated(
31 '0x1000', 'cc', 'Frame', 10);
32 collection.idWasDeleted(
33 '0x1000', 'cc', 'Frame', 15);
34 collection.idWasCreated(
35 '0x1000', 'skia', 'TestObject', 20);
36 collection.idWasDeleted(
37 '0x1000', 'skia', 'TestObject', 25);
39 var testFrame = collection.getObjectInstanceAt('0x1000', 10);
40 assertTrue(testFrame instanceof tracing.trace_model.ObjectInstance);
41 assertFalse(testFrame instanceof TestObjectInstance);
43 var testObject = collection.getObjectInstanceAt('0x1000', 20);
44 assertTrue(testObject instanceof tracing.trace_model.ObjectInstance);
45 assertTrue(testObject instanceof TestObjectInstance);
47 tracing.trace_model.ObjectInstance.unregister('TestObject');
51 test('twoSnapshots', function() {
52 var collection = new tracing.trace_model.ObjectCollection({});
53 collection.idWasCreated(
54 '0x1000', 'cat', 'Frame', 10);
55 collection.addSnapshot(
56 '0x1000', 'cat', 'Frame', 10, {foo: 1});
57 collection.addSnapshot(
58 '0x1000', 'cat', 'Frame', 20, {foo: 2});
60 collection.updateBounds();
61 assertEquals(10, collection.bounds.min);
62 assertEquals(20, collection.bounds.max);
64 var s0 = collection.getSnapshotAt('0x1000', 1);
67 var s1 = collection.getSnapshotAt('0x1000', 10);
68 assertEquals(s1.args.foo, 1);
70 var s2 = collection.getSnapshotAt('0x1000', 15);
71 assertEquals(s2.args.foo, 1);
74 var s3 = collection.getSnapshotAt('0x1000', 20);
75 assertEquals(s3.args.foo, 2);
76 assertEquals(s1.object, s3.object);
78 var s4 = collection.getSnapshotAt('0x1000', 25);
82 test('twoObjectsSharingOneID', function() {
83 var collection = new tracing.trace_model.ObjectCollection({});
84 collection.idWasCreated(
85 '0x1000', 'cc', 'Frame', 10);
86 collection.idWasDeleted(
87 '0x1000', 'cc', 'Frame', 15);
88 collection.idWasCreated(
89 '0x1000', 'skia', 'Picture', 20);
90 collection.idWasDeleted(
91 '0x1000', 'skia', 'Picture', 25);
93 var frame = collection.getObjectInstanceAt('0x1000', 10);
94 assertEquals('cc', frame.category);
95 assertEquals('Frame', frame.name);
97 var picture = collection.getObjectInstanceAt('0x1000', 20);
98 assertEquals('skia', picture.category);
99 assertEquals('Picture', picture.name);
101 var typeNames = tvcm.dictionaryKeys(collection.getAllInstancesByTypeName());
104 ['Frame', 'Picture'],
108 collection.getAllInstancesByTypeName()['Frame']);
111 collection.getAllInstancesByTypeName()['Picture']);
114 test('createSnapDelete', function() {
115 var collection = new tracing.trace_model.ObjectCollection({});
116 collection.idWasCreated(
117 '0x1000', 'cat', 'Frame', 10);
118 collection.addSnapshot(
119 '0x1000', 'cat', 'Frame', 10, {foo: 1});
120 collection.idWasDeleted(
121 '0x1000', 'cat', 'Frame', 15);
123 collection.updateBounds();
124 assertEquals(10, collection.bounds.min);
125 assertEquals(15, collection.bounds.max);
127 var s10 = collection.getSnapshotAt('0x1000', 10);
128 var i10 = s10.objectInstance;
129 assertEquals(10, i10.creationTs);
130 assertEquals(15, i10.deletionTs);
133 test('boundsOnUndeletedObject', function() {
134 var collection = new tracing.trace_model.ObjectCollection({});
135 collection.idWasCreated(
136 '0x1000', 'cat', 'Frame', 10);
137 collection.addSnapshot(
138 '0x1000', 'cat', 'Frame', 15, {foo: 1});
140 collection.updateBounds();
141 assertEquals(collection.bounds.min, 10);
142 assertEquals(collection.bounds.max, 15);
145 test('snapshotWithCustomBaseTypeThenDelete', function() {
146 var collection = new tracing.trace_model.ObjectCollection({});
147 var s10 = collection.addSnapshot(
148 '0x1000', 'cat', 'cc::PictureLayerImpl', 10, {}, 'cc::LayerImpl');
149 collection.idWasDeleted(
150 '0x1000', 'cat', 'cc::LayerImpl', 15);
151 collection.updateBounds();
152 assertEquals(collection.bounds.min, 10);
153 assertEquals(collection.bounds.max, 15);
154 assertEquals('cc::PictureLayerImpl', s10.objectInstance.name);
155 assertEquals('cc::LayerImpl', s10.objectInstance.baseTypeName);
158 test('newWithSnapshotThatChangesBaseType', function() {
159 var collection = new tracing.trace_model.ObjectCollection({});
160 var i10 = collection.idWasCreated(
161 '0x1000', 'cat', 'cc::LayerImpl', 10);
162 var s15 = collection.addSnapshot(
163 '0x1000', 'cat', 'cc::PictureLayerImpl', 15, {}, 'cc::LayerImpl');
164 collection.updateBounds();
165 assertEquals(collection.bounds.min, 10);
166 assertEquals(collection.bounds.max, 15);
167 assertEquals(i10, s15.objectInstance);
168 assertEquals('cc::PictureLayerImpl', i10.name);
169 assertEquals('cc::LayerImpl', i10.baseTypeName);
172 test('deleteThenSnapshotWithCustomBase', function() {
173 var collection = new tracing.trace_model.ObjectCollection({});
174 collection.idWasDeleted(
175 '0x1000', 'cat', 'cc::LayerImpl', 10);
176 var s15 = collection.addSnapshot(
177 '0x1000', 'cat', 'cc::PictureLayerImpl', 15, {}, 'cc::LayerImpl');
178 collection.updateBounds();
179 assertEquals(collection.bounds.min, 10);
180 assertEquals(collection.bounds.max, 15);
181 assertEquals('cc::PictureLayerImpl', s15.objectInstance.name);
184 test('autoDelete', function() {
185 var collection = new tracing.trace_model.ObjectCollection({});
186 collection.idWasCreated(
187 '0x1000', 'cat', 'Frame', 10);
188 collection.addSnapshot(
189 '0x1000', 'cat', 'Frame', 10, {foo: 1});
190 collection.autoDeleteObjects(15);
192 var s10 = collection.getSnapshotAt('0x1000', 10);
193 var i10 = s10.objectInstance;
194 assertEquals(i10.deletionTs, 15);