blob: b723e65c75762b43537162d0463c14711ca98b81 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
base.require('tracks.timeline_container_track');
base.require('tracks.timeline_slice_track');
base.require('timeline_filter');
base.require('timeline_model');
base.require('ui');
base.exportTo('tracks', function() {
/**
* Visualizes a TimelineCpu using a series of of TimelineSliceTracks.
* @constructor
*/
var TimelineCpuTrack = base.ui.define(tracks.TimelineContainerTrack);
TimelineCpuTrack.prototype = {
__proto__: tracks.TimelineContainerTrack.prototype,
decorate: function() {
this.classList.add('timeline-cpu-track');
},
get cpu() {
return this.cpu_;
},
set cpu(cpu) {
this.cpu_ = cpu;
this.updateChildTracks_();
},
get tooltip() {
return this.tooltip_;
},
set tooltip(value) {
this.tooltip_ = value;
this.updateChildTracks_();
},
get heading() {
return this.heading_;
},
set heading(h) {
this.heading_ = h;
this.updateChildTracks_();
},
applyCategoryFilter_: function() {
if (this.categoryFilter.matchCpu(this.cpu_))
this.updateChildTracks_();
else
this.visible = false;
},
updateChildTracks_: function() {
this.detach();
if (this.cpu_) {
var slices = tracing.filterSliceArray(this.categoryFilter_,
this.cpu_.slices);
if (slices.length) {
var track = new tracks.TimelineSliceTrack();
track.slices = slices;
track.heading = this.heading_;
track.tooltip = this.tooltip_;
this.addTrack_(track);
}
for (var counterName in this.cpu_.counters) {
var counter = this.cpu_.counters[counterName];
track = new tracks.TimelineCounterTrack();
track.heading = 'CPU ' + this.cpu_.cpuNumber + ' ' +
counter.name + ':';
track.counter = counter;
this.addTrack_(track);
}
}
this.addControlButtonElements_(false);
}
};
return {
TimelineCpuTrack: TimelineCpuTrack
};
});