[Tracing] Fix --trace-to-console

My previous CL breaks --trace-to-console.
--trace-to-console should be treated as other startup
tracing flags. This CL fixes the issue.

Related previous CL: https://crrev.com/1410703007

TEST:
$./out/Debug/chrome --trace-to-console=blink
Then you should see the trace events printed to the screen.

BUG=566275, 542390

Review URL: https://codereview.chromium.org/1513403002

Cr-Commit-Position: refs/heads/master@{#364837}
diff --git a/components/tracing/trace_to_console.cc b/components/tracing/trace_to_console.cc
new file mode 100644
index 0000000..237bbe8c
--- /dev/null
+++ b/components/tracing/trace_to_console.cc
@@ -0,0 +1,35 @@
+// Copyright (c) 2015 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/trace_to_console.h"
+
+#include <string>
+
+#include "base/command_line.h"
+#include "components/tracing/tracing_switches.h"
+
+namespace tracing {
+
+namespace {
+// These categories will cause deadlock when ECHO_TO_CONSOLE. crbug.com/325575.
+const char kEchoToConsoleCategoryFilter[] = "-ipc,-task";
+}  // namespace
+
+base::trace_event::TraceConfig GetConfigForTraceToConsole() {
+  const base::CommandLine& command_line =
+      *base::CommandLine::ForCurrentProcess();
+  DCHECK(command_line.HasSwitch(switches::kTraceToConsole));
+  std::string filter = command_line.GetSwitchValueASCII(
+      switches::kTraceToConsole);
+  if (filter.empty()) {
+    filter = kEchoToConsoleCategoryFilter;
+  } else {
+    filter.append(",");
+    filter.append(kEchoToConsoleCategoryFilter);
+  }
+  return base::trace_event::TraceConfig(
+      filter, base::trace_event::ECHO_TO_CONSOLE);
+}
+
+}  // namespace tracing