8958e4126ef4bdddbfe5649bf4dc42bb5d485b7e
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / tracks / object_instance_group_track.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/analysis/object_snapshot_view.html">
9 <link rel="import" href="/tracing/analysis/object_instance_view.html">
10 <link rel="import" href="/tracing/tracks/multi_row_track.html">
11 <link rel="import" href="/tracing/tracks/object_instance_track.html">
12 <link rel="import" href="/base/sorted_array_utils.html">
13 <link rel="import" href="/base/ui.html">
14 <script>
15 'use strict';
16
17 tv.exportTo('tracing.tracks', function() {
18   /**
19    * A track that displays a ObjectInstanceGroup.
20    * @constructor
21    * @extends {ContainerTrack}
22    */
23   var ObjectInstanceGroupTrack = tv.ui.define(
24       'object-instance-group-track', tracing.tracks.MultiRowTrack);
25
26   ObjectInstanceGroupTrack.prototype = {
27
28     __proto__: tracing.tracks.MultiRowTrack.prototype,
29
30     decorate: function(viewport) {
31       tracing.tracks.MultiRowTrack.prototype.decorate.call(this, viewport);
32       this.classList.add('object-instance-group-track');
33       this.objectInstances_ = undefined;
34     },
35
36     get objectInstances() {
37       return this.itemsToGroup;
38     },
39
40     set objectInstances(objectInstances) {
41       this.setItemsToGroup(objectInstances);
42     },
43
44     addSubTrack_: function(objectInstances) {
45       var hasMultipleRows = this.subRows.length > 1;
46       var track = new tracing.tracks.ObjectInstanceTrack(this.viewport);
47       track.objectInstances = objectInstances;
48       this.appendChild(track);
49       return track;
50     },
51
52     buildSubRows_: function(objectInstances) {
53       objectInstances.sort(function(x, y) {
54         return x.creationTs - y.creationTs;
55       });
56
57       var subRows = [];
58       for (var i = 0; i < objectInstances.length; i++) {
59         var objectInstance = objectInstances[i];
60
61         var found = false;
62         for (var j = 0; j < subRows.length; j++) {
63           var subRow = subRows[j];
64           var lastItemInSubRow = subRow[subRow.length - 1];
65           if (objectInstance.creationTs >= lastItemInSubRow.deletionTs) {
66             found = true;
67             subRow.push(objectInstance);
68             break;
69           }
70         }
71         if (!found) {
72           var subRow = [objectInstance];
73           subRows.push(subRow);
74         }
75       }
76       return subRows;
77     },
78     updateHeadingAndTooltip_: function() {
79     }
80   };
81
82   return {
83     ObjectInstanceGroupTrack: ObjectInstanceGroupTrack
84   };
85 });
86 </script>