Index: chrome/test/base/tracing.cc |
diff --git a/chrome/test/base/tracing.cc b/chrome/test/base/tracing.cc |
index 5aa07e7e4d6f287e8de7564f6a258e09dd087e63..87e6aaa34342a684e1e3775b93c5ccb7320414ce 100644 |
--- a/chrome/test/base/tracing.cc |
+++ b/chrome/test/base/tracing.cc |
@@ -34,7 +34,6 @@ class InProcessTraceController { |
return content::TracingController::GetInstance()->EnableRecording( |
category_patterns, content::TracingController::DEFAULT_OPTIONS, |
content::TracingController::EnableRecordingDoneCallback()); |
- return true; |
} |
bool BeginTracingWithWatch(const std::string& category_patterns, |
@@ -44,11 +43,22 @@ class InProcessTraceController { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DCHECK(num_occurrences > 0); |
watch_notification_count_ = num_occurrences; |
- return content::TracingController::GetInstance()->SetWatchEvent( |
- category_name, event_name, |
- base::Bind(&InProcessTraceController::OnWatchEventMatched, |
- base::Unretained(this))) && |
- BeginTracing(category_patterns); |
+ if (!content::TracingController::GetInstance()->SetWatchEvent( |
+ category_name, event_name, |
+ base::Bind(&InProcessTraceController::OnWatchEventMatched, |
+ base::Unretained(this)))) { |
sky
2014/01/06 18:14:24
How do you know unretained is safe here and on 55?
haraken
2014/01/07 02:04:43
InProcessTraceController is a Singleton, so I thin
|
+ return false; |
+ } |
+ if (!content::TracingController::GetInstance()->EnableRecording( |
+ category_patterns, content::TracingController::DEFAULT_OPTIONS, |
+ base::Bind(&InProcessTraceController::OnEnableTracingComplete, |
+ base::Unretained(this)))) { |
+ return false; |
+ } |
+ |
+ message_loop_runner_ = new content::MessageLoopRunner; |
+ message_loop_runner_->Run(); |
+ return true; |
} |
bool WaitForWatchEvent(base::TimeDelta timeout) { |
@@ -93,6 +103,10 @@ class InProcessTraceController { |
private: |
friend struct DefaultSingletonTraits<InProcessTraceController>; |
+ void OnEnableTracingComplete() { |
+ message_loop_runner_->Quit(); |
+ } |
+ |
void OnEndTracingComplete() { |
message_loop_runner_->Quit(); |
} |