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