Chromium Code Reviews| Index: mojo/services/tracing/public/interfaces/tracing.mojom |
| diff --git a/mojo/services/tracing/public/interfaces/tracing.mojom b/mojo/services/tracing/public/interfaces/tracing.mojom |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b31be47e7aa1be04104816de2de1af05a704e451 |
| --- /dev/null |
| +++ b/mojo/services/tracing/public/interfaces/tracing.mojom |
| @@ -0,0 +1,54 @@ |
| +// Copyright 2014 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. |
| + |
| +module tracing; |
| + |
| +// To participate in the tracing ecosystem, implement the TraceController |
| +// interface and connect to the tracing app. Then, when the controller's Start() |
| +// function is called collect tracing data and pass it back via the provided |
| +// TraceDataCollector interface up until Stop() is called. |
| + |
| +interface TraceController { |
| + StartTracing(string categories, TraceDataCollector collector); |
| + StopTracing(); |
| +}; |
| + |
| +interface TraceDataCollector { |
| + DataCollected(string json); |
| +}; |
| + |
| +interface TraceCoordinator { |
| + // Request tracing data from all connected TraceControllers to stream to |
| + // |stream|. |
| + Start(handle<data_pipe_producer> stream, string categories); |
| + |
| + // Stop tracing and flush results to file. |
| + StopAndFlush(); |
|
sky
2015/08/17 20:09:30
How do you know when the final DataCollected() is
msw
2015/08/17 21:25:51
I just added the struct and interface below and mo
|
| +}; |
| + |
| +// These times are used to determine startup performance metrics. |
| +// TODO(msw): Use TimeTicks to avoid system clock changes: crbug.com/521164 |
| +struct StartupPerformanceTimes { |
| + // TODO(msw): Rename to match "BrowserMainEntryTimeAbsolute" metric? |
| + int64 shell_process_creation_time; |
| + int64 browser_message_loop_start_time; |
| + int64 browser_window_display_time; |
| + int64 browser_open_tabs_time; |
| + // TODO(msw): Rename to avoid "web contents"? |
| + int64 first_web_contents_main_frame_load_time; |
| + // TODO(msw): Rename to match "FirstWebContents.NonEmptyPaint" metric? |
| + int64 first_visually_non_empty_layout_time; |
| +}; |
| + |
| +interface StartupPerformanceDataCollector { |
|
sky
2015/08/17 20:09:30
Expand your documentation above to cover this.
It'
msw
2015/08/17 21:25:51
I added minimal documentation, let me know if it's
sky
2015/08/17 21:41:57
No, that's too obscure. If you can't do the single
|
| + // These setters may be called many times, only the first call is recorded. |
| + SetShellProcessCreationTime(int64 time); |
| + SetBrowserMessageLoopStartTime(int64 time); |
| + SetBrowserWindowDisplayTime(int64 time); |
| + SetBrowserOpenTabsTime(int64 time); |
| + SetFirstWebContentsMainFrameLoadTime(int64 time); |
| + SetFirstVisuallyNonEmptyLayoutTime(int64 time); |
| + |
| + GetStartupPerformanceTimes() => (StartupPerformanceTimes times); |
| +}; |