Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / trace_model / object_collection_test.html
1 <!DOCTYPE html>
2 <!--
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.
6 -->
7
8 <link rel="import" href="/tracing/test_utils.html">
9 <link rel="import" href="/tracing/trace_model/object_collection.html">
10
11 <script>
12 'use strict';
13
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);
18   };
19
20   TestObjectInstance.prototype = {
21     __proto__: tracing.trace_model.ObjectInstance.prototype
22   };
23
24   test('objectInstanceSubtype', function() {
25     // Register that TestObjects are bound to TestObjectInstance.
26     tracing.trace_model.ObjectInstance.register(
27         'TestObject', TestObjectInstance);
28     try {
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);
38
39       var testFrame = collection.getObjectInstanceAt('0x1000', 10);
40       assertTrue(testFrame instanceof tracing.trace_model.ObjectInstance);
41       assertFalse(testFrame instanceof TestObjectInstance);
42
43       var testObject = collection.getObjectInstanceAt('0x1000', 20);
44       assertTrue(testObject instanceof tracing.trace_model.ObjectInstance);
45       assertTrue(testObject instanceof TestObjectInstance);
46     } finally {
47       tracing.trace_model.ObjectInstance.unregister('TestObject');
48     }
49   });
50
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});
59
60     collection.updateBounds();
61     assertEquals(10, collection.bounds.min);
62     assertEquals(20, collection.bounds.max);
63
64     var s0 = collection.getSnapshotAt('0x1000', 1);
65     assertUndefined(s0);
66
67     var s1 = collection.getSnapshotAt('0x1000', 10);
68     assertEquals(s1.args.foo, 1);
69
70     var s2 = collection.getSnapshotAt('0x1000', 15);
71     assertEquals(s2.args.foo, 1);
72     assertEquals(s1, s2);
73
74     var s3 = collection.getSnapshotAt('0x1000', 20);
75     assertEquals(s3.args.foo, 2);
76     assertEquals(s1.object, s3.object);
77
78     var s4 = collection.getSnapshotAt('0x1000', 25);
79     assertEquals(s4, s3);
80   });
81
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);
92
93     var frame = collection.getObjectInstanceAt('0x1000', 10);
94     assertEquals('cc', frame.category);
95     assertEquals('Frame', frame.name);
96
97     var picture = collection.getObjectInstanceAt('0x1000', 20);
98     assertEquals('skia', picture.category);
99     assertEquals('Picture', picture.name);
100
101     var typeNames = tvcm.dictionaryKeys(collection.getAllInstancesByTypeName());
102     typeNames.sort();
103     assertArrayEquals(
104         ['Frame', 'Picture'],
105         typeNames);
106     assertArrayEquals(
107         [frame],
108         collection.getAllInstancesByTypeName()['Frame']);
109     assertArrayEquals(
110         [picture],
111         collection.getAllInstancesByTypeName()['Picture']);
112   });
113
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);
122
123     collection.updateBounds();
124     assertEquals(10, collection.bounds.min);
125     assertEquals(15, collection.bounds.max);
126
127     var s10 = collection.getSnapshotAt('0x1000', 10);
128     var i10 = s10.objectInstance;
129     assertEquals(10, i10.creationTs);
130     assertEquals(15, i10.deletionTs);
131   });
132
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});
139
140     collection.updateBounds();
141     assertEquals(collection.bounds.min, 10);
142     assertEquals(collection.bounds.max, 15);
143   });
144
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);
156   });
157
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);
170   });
171
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);
182   });
183
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);
191
192     var s10 = collection.getSnapshotAt('0x1000', 10);
193     var i10 = s10.objectInstance;
194     assertEquals(i10.deletionTs, 15);
195   });
196 });
197 </script>
198