• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2012 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
6/**
7 * @fileoverview Renders an array of slices into the provided div,
8 * using a child canvas element. Uses a FastRectRenderer to draw only
9 * the visible slices.
10 */
11base.requireStylesheet('tracks.track');
12base.require('ui');
13base.exportTo('tracing.tracks', function() {
14
15  /**
16   * The base class for all tracks.
17   * @constructor
18   */
19  var Track = tracing.ui.define('div');
20  Track.prototype = {
21    __proto__: HTMLDivElement.prototype,
22
23    decorate: function() {
24    },
25
26    get visible() {
27      return this.style.display !== 'none';
28    },
29
30    set visible(v) {
31      this.style.display = (v ? '' : 'none');
32    },
33
34    get numVisibleTracks() {
35      return (this.visible ? 1 : 0);
36    },
37
38    addControlButtonElements_: function(canCollapse) {
39      var closeEl = document.createElement('div');
40      closeEl.classList.add('track-button');
41      closeEl.classList.add('track-close-button');
42      closeEl.textContent = String.fromCharCode(215); // ×
43      var that = this;
44      closeEl.addEventListener('click', function() {
45        that.style.display = 'None';
46      });
47      this.appendChild(closeEl);
48
49      var collapseEl = document.createElement('div');
50      collapseEl.classList.add('track-button');
51      collapseEl.classList.add('track-collapse-button');
52      var minus = '\u2212'; // minus sign;
53      var plus = '\u002b'; // plus sign;
54      collapseEl.textContent = minus;
55      var collapsed = false;
56      collapseEl.addEventListener('click', function() {
57        collapsed = !collapsed;
58        this.collapsedDidChange(collapsed);
59        collapseEl.textContent = collapsed ? plus : minus;
60      });
61      this.appendChild(collapseEl);
62      if (!canCollapse)
63        collapseEl.style.display = 'None';
64    }
65  };
66
67  return {
68    Track: Track
69  };
70});
71