Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / tracks / object_instance_track_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/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">
15
16 <script>
17 'use strict';
18
19 tvcm.unittest.testSuite(function() { // @suppress longLineCheck
20   var Selection = tracing.Selection;
21   var ObjectInstanceTrack = tracing.tracks.ObjectInstanceTrack;
22   var Viewport = tracing.TimelineViewport;
23
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);
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         tracing.trace_model.SelectionState.SELECTED;
43
44     var div = document.createElement('div');
45     this.addHTMLOutput(div);
46
47     var viewport = new Viewport(div);
48     var drawingContainer = new tracing.tracks.DrawingContainer(viewport);
49     div.appendChild(drawingContainer);
50
51     var track = ObjectInstanceTrack(viewport);
52     drawingContainer.invalidate();
53     drawingContainer.appendChild(track);
54
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);
60   });
61
62   test('selectionHitTestingWithThreadTrack', function() {
63     var objects = createObjects();
64     var frames = objects.getAllInstancesByTypeName()['Frame'];
65
66     var track = ObjectInstanceTrack(new Viewport());
67     track.objectInstances = frames;
68
69     // Hit outside range
70     var selection = new Selection();
71     track.addIntersectingItemsInRangeToSelectionInWorldSpace(
72         8, 8.1, 0.1, selection);
73     assertEquals(0, selection.length);
74
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);
81
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);
88   });
89
90   test('addItemNearToProvidedEventToSelection', function() {
91     var objects = createObjects();
92     var frames = objects.getAllInstancesByTypeName()['Frame'];
93
94     var track = ObjectInstanceTrack(new Viewport());
95     track.objectInstances = frames;
96
97     var instance = new tracing.trace_model.ObjectInstance(
98         {}, '0x1000', 'cat', 'n', 10);
99
100     assertDoesNotThrow(function() {
101       track.addItemNearToProvidedEventToSelection(instance, 0, undefined);
102     });
103   });
104 });
105 </script>
106