blob: 147b3d7e09ca4cb5669dd33774e9a7a21f65377f [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2014 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.
-->
<link rel="import" href="/tracing/base/base.html">
<script>
'use strict';
/**
* @fileoverview Utilities for accessing trace data about the Chrome browser.
*/
tr.exportTo('tr.model.helpers', function() {
var MAIN_FRAMETIME_TYPE = 'main_frametime_type';
var IMPL_FRAMETIME_TYPE = 'impl_frametime_type';
var MAIN_RENDERING_STATS =
'BenchmarkInstrumentation::MainThreadRenderingStats';
var IMPL_RENDERING_STATS =
'BenchmarkInstrumentation::ImplThreadRenderingStats';
function getSlicesIntersectingRange(rangeOfInterest, slices) {
var slicesInFilterRange = [];
for (var i = 0; i < slices.length; i++) {
var slice = slices[i];
if (rangeOfInterest.intersectsExplicitRangeInclusive(
slice.start, slice.end))
slicesInFilterRange.push(slice);
}
return slicesInFilterRange;
}
function ChromeProcessHelper(modelHelper, process) {
this.modelHelper = modelHelper;
this.process = process;
}
ChromeProcessHelper.prototype = {
get pid() {
return this.process.pid;
},
getFrameEventsInRange: function(frametimeType, range) {
var titleToGet;
if (frametimeType == MAIN_FRAMETIME_TYPE)
titleToGet = MAIN_RENDERING_STATS;
else
titleToGet = IMPL_RENDERING_STATS;
var frameEvents = [];
this.process.iterateAllEvents(function(event) {
if (event.title !== titleToGet)
return;
if (range.intersectsExplicitRangeInclusive(event.start, event.end))
frameEvents.push(event);
});
frameEvents.sort(function(a, b) {return a.start - b.start});
return frameEvents;
}
};
function getFrametimeDataFromEvents(frameEvents) {
var frametimeData = [];
for (var i = 1; i < frameEvents.length; i++) {
var diff = frameEvents[i].start - frameEvents[i - 1].start;
frametimeData.push({
'x': frameEvents[i].start,
'frametime': diff
});
}
return frametimeData;
}
return {
ChromeProcessHelper: ChromeProcessHelper,
MAIN_FRAMETIME_TYPE: MAIN_FRAMETIME_TYPE,
IMPL_FRAMETIME_TYPE: IMPL_FRAMETIME_TYPE,
MAIN_RENDERING_STATS: MAIN_RENDERING_STATS,
IMPL_RENDERING_STATS: IMPL_RENDERING_STATS,
getSlicesIntersectingRange: getSlicesIntersectingRange,
getFrametimeDataFromEvents: getFrametimeDataFromEvents
};
});
</script>