summaryrefslogtreecommitdiffstats
path: root/chrome/test/base/tracing.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/base/tracing.cc')
-rw-r--r--chrome/test/base/tracing.cc26
1 files changed, 20 insertions, 6 deletions
diff --git a/chrome/test/base/tracing.cc b/chrome/test/base/tracing.cc
index 5aa07e7..87e6aaa 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)))) {
+ 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();
}