Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: trace_processor/experimental/mappers/scheduling/map_input_blockers.html

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 Copyright 2015 The Chromium Authors. All rights reserved. 3 Copyright 2015 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 7
8 <link rel="import" href="/perf_insights/mre/function_handle.html"> 8 <link rel="import" href="/perf_insights/mre/function_handle.html">
9 <link rel="import" href="/tracing/base/range.html"> 9 <link rel="import" href="/tracing/base/range.html">
10 <link rel="import" href="/tracing/model/helpers/chrome_model_helper.html"> 10 <link rel="import" href="/tracing/model/helpers/chrome_model_helper.html">
(...skipping 17 matching lines...) Expand all
28 } 28 }
29 29
30 // Look for main thread input handling in each renderer process. 30 // Look for main thread input handling in each renderer process.
31 var inputBlockers = {}; 31 var inputBlockers = {};
32 var foundInputBlockers = false; 32 var foundInputBlockers = false;
33 for (var pid in rendererHelpers) { 33 for (var pid in rendererHelpers) {
34 var rendererHelper = rendererHelpers[pid]; 34 var rendererHelper = rendererHelpers[pid];
35 var mainThread = rendererHelper.mainThread; 35 var mainThread = rendererHelper.mainThread;
36 // Look for events that represent main thread input handling that also 36 // Look for events that represent main thread input handling that also
37 // have one associated flow event showing where the input came from. 37 // have one associated flow event showing where the input came from.
38 mainThread.iterateAllEvents(function(event) { 38 for (var event of mainThread.getDescendantEvents()) {
39 if (event.title !== 'LatencyInfo.Flow' || 39 if (event.title !== 'LatencyInfo.Flow' ||
40 event.args['step'] !== 'HandleInputEventMain' || 40 event.args['step'] !== 'HandleInputEventMain' ||
41 event.inFlowEvents.length !== 1) { 41 event.inFlowEvents.length !== 1) {
42 return; 42 continue;
43 } 43 }
44 44
45 // Now we can derive the queueing interval from the flow event. 45 // Now we can derive the queueing interval from the flow event.
46 var flowEvent = event.inFlowEvents[0]; 46 var flowEvent = event.inFlowEvents[0];
47 var queueRange = 47 var queueRange =
48 tr.b.Range.fromExplicitRange(flowEvent.start, event.start); 48 tr.b.Range.fromExplicitRange(flowEvent.start, event.start);
49 49
50 // Find all events that intersect the queueing interval and compute how 50 // Find all events that intersect the queueing interval and compute how
51 // much they contributed to it. 51 // much they contributed to it.
52 mainThread.iterateAllEvents(function(event) { 52 for (var intersectingEvent of mainThread.getDescendantEvents()) {
53 var eventRange = 53 var eventRange =
54 tr.b.Range.fromExplicitRange(event.start, 54 tr.b.Range.fromExplicitRange(intersectingEvent.start,
55 event.start + event.duration); 55 intersectingEvent.start + intersectingEvent.duration);
56 var intersection = queueRange.findIntersection(eventRange); 56 var intersection = queueRange.findIntersection(eventRange);
57 if (intersection.isEmpty || intersection.duration === 0) 57 if (intersection.isEmpty || intersection.duration === 0)
58 return; 58 continue;
59 if (inputBlockers[event.title] === undefined) 59 if (inputBlockers[intersectingEvent.title] === undefined)
60 inputBlockers[event.title] = []; 60 inputBlockers[intersectingEvent.title] = [];
61 inputBlockers[event.title].push(intersection.duration); 61 inputBlockers[intersectingEvent.title].push(intersection.duration);
62 foundInputBlockers = true; 62 foundInputBlockers = true;
63 }); 63 }
64 }); 64 }
65 } 65 }
66 66
67 if (!foundInputBlockers) { 67 if (!foundInputBlockers) {
68 result.addPair('inputBlockers', null); 68 result.addPair('inputBlockers', null);
69 return; 69 return;
70 } 70 }
71 71
72 result.addPair('inputBlockers', inputBlockers); 72 result.addPair('inputBlockers', inputBlockers);
73 } 73 }
74 74
75 pi.FunctionRegistry.register(mapInputBlockers); 75 pi.FunctionRegistry.register(mapInputBlockers);
76 76
77 return { 77 return {
78 mapInputBlockersForTest: mapInputBlockers 78 mapInputBlockersForTest: mapInputBlockers
79 }; 79 };
80 }); 80 });
81 </script> 81 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698