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

Side by Side Diff: content/browser/tracing/trace_controller_impl.cc

Issue 23125009: Add support for writing system traces at startup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review concerns Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/tracing/trace_controller_impl.h" 5 #include "content/browser/tracing/trace_controller_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "content/browser/tracing/trace_message_filter.h" 11 #include "content/browser/tracing/trace_message_filter.h"
12 #include "content/browser/tracing/trace_subscriber_stdio.h" 12 #include "content/browser/tracing/trace_subscriber_stdio.h"
13 #include "content/common/child_process_messages.h" 13 #include "content/common/child_process_messages.h"
14 #include "content/public/browser/browser_message_filter.h" 14 #include "content/public/browser/browser_message_filter.h"
15 #include "content/public/common/content_switches.h" 15 #include "content/public/common/content_switches.h"
16 16
17 using base::debug::TraceLog; 17 using base::debug::TraceLog;
18 18
19 namespace content { 19 namespace content {
20 20
21 namespace { 21 namespace {
22 22
23 base::LazyInstance<TraceControllerImpl>::Leaky g_controller = 23 base::LazyInstance<TraceControllerImpl>::Leaky g_controller =
24 LAZY_INSTANCE_INITIALIZER; 24 LAZY_INSTANCE_INITIALIZER;
25 25
26 class AutoStopTraceSubscriberStdio : public TraceSubscriberStdio { 26 class AutoStopTraceSubscriberStdio : public TraceSubscriberStdio {
27 public: 27 public:
28 AutoStopTraceSubscriberStdio(const base::FilePath& file_path) 28 AutoStopTraceSubscriberStdio(const base::FilePath& file_path)
29 : TraceSubscriberStdio(file_path) {} 29 : TraceSubscriberStdio(file_path,
30 FILE_TYPE_PROPERTY_LIST,
31 false) {}
30 32
31 static void EndStartupTrace(TraceSubscriberStdio* subscriber) { 33 static void EndStartupTrace(AutoStopTraceSubscriberStdio* subscriber) {
32 if (!TraceControllerImpl::GetInstance()->EndTracingAsync(subscriber)) 34 if (!TraceControllerImpl::GetInstance()->EndTracingAsync(subscriber))
33 delete subscriber; 35 delete subscriber;
34 // else, the tracing will end asynchronously in OnEndTracingComplete(). 36 // else, the tracing will end asynchronously in OnEndTracingComplete().
35 } 37 }
36 38
37 virtual void OnEndTracingComplete() OVERRIDE { 39 virtual void OnEndTracingComplete() OVERRIDE {
38 TraceSubscriberStdio::OnEndTracingComplete(); 40 TraceSubscriberStdio::OnEndTracingComplete();
39 delete this; 41 delete this;
40 // TODO(joth): this would be the time to automatically open up 42 // TODO(joth): this would be the time to automatically open up
41 // chrome://tracing/ and load up the trace data collected. 43 // chrome://tracing/ and load up the trace data collected.
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // The last ack represents local trace, so we need to ack it now. Note that 400 // The last ack represents local trace, so we need to ack it now. Note that
399 // this code only executes if there were child processes. 401 // this code only executes if there were child processes.
400 float bpf = TraceLog::GetInstance()->GetBufferPercentFull(); 402 float bpf = TraceLog::GetInstance()->GetBufferPercentFull();
401 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 403 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
402 base::Bind(&TraceControllerImpl::OnTraceBufferPercentFullReply, 404 base::Bind(&TraceControllerImpl::OnTraceBufferPercentFullReply,
403 base::Unretained(this), bpf)); 405 base::Unretained(this), bpf));
404 } 406 }
405 } 407 }
406 408
407 } // namespace content 409 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698