Chromium Code Reviews| Index: perf_insights/perf_insights_examples/map_startup_info.html |
| diff --git a/perf_insights/perf_insights_examples/map_startup_info.html b/perf_insights/perf_insights_examples/map_startup_info.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..29960448b0b87fcc757f17cd2c8a3feea2d6e7a8 |
| --- /dev/null |
| +++ b/perf_insights/perf_insights_examples/map_startup_info.html |
| @@ -0,0 +1,59 @@ |
| +<!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/value/value.html"> |
| +<link rel="import" href="/perf_insights/map_function.html"> |
| +<link rel="import" href="/tracing/base/range.html"> |
| +<link rel="import" href="/tracing/extras/chrome/chrome_browser_helper.html"> |
| + |
| +<script> |
| +tr.exportTo('pie', function() { |
| + function mapStartupInfo(results, run_info, model) { |
| + var startupIRs = model.interaction_records.filter(function(ir) { |
| + return ir instanceof tr.e.rail.LoadInteractionRecord && |
| + ir.name === 'Startup'; |
| + }); |
| + // Find the Startup IRs in the browser and renderer processes. |
| + var helper = tr.e.audits.ChromeBrowserHelper; |
| + var browser_startup = new tr.b.Range(); |
| + var renderer_startup = new tr.b.Range(); |
| + startupIRs.forEach(function(ir) { |
| + ir.associatedEvents.toArray().forEach(function(event) { |
| + if (!event.getProcess) |
| + return; |
| + var process = event.getProcess(); |
| + var end = event.start + event.duration; |
| + if (helper.isBrowserProcess(process)) |
|
nduca
2015/08/14 22:28:49
nit: this looks like you're referring to an on an
beaudoin
2015/08/18 16:16:54
Done.
|
| + event.addBoundsToRange(browser_startup); |
| + if (helper.isRendererProcess(process)) |
| + event.addBoundsToRange(renderer_startup); |
| + }); |
| + }); |
| + |
| + var startup_info = {}; |
| + if (!browser_startup.isEmpty) |
|
nduca
2015/08/14 22:28:49
i think it would be easier on the data processing
beaudoin
2015/08/18 16:16:54
Done.
|
| + startup_info['browserStartupDuration'] = browser_startup.range; |
| + if (!renderer_startup.isEmpty) |
| + startup_info['rendererStartupDuration'] = renderer_startup.range; |
| + |
| + if (Object.keys(startup_info).length === 0) { |
| + results.addValue(new pi.v.SkipValue(run_info)); |
|
nduca
2015/08/14 22:28:49
you'll wanna say what result name was skipped, e.g
beaudoin
2015/08/18 16:16:54
Done.
|
| + } else { |
| + results.addValue(new pi.v.DictValue( |
| + run_info, |
| + 'startup_info', |
| + startup_info)); |
| + } |
| + } |
| + |
| + pi.MapFunction.register(mapStartupInfo); |
| + |
| + // Exporting for tests. |
| + return { |
| + mapStartupInfo: mapStartupInfo |
| + }; |
| +}); |
| +</script> |