| 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..dbf9b3e7bfd261fbfe39fa3bdf4258dbe6e3243a
|
| --- /dev/null
|
| +++ b/mojo/services/tracing/public/interfaces/tracing.mojom
|
| @@ -0,0 +1,56 @@
|
| +// 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();
|
| +};
|
| +
|
| +// 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;
|
| +};
|
| +
|
| +// This interface accepts startup performance timing from a variety of sources.
|
| +interface StartupPerformanceDataCollector {
|
| + // These setters may be called many times, only the first time is recorded.
|
| + SetShellProcessCreationTime(int64 time);
|
| + SetBrowserMessageLoopStartTime(int64 time);
|
| + SetBrowserWindowDisplayTime(int64 time);
|
| + SetBrowserOpenTabsTime(int64 time);
|
| + SetFirstWebContentsMainFrameLoadTime(int64 time);
|
| + SetFirstVisuallyNonEmptyLayoutTime(int64 time);
|
| +
|
| + // Get the currently available startup performance times.
|
| + GetStartupPerformanceTimes() => (StartupPerformanceTimes times);
|
| +};
|
|
|