| Index: perf_insights/perf_insights/mappers/scheduling/map_input_blockers.html
|
| diff --git a/perf_insights/perf_insights/mappers/scheduling/map_input_blockers.html b/perf_insights/perf_insights/mappers/scheduling/map_input_blockers.html
|
| deleted file mode 100644
|
| index 01b988e00ff4c48d4d55c6c9dedc876e43ac298a..0000000000000000000000000000000000000000
|
| --- a/perf_insights/perf_insights/mappers/scheduling/map_input_blockers.html
|
| +++ /dev/null
|
| @@ -1,81 +0,0 @@
|
| -<!DOCTYPE html>
|
| -<!--
|
| -Copyright 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/mre/function_handle.html">
|
| -<link rel="import" href="/tracing/base/range.html">
|
| -<link rel="import" href="/tracing/model/helpers/chrome_model_helper.html">
|
| -
|
| -<script>
|
| -'use strict';
|
| -
|
| -tr.exportTo('pie', function() {
|
| - // Collects the set of tasks that are preventing user input from being
|
| - // processed on the main thread.
|
| - // See https://goo.gl/l7V5xg.
|
| - function mapInputBlockers(result, model) {
|
| - var modelHelper = model.getOrCreateHelper(
|
| - tr.model.helpers.ChromeModelHelper);
|
| - var rendererHelpers = modelHelper.rendererHelpers;
|
| -
|
| - if (!rendererHelpers) {
|
| - // If we didn't detect any renderer processes, bail out.
|
| - result.addPair('inputBlockers', null);
|
| - return;
|
| - }
|
| -
|
| - // Look for main thread input handling in each renderer process.
|
| - var inputBlockers = {};
|
| - var foundInputBlockers = false;
|
| - for (var pid in rendererHelpers) {
|
| - var rendererHelper = rendererHelpers[pid];
|
| - var mainThread = rendererHelper.mainThread;
|
| - // Look for events that represent main thread input handling that also
|
| - // have one associated flow event showing where the input came from.
|
| - mainThread.iterateAllEvents(function(event) {
|
| - if (event.title !== 'LatencyInfo.Flow' ||
|
| - event.args['step'] !== 'HandleInputEventMain' ||
|
| - event.inFlowEvents.length !== 1) {
|
| - return;
|
| - }
|
| -
|
| - // Now we can derive the queueing interval from the flow event.
|
| - var flowEvent = event.inFlowEvents[0];
|
| - var queueRange =
|
| - tr.b.Range.fromExplicitRange(flowEvent.start, event.start);
|
| -
|
| - // Find all events that intersect the queueing interval and compute how
|
| - // much they contributed to it.
|
| - mainThread.iterateAllEvents(function(event) {
|
| - var eventRange =
|
| - tr.b.Range.fromExplicitRange(event.start,
|
| - event.start + event.duration);
|
| - var intersection = queueRange.findIntersection(eventRange);
|
| - if (intersection.isEmpty || intersection.duration === 0)
|
| - return;
|
| - if (inputBlockers[event.title] === undefined)
|
| - inputBlockers[event.title] = [];
|
| - inputBlockers[event.title].push(intersection.duration);
|
| - foundInputBlockers = true;
|
| - });
|
| - });
|
| - }
|
| -
|
| - if (!foundInputBlockers) {
|
| - result.addPair('inputBlockers', null);
|
| - return;
|
| - }
|
| -
|
| - result.addPair('inputBlockers', inputBlockers);
|
| - }
|
| -
|
| - pi.FunctionRegistry.register(mapInputBlockers);
|
| -
|
| - return {
|
| - mapInputBlockersForTest: mapInputBlockers
|
| - };
|
| -});
|
| -</script>
|
|
|