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); |
+}; |