| Index: components/tracing/common/trace_startup.cc
|
| diff --git a/components/tracing/common/trace_startup.cc b/components/tracing/common/trace_startup.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2c8ae37025cf15ee8e19e057ecf64b412f6bdecd
|
| --- /dev/null
|
| +++ b/components/tracing/common/trace_startup.cc
|
| @@ -0,0 +1,48 @@
|
| +// Copyright 2017 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.
|
| +
|
| +#include "components/tracing/common/trace_startup.h"
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/logging.h"
|
| +#include "base/trace_event/memory_dump_manager.h"
|
| +#include "base/trace_event/trace_log.h"
|
| +#include "components/tracing/common/trace_config_file.h"
|
| +#include "components/tracing/common/trace_to_console.h"
|
| +#include "components/tracing/common/tracing_switches.h"
|
| +
|
| +namespace tracing {
|
| +
|
| +void EnableStartupTracingIfNeeded(bool can_access_file_system) {
|
| + const base::CommandLine& command_line =
|
| + *base::CommandLine::ForCurrentProcess();
|
| +
|
| + // Enables heap profiling if "--enable-heap-profiling" flag is passed.
|
| + base::trace_event::MemoryDumpManager::GetInstance()
|
| + ->EnableHeapProfilingIfNeeded();
|
| +
|
| + if (command_line.HasSwitch(switches::kTraceStartup)) {
|
| + base::trace_event::TraceConfig trace_config(
|
| + command_line.GetSwitchValueASCII(switches::kTraceStartup),
|
| + base::trace_event::RECORD_UNTIL_FULL);
|
| + base::trace_event::TraceLog::GetInstance()->SetEnabled(
|
| + trace_config, base::trace_event::TraceLog::RECORDING_MODE);
|
| + } else if (command_line.HasSwitch(switches::kTraceToConsole)) {
|
| + base::trace_event::TraceConfig trace_config =
|
| + tracing::GetConfigForTraceToConsole();
|
| + LOG(ERROR) << "Start " << switches::kTraceToConsole
|
| + << " with CategoryFilter '"
|
| + << trace_config.ToCategoryFilterString() << "'.";
|
| + base::trace_event::TraceLog::GetInstance()->SetEnabled(
|
| + trace_config, base::trace_event::TraceLog::RECORDING_MODE);
|
| + } else if (can_access_file_system &&
|
| + tracing::TraceConfigFile::GetInstance()->IsEnabled()) {
|
| + // This checks kTraceConfigFile switch.
|
| + base::trace_event::TraceLog::GetInstance()->SetEnabled(
|
| + tracing::TraceConfigFile::GetInstance()->GetTraceConfig(),
|
| + base::trace_event::TraceLog::RECORDING_MODE);
|
| + }
|
| +}
|
| +
|
| +} // namespace tracing
|
|
|