1<!DOCTYPE html> 2<!-- 3Copyright (c) 2014 The Chromium Authors. All rights reserved. 4Use of this source code is governed by a BSD-style license that can be 5found in the LICENSE file. 6--> 7<link rel="import" href="/base/base.html"> 8 9<script> 10'use strict'; 11 12/** 13 * @fileoverview Utilities for accessing trace data about the Chrome browser. 14 */ 15tr.exportTo('tr.e.audits', function() { 16 var MAIN_FRAMETIME_TYPE = 'main_frametime_type'; 17 var IMPL_FRAMETIME_TYPE = 'impl_frametime_type'; 18 19 var MAIN_RENDERING_STATS = 20 'BenchmarkInstrumentation::MainThreadRenderingStats'; 21 var IMPL_RENDERING_STATS = 22 'BenchmarkInstrumentation::ImplThreadRenderingStats'; 23 24 25 function getSlicesIntersectingRange(rangeOfInterest, slices) { 26 var slicesInFilterRange = []; 27 for (var i = 0; i < slices.length; i++) { 28 var slice = slices[i]; 29 if (rangeOfInterest.intersectsExplicitRange(slice.start, slice.end)) 30 slicesInFilterRange.push(slice); 31 } 32 return slicesInFilterRange; 33 } 34 35 36 function ChromeProcessHelper(modelHelper, process) { 37 this.modelHelper = modelHelper; 38 this.process = process; 39 } 40 41 ChromeProcessHelper.prototype = { 42 get pid() { 43 return this.process.pid; 44 }, 45 46 getFrameEventsInRange: function(frametimeType, range) { 47 var titleToGet; 48 if (frametimeType == MAIN_FRAMETIME_TYPE) 49 titleToGet = MAIN_RENDERING_STATS; 50 else 51 titleToGet = IMPL_RENDERING_STATS; 52 53 var frameEvents = []; 54 this.process.iterateAllEvents(function(event) { 55 if (event.title !== titleToGet) 56 return; 57 if (range.intersectsExplicitRange(event.start, event.end)) 58 frameEvents.push(event); 59 }); 60 61 frameEvents.sort(function(a, b) {return a.start - b.start}); 62 return frameEvents; 63 } 64 }; 65 66 function getFrametimeDataFromEvents(frameEvents) { 67 var frametimeData = []; 68 for (var i = 1; i < frameEvents.length; i++) { 69 var diff = frameEvents[i].start - frameEvents[i - 1].start; 70 frametimeData.push({ 71 'x': frameEvents[i].start, 72 'frametime': diff 73 }); 74 } 75 return frametimeData; 76 } 77 78 return { 79 ChromeProcessHelper: ChromeProcessHelper, 80 81 MAIN_FRAMETIME_TYPE: MAIN_FRAMETIME_TYPE, 82 IMPL_FRAMETIME_TYPE: IMPL_FRAMETIME_TYPE, 83 MAIN_RENDERING_STATS: MAIN_RENDERING_STATS, 84 IMPL_RENDERING_STATS: IMPL_RENDERING_STATS, 85 86 getSlicesIntersectingRange: getSlicesIntersectingRange, 87 getFrametimeDataFromEvents: getFrametimeDataFromEvents 88 }; 89}); 90</script> 91