OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright (c) 2015 The Chromium Authors. All rights reserved. | 3 Copyright (c) 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 <link rel="import" href="/tracing/base/range_utils.html"> | 7 <link rel="import" href="/tracing/base/math/range_utils.html"> |
8 <link rel="import" href="/tracing/base/sorted_array_utils.html"> | 8 <link rel="import" href="/tracing/base/math/sorted_array_utils.html"> |
9 <link rel="import" href="/tracing/base/statistics.html"> | 9 <link rel="import" href="/tracing/base/math/statistics.html"> |
10 <link rel="import" href="/tracing/model/frame.html"> | 10 <link rel="import" href="/tracing/model/frame.html"> |
11 | 11 |
12 <script> | 12 <script> |
13 'use strict'; | 13 'use strict'; |
14 | 14 |
15 /** | 15 /** |
16 * @fileoverview Class for managing android-specific model meta data, | 16 * @fileoverview Class for managing android-specific model meta data, |
17 * such as rendering apps, and frames rendered. | 17 * such as rendering apps, and frames rendered. |
18 */ | 18 */ |
19 tr.exportTo('tr.model.helpers', function() { | 19 tr.exportTo('tr.model.helpers', function() { |
20 var Frame = tr.model.Frame; | 20 var Frame = tr.model.Frame; |
21 var Statistics = tr.b.Statistics; | 21 var Statistics = tr.b.math.Statistics; |
22 | 22 |
23 var UI_DRAW_TYPE = { | 23 var UI_DRAW_TYPE = { |
24 NONE: 'none', | 24 NONE: 'none', |
25 LEGACY: 'legacy', | 25 LEGACY: 'legacy', |
26 MARSHMALLOW: 'marshmallow' | 26 MARSHMALLOW: 'marshmallow' |
27 }; | 27 }; |
28 | 28 |
29 var UI_THREAD_DRAW_NAMES = { | 29 var UI_THREAD_DRAW_NAMES = { |
30 'performTraversals': UI_DRAW_TYPE.LEGACY, | 30 'performTraversals': UI_DRAW_TYPE.LEGACY, |
31 'Choreographer#doFrame': UI_DRAW_TYPE.MARSHMALLOW | 31 'Choreographer#doFrame': UI_DRAW_TYPE.MARSHMALLOW |
(...skipping 30 matching lines...) Expand all Loading... |
62 return new Frame(events, threadTimeRanges, args); | 62 return new Frame(events, threadTimeRanges, args); |
63 } | 63 } |
64 | 64 |
65 function findOverlappingDrawFrame(renderThread, uiDrawSlice) { | 65 function findOverlappingDrawFrame(renderThread, uiDrawSlice) { |
66 if (!renderThread) | 66 if (!renderThread) |
67 return undefined; | 67 return undefined; |
68 | 68 |
69 // of all top level renderthread slices, find the one that has a 'sync' | 69 // of all top level renderthread slices, find the one that has a 'sync' |
70 // within the uiDrawSlice | 70 // within the uiDrawSlice |
71 var overlappingDrawFrame; | 71 var overlappingDrawFrame; |
72 var slices = tr.b.iterateOverIntersectingIntervals( | 72 var slices = tr.b.math.iterateOverIntersectingIntervals( |
73 renderThread.sliceGroup.slices, | 73 renderThread.sliceGroup.slices, |
74 function(range) { return range.start; }, | 74 function(range) { return range.start; }, |
75 function(range) { return range.end; }, | 75 function(range) { return range.end; }, |
76 uiDrawSlice.start, | 76 uiDrawSlice.start, |
77 uiDrawSlice.end, | 77 uiDrawSlice.end, |
78 function(rtDrawSlice) { | 78 function(rtDrawSlice) { |
79 if (rtDrawSlice.title === RENDER_THREAD_DRAW_NAME) { | 79 if (rtDrawSlice.title === RENDER_THREAD_DRAW_NAME) { |
80 var rtSyncSlice = rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME); | 80 var rtSyncSlice = rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME); |
81 if (rtSyncSlice && | 81 if (rtSyncSlice && |
82 rtSyncSlice.start >= uiDrawSlice.start && | 82 rtSyncSlice.start >= uiDrawSlice.start && |
(...skipping 24 matching lines...) Expand all Loading... |
107 slice.title === 'setupListItem' || | 107 slice.title === 'setupListItem' || |
108 slice.title === 'deliverInputEvent' || | 108 slice.title === 'deliverInputEvent' || |
109 slice.title === 'RV Scroll') | 109 slice.title === 'RV Scroll') |
110 preFrameEvents.push(slice); | 110 preFrameEvents.push(slice); |
111 }); | 111 }); |
112 uiThread.asyncSliceGroup.slices.forEach(function(slice) { | 112 uiThread.asyncSliceGroup.slices.forEach(function(slice) { |
113 if (slice.title === 'deliverInputEvent') | 113 if (slice.title === 'deliverInputEvent') |
114 preFrameEvents.push(slice); | 114 preFrameEvents.push(slice); |
115 }); | 115 }); |
116 | 116 |
117 return tr.b.mergeRanges( | 117 return tr.b.math.mergeRanges( |
118 tr.b.convertEventsToRanges(preFrameEvents), | 118 tr.b.math.convertEventsToRanges(preFrameEvents), |
119 3, | 119 3, |
120 function(events) { | 120 function(events) { |
121 return { | 121 return { |
122 start: events[0].min, | 122 start: events[0].min, |
123 end: events[events.length - 1].max | 123 end: events[events.length - 1].max |
124 }; | 124 }; |
125 }); | 125 }); |
126 } | 126 } |
127 | 127 |
128 function getFrameStartTime(traversalStart, preTraversalWorkRanges) { | 128 function getFrameStartTime(traversalStart, preTraversalWorkRanges) { |
129 var preTraversalWorkRange = tr.b.findClosestIntervalInSortedIntervals( | 129 var preTraversalWorkRange = tr.b.math.findClosestIntervalInSortedIntervals( |
130 preTraversalWorkRanges, | 130 preTraversalWorkRanges, |
131 function(range) { return range.start; }, | 131 function(range) { return range.start; }, |
132 function(range) { return range.end; }, | 132 function(range) { return range.end; }, |
133 traversalStart, | 133 traversalStart, |
134 3); | 134 3); |
135 | 135 |
136 if (preTraversalWorkRange) | 136 if (preTraversalWorkRange) |
137 return preTraversalWorkRange.start; | 137 return preTraversalWorkRange.start; |
138 return traversalStart; | 138 return traversalStart; |
139 } | 139 } |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 } | 332 } |
333 return this.animations_; | 333 return this.animations_; |
334 } | 334 } |
335 }; | 335 }; |
336 | 336 |
337 return { | 337 return { |
338 AndroidApp, | 338 AndroidApp, |
339 }; | 339 }; |
340 }); | 340 }); |
341 </script> | 341 </script> |
OLD | NEW |