• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5'use strict';
6
7base.require('tracing.tracks.process_track_base');
8base.require('tracing.tracks.cpu_track');
9base.require('tracing.tracks.spacing_track');
10
11base.exportTo('tracing.tracks', function() {
12  var Cpu = tracing.trace_model.Cpu;
13  var CpuTrack = tracing.tracks.cpu_track;
14  var ProcessTrackBase = tracing.tracks.ProcessTrackBase;
15  var SpacingTrack = tracing.tracks.SpacingTrack;
16
17  /**
18   * @constructor
19   */
20  var KernelTrack = ui.define('kernel-track', ProcessTrackBase);
21
22  KernelTrack.prototype = {
23    __proto__: ProcessTrackBase.prototype,
24
25    decorate: function(viewport) {
26      tracing.tracks.ProcessTrackBase.prototype.decorate.call(this, viewport);
27    },
28
29
30    // Kernel maps to processBase because we derive from ProcessTrackBase.
31    set kernel(kernel) {
32      this.processBase = kernel;
33    },
34
35    get kernel() {
36      return this.processBase;
37    },
38
39    willAppendTracks_: function() {
40      var categoryFilter = this.categoryFilter;
41
42      var cpus = base.dictionaryValues(this.kernel.cpus);
43      cpus.sort(tracing.trace_model.Cpu.compare);
44
45      var didAppendAtLeastOneTrack = false;
46      for (var i = 0; i < cpus.length; ++i) {
47        var cpu = cpus[i];
48        if (!categoryFilter.matchCpu(cpu))
49          return;
50        var track = new tracing.tracks.CpuTrack(this.viewport);
51        track.categoryFilter = categoryFilter;
52        track.cpu = cpu;
53        if (!track.hasVisibleContent)
54          continue;
55        this.appendChild(track);
56        didAppendAtLeastOneTrack = true;
57      }
58      if (didAppendAtLeastOneTrack)
59        this.appendChild(new SpacingTrack(this.viewport));
60    }
61  };
62
63
64  return {
65    KernelTrack: KernelTrack
66  };
67});
68