blob: 4dc5a0639b39f1e24cec38e9f66cd02ac7ae136d [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 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="/perf_insights/mappers/reduce.html">
<link rel="import" href="/perf_insights/mre/function_handle.html">
<link rel="import" href="/tracing/extras/measure/measure.html">
<link rel="import" href="/tracing/model/async_slice_group.html">
<script>
'use strict';
tr.exportTo('pi.m', function() {
var MeasureAsyncSlice = tr.e.measure.MeasureAsyncSlice;
function fetchSlicesInfo(slice, cost_infos) {
var cost_info = {
args: slice.args,
title: slice.originalTitle,
start: slice.start,
duration: slice.duration,
subSlices: []
};
cost_infos.push(cost_info);
var subSlices = slice.subSlices;
for (var i = 0; i < subSlices.length; ++i) {
fetchSlicesInfo(subSlices[i], cost_info.subSlices);
}
}
function getTraceImportCostReport(result, model) {
var top_level_slices = [];
for (var event of model.getDescendantEvents()) {
if (event instanceof MeasureAsyncSlice &&
event.viewSubGroupTitle === 'TraceImport' &&
event.isTopLevel) {
top_level_slices.push(event);
}
}
var traceImportCostInfos = [];
for (var i = 0; i < top_level_slices.length; ++i) {
fetchSlicesInfo(top_level_slices[i], traceImportCostInfos);
}
result.addPair('trace_import_cost_info',
{'slices': traceImportCostInfos});
}
pi.FunctionRegistry.register(getTraceImportCostReport);
return {
getTraceImportCostReport: getTraceImportCostReport
};
});
</script>