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/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">
17 tv.exportTo('tracing.tracks', function() {
19 * A track that displays a ObjectInstanceGroup.
21 * @extends {ContainerTrack}
23 var ObjectInstanceGroupTrack = tv.ui.define(
24 'object-instance-group-track', tracing.tracks.MultiRowTrack);
26 ObjectInstanceGroupTrack.prototype = {
28 __proto__: tracing.tracks.MultiRowTrack.prototype,
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;
36 get objectInstances() {
37 return this.itemsToGroup;
40 set objectInstances(objectInstances) {
41 this.setItemsToGroup(objectInstances);
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);
52 buildSubRows_: function(objectInstances) {
53 objectInstances.sort(function(x, y) {
54 return x.creationTs - y.creationTs;
58 for (var i = 0; i < objectInstances.length; i++) {
59 var objectInstance = objectInstances[i];
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) {
67 subRow.push(objectInstance);
72 var subRow = [objectInstance];
78 updateHeadingAndTooltip_: function() {
83 ObjectInstanceGroupTrack: ObjectInstanceGroupTrack