| Index: mojo/services/tracing/tracing_app.cc
|
| diff --git a/mojo/services/tracing/tracing_app.cc b/mojo/services/tracing/tracing_app.cc
|
| index 5409799f2086e13623a4d54e8395a09d56096796..62b77d8b0e3760bae49985101fd7b5853200850c 100644
|
| --- a/mojo/services/tracing/tracing_app.cc
|
| +++ b/mojo/services/tracing/tracing_app.cc
|
| @@ -38,6 +38,7 @@ TracingApp::~TracingApp() {}
|
| bool TracingApp::ConfigureIncomingConnection(
|
| mojo::ApplicationConnection* connection) {
|
| connection->AddService<TraceCoordinator>(this);
|
| + connection->AddService<StartupPerformanceDataCollector>(this);
|
|
|
| // If someone connects to us they may want to use the TraceCoordinator
|
| // interface and/or they may want to expose themselves to be traced. Attempt
|
| @@ -46,7 +47,8 @@ bool TracingApp::ConfigureIncomingConnection(
|
| // close the pipe if not.
|
| TraceControllerPtr controller_ptr;
|
| connection->ConnectToService(&controller_ptr);
|
| - controller_ptrs_.AddInterfacePtr(controller_ptr.Pass());
|
| + if (controller_ptr)
|
| + controller_ptrs_.AddInterfacePtr(controller_ptr.Pass());
|
| return true;
|
| }
|
|
|
| @@ -56,6 +58,12 @@ void TracingApp::Create(
|
| coordinator_bindings_.AddBinding(this, request.Pass());
|
| }
|
|
|
| +void TracingApp::Create(
|
| + mojo::ApplicationConnection* connection,
|
| + mojo::InterfaceRequest<StartupPerformanceDataCollector> request) {
|
| + startup_performance_data_collector_bindings_.AddBinding(this, request.Pass());
|
| +}
|
| +
|
| void TracingApp::Start(mojo::ScopedDataPipeProducerHandle stream,
|
| const mojo::String& categories) {
|
| sink_.reset(new TraceDataSink(stream.Pass()));
|
| @@ -81,6 +89,41 @@ void TracingApp::StopAndFlush() {
|
| base::TimeDelta::FromSeconds(1));
|
| }
|
|
|
| +void TracingApp::SetShellProcessCreationTime(int64 time) {
|
| + if (startup_performance_times_.shell_process_creation_time == 0)
|
| + startup_performance_times_.shell_process_creation_time = time;
|
| +}
|
| +
|
| +void TracingApp::SetBrowserMessageLoopStartTime(int64 time) {
|
| + if (startup_performance_times_.browser_message_loop_start_time == 0)
|
| + startup_performance_times_.browser_message_loop_start_time = time;
|
| +}
|
| +
|
| +void TracingApp::SetBrowserWindowDisplayTime(int64 time) {
|
| + if (startup_performance_times_.browser_window_display_time == 0)
|
| + startup_performance_times_.browser_window_display_time = time;
|
| +}
|
| +
|
| +void TracingApp::SetBrowserOpenTabsTime(int64 time) {
|
| + if (startup_performance_times_.browser_open_tabs_time == 0)
|
| + startup_performance_times_.browser_open_tabs_time = time;
|
| +}
|
| +
|
| +void TracingApp::SetFirstWebContentsMainFrameLoadTime(int64 time) {
|
| + if (startup_performance_times_.first_web_contents_main_frame_load_time == 0)
|
| + startup_performance_times_.first_web_contents_main_frame_load_time = time;
|
| +}
|
| +
|
| +void TracingApp::SetFirstVisuallyNonEmptyLayoutTime(int64 time) {
|
| + if (startup_performance_times_.first_visually_non_empty_layout_time == 0)
|
| + startup_performance_times_.first_visually_non_empty_layout_time = time;
|
| +}
|
| +
|
| +void TracingApp::GetStartupPerformanceTimes(
|
| + const GetStartupPerformanceTimesCallback& callback) {
|
| + callback.Run(startup_performance_times_.Clone());
|
| +}
|
| +
|
| void TracingApp::AllDataCollected() {
|
| collector_impls_.clear();
|
| sink_->Flush();
|
|
|