// 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 }; });