Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1463)

Unified Diff: content/browser/browser_main_loop.cc

Issue 2833873003: WIP: The tracing service prototype
Patch Set: sync Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/browser/devtools/protocol/tracing_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/browser_main_loop.cc
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index 8030f7c9e2464ca54f96d2ac110a182376ae7ac7..bba31d2a778b3bf1608b46741bf955bb74d62adb 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -75,6 +75,7 @@
#include "content/browser/service_manager/service_manager_context.h"
#include "content/browser/speech/speech_recognition_manager_impl.h"
#include "content/browser/startup_task_runner.h"
+#include "content/browser/tracing/tracing_controller_impl.h"
#include "content/browser/utility_process_host_impl.h"
#include "content/browser/webui/content_web_ui_controller_factory.h"
#include "content/browser/webui/url_data_manager.h"
@@ -103,6 +104,9 @@
#include "net/ssl/ssl_config_service.h"
#include "ppapi/features/features.h"
#include "services/resource_coordinator/memory/coordinator/coordinator_impl.h"
+#include "services/resource_coordinator/public/cpp/tracing/chrome_agent.h"
+#include "services/resource_coordinator/public/interfaces/tracing/tracing.mojom.h"
+#include "services/resource_coordinator/tracing/coordinator_impl.h"
#include "services/service_manager/runner/common/client_util.h"
#include "skia/ext/event_tracer_impl.h"
#include "skia/ext/skia_memory_dump_provider.h"
@@ -725,35 +729,6 @@ void BrowserMainLoop::PostMainMessageLoopStart() {
if (parts_)
parts_->PostMainMessageLoopStart();
- // Start startup tracing through TracingController's interface. TraceLog has
- // been enabled in content_main_runner where threads are not available. Now We
- // need to start tracing for all other tracing agents, which require threads.
- if (parsed_command_line_.HasSwitch(switches::kTraceStartup)) {
- base::trace_event::TraceConfig trace_config(
- parsed_command_line_.GetSwitchValueASCII(switches::kTraceStartup),
- base::trace_event::RECORD_UNTIL_FULL);
- TracingController::GetInstance()->StartTracing(
- trace_config,
- TracingController::StartTracingDoneCallback());
- } else if (parsed_command_line_.HasSwitch(switches::kTraceToConsole)) {
- TracingController::GetInstance()->StartTracing(
- tracing::GetConfigForTraceToConsole(),
- TracingController::StartTracingDoneCallback());
- } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled()) {
- // This checks kTraceConfigFile switch.
- TracingController::GetInstance()->StartTracing(
- tracing::TraceConfigFile::GetInstance()->GetTraceConfig(),
- TracingController::StartTracingDoneCallback());
- }
- // Start tracing to a file for certain duration if needed. Only do this after
- // starting the main message loop to avoid calling
- // MessagePumpForUI::ScheduleWork() before MessagePumpForUI::Start() as it
- // will crash the browser.
- if (is_tracing_startup_for_duration_) {
- TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracingForDuration");
- InitStartupTracingForDuration(parsed_command_line_);
- }
-
#if defined(OS_ANDROID)
{
TRACE_EVENT0("startup",
@@ -1393,6 +1368,48 @@ int BrowserMainLoop::BrowserThreadsStarted() {
// so this cannot happen any earlier than now.
InitializeMojo();
+ if (service_manager::ServiceManagerIsRemote()) {
+ service_manager::Connector* connector =
+ content::ServiceManagerConnection::GetForProcess()->GetConnector();
+ TracingControllerImpl::GetInstance()->Initialize(connector);
+
+ resource_coordinator::tracing::mojom::AgentSetPtr agent_set;
+ connector->BindInterface("tracing", mojo::MakeRequest(&agent_set));
+ resource_coordinator::tracing::ChromeAgent::InitializeIfNeeded(
+ std::move(agent_set));
+ } else {
+ tracing_coordinator_ =
+ base::MakeUnique<resource_coordinator::tracing::CoordinatorImpl>();
+ TracingControllerImpl::GetInstance()->Initialize(nullptr);
+ }
+ // Start startup tracing through TracingController's interface. TraceLog has
+ // been enabled in content_main_runner where threads are not available. Now We
+ // need to start tracing for all other tracing agents, which require threads.
+ if (parsed_command_line_.HasSwitch(switches::kTraceStartup)) {
+ base::trace_event::TraceConfig trace_config(
+ parsed_command_line_.GetSwitchValueASCII(switches::kTraceStartup),
+ base::trace_event::RECORD_UNTIL_FULL);
+ TracingControllerImpl::GetInstance()->StartTracing(
+ trace_config, TracingControllerImpl::StartTracingDoneCallback());
+ } else if (parsed_command_line_.HasSwitch(switches::kTraceToConsole)) {
+ TracingControllerImpl::GetInstance()->StartTracing(
+ tracing::GetConfigForTraceToConsole(),
+ TracingControllerImpl::StartTracingDoneCallback());
+ } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled()) {
+ // This checks kTraceConfigFile switch.
+ TracingControllerImpl::GetInstance()->StartTracing(
+ tracing::TraceConfigFile::GetInstance()->GetTraceConfig(),
+ TracingControllerImpl::StartTracingDoneCallback());
+ }
+ // Start tracing to a file for certain duration if needed. Only do this after
+ // starting the main message loop to avoid calling
+ // MessagePumpForUI::ScheduleWork() before MessagePumpForUI::Start() as it
+ // will crash the browser.
+ if (is_tracing_startup_for_duration_) {
+ TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracingForDuration");
+ InitStartupTracingForDuration(parsed_command_line_);
+ }
+
#if defined(USE_AURA)
if (service_manager::ServiceManagerIsRemote()) {
base::CommandLine::ForCurrentProcess()->AppendSwitch(
@@ -1752,8 +1769,8 @@ void BrowserMainLoop::EndStartupTracing() {
DCHECK(is_tracing_startup_for_duration_);
is_tracing_startup_for_duration_ = false;
- TracingController::GetInstance()->StopTracing(
- TracingController::CreateFileSink(
+ TracingControllerImpl::GetInstance()->StopTracing(
+ TracingControllerImpl::CreateFileSink(
startup_trace_file_,
base::Bind(OnStoppedStartupTracing, startup_trace_file_)));
}
« no previous file with comments | « content/browser/browser_main_loop.h ('k') | content/browser/devtools/protocol/tracing_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698