| // 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('ui'); |
| base.require('analysis.single_counter_selection_analysis'); |
| |
| /** |
| * @fileoverview Conains class for counter selections |
| * |
| */ |
| |
| base.exportTo('tracing.analysis', function() { |
| |
| /** |
| * |
| * @constructor |
| * @extends {HTMLDivElement} |
| */ |
| var CounterSelectionAnalysis = |
| tracing.ui.define('counter-selection-analysis'); |
| CounterSelectionAnalysis.prototype = { |
| __proto__: HTMLDivElement.prototype, |
| |
| decorate: function() { |
| this.selection_ = undefined; |
| }, |
| |
| set selection(s) { |
| if (s.getNumCounterHits() == 0) |
| throw new Error('Expected at least 1 counter in selection'); |
| if (s.getNumSliceHits() != 0) |
| throw new Error('Expected only counters in selection'); |
| |
| this.selection_ = s; |
| this.updateContents_(); |
| }, |
| |
| get selection() { |
| return this.selection_; |
| }, |
| |
| updateContents_: function() { |
| this.textContent = ''; |
| |
| if (!this.selection_.length) |
| return; |
| |
| var counterHitsSelection = |
| this.selection_.getCounterSampleHitsAsSelection(); |
| |
| var counters = counterHitsSelection; |
| var addedHeader = false; |
| for (var i = 0; i < counters.length; i++) { |
| var counterHit = counters[i]; |
| var childEl = new tracing.analysis.SingleCounterSelectionAnalysis(); |
| if (!addedHeader) { |
| this.appendChild(childEl.createColumnTitleRow()); |
| addedHeader = true; |
| } |
| var childSelection = new tracing.Selection(); |
| childSelection.pushHit(counterHit); |
| childEl.selection = childSelection; |
| this.appendChild(childEl); |
| } |
| } |
| }; |
| |
| return { |
| CounterSelectionAnalysis: CounterSelectionAnalysis |
| }; |
| }); |