Chromium Code Reviews| Index: content/browser/tracing/trace_controller_impl.cc |
| diff --git a/content/browser/tracing/trace_controller_impl.cc b/content/browser/tracing/trace_controller_impl.cc |
| index e0aed6edcd7969acd9f874f2fd7ed73f414a3f87..62cace8742335cd06b686d52cb80af6a1e271f5e 100644 |
| --- a/content/browser/tracing/trace_controller_impl.cc |
| +++ b/content/browser/tracing/trace_controller_impl.cc |
| @@ -54,7 +54,7 @@ TraceControllerImpl::TraceControllerImpl() : |
| pending_bpf_ack_count_(0), |
| maximum_bpf_(0.0f), |
| is_tracing_(false), |
| - is_get_categories_(false) { |
| + is_get_category_groups_(false) { |
| TraceLog::GetInstance()->SetNotificationCallback( |
| base::Bind(&TraceControllerImpl::OnTraceNotification, |
| base::Unretained(this))); |
| @@ -106,44 +106,30 @@ void TraceControllerImpl::InitStartupTracing(const CommandLine& command_line) { |
| base::TimeDelta::FromSeconds(delay_secs)); |
| } |
| -bool TraceControllerImpl::GetKnownCategoriesAsync(TraceSubscriber* subscriber) { |
| +bool TraceControllerImpl::GetKnownCategoryGroupsAsync( |
| + TraceSubscriber* subscriber) { |
|
dsinclair
2013/02/22 21:13:44
nit: indenting.
rterrazas
2013/02/25 05:55:02
Done.
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| // Known categories come back from child processes with the EndTracingAck |
| // message. So to get known categories, just begin and end tracing immediately |
| // afterwards. This will ping all the child processes for categories. |
| - is_get_categories_ = true; |
| + is_get_category_groups_ = true; |
| bool success = BeginTracing(subscriber, "*") && |
| EndTracingAsync(subscriber); |
| - is_get_categories_ = success; |
| + is_get_category_groups_ = success; |
| return success; |
| } |
| -bool TraceControllerImpl::BeginTracing( |
| - TraceSubscriber* subscriber, |
| - const std::vector<std::string>& included_categories, |
| - const std::vector<std::string>& excluded_categories) { |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - |
| - if (!can_begin_tracing(subscriber)) |
| - return false; |
| - |
| - // Enable tracing |
| - TraceLog::GetInstance()->SetEnabled(included_categories, excluded_categories); |
| - OnTracingBegan(subscriber); |
| - |
| - return true; |
| -} |
| - |
| bool TraceControllerImpl::BeginTracing(TraceSubscriber* subscriber, |
| - const std::string& categories) { |
| + const std::string& category_patterns) { |
|
dsinclair
2013/02/22 21:13:44
nit: indenting.
rterrazas
2013/02/25 05:55:02
Done.
rterrazas
2013/02/25 05:55:02
Done.
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| if (!can_begin_tracing(subscriber)) |
| return false; |
| // Enable tracing |
| - TraceLog::GetInstance()->SetEnabled(categories); |
| + base::debug::CategoryFilter category_filter(category_patterns); |
| + TraceLog::GetInstance()->SetEnabled(category_filter); |
| OnTracingBegan(subscriber); |
| @@ -166,11 +152,11 @@ bool TraceControllerImpl::EndTracingAsync(TraceSubscriber* subscriber) { |
| // Handle special case of zero child processes. |
| if (pending_end_ack_count_ == 1) { |
| // Ack asynchronously now, because we don't have any children to wait for. |
| - std::vector<std::string> categories; |
| - TraceLog::GetInstance()->GetKnownCategories(&categories); |
| + std::vector<std::string> category_groups; |
| + TraceLog::GetInstance()->GetKnownCategoryGroups(&category_groups); |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| base::Bind(&TraceControllerImpl::OnEndTracingAck, |
| - base::Unretained(this), categories)); |
| + base::Unretained(this), category_groups)); |
| } |
| // Notify all child processes. |
| @@ -261,7 +247,10 @@ void TraceControllerImpl::AddFilter(TraceMessageFilter* filter) { |
| filters_.insert(filter); |
| if (is_tracing_enabled()) { |
| - filter->SendBeginTracing(included_categories_, excluded_categories_); |
| + scoped_refptr<base::RefCountedString> category_filter_str_ptr = |
| + new base::RefCountedString(); |
| + category_filter_.ToString(&(category_filter_str_ptr->data())); |
| + filter->SendBeginTracing(category_filter_str_ptr->data()); |
| if (!watch_category_.empty()) |
| filter->SendSetWatchEvent(watch_category_, watch_name_); |
| } |
| @@ -283,25 +272,28 @@ void TraceControllerImpl::OnTracingBegan(TraceSubscriber* subscriber) { |
| subscriber_ = subscriber; |
| - TraceLog::GetInstance()->GetEnabledTraceCategories(&included_categories_, |
| - &excluded_categories_); |
| + category_filter_ = TraceLog::GetInstance()->GetCurrentCategoryFilter(); |
| + scoped_refptr<base::RefCountedString> category_filter_str_ptr = |
| + new base::RefCountedString(); |
|
dsinclair
2013/02/22 21:13:44
nit: indenting.
|
| + category_filter_.ToString(&(category_filter_str_ptr->data())); |
| // Notify all child processes. |
| for (FilterMap::iterator it = filters_.begin(); it != filters_.end(); ++it) { |
| - it->get()->SendBeginTracing(included_categories_, excluded_categories_); |
| + it->get()->SendBeginTracing(category_filter_str_ptr->data()); |
| } |
| } |
| void TraceControllerImpl::OnEndTracingAck( |
| - const std::vector<std::string>& known_categories) { |
| + const std::vector<std::string>& known_category_groups) { |
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| base::Bind(&TraceControllerImpl::OnEndTracingAck, |
| - base::Unretained(this), known_categories)); |
| + base::Unretained(this), known_category_groups)); |
| return; |
| } |
| - // Merge known_categories with known_categories_ |
| - known_categories_.insert(known_categories.begin(), known_categories.end()); |
| + // Merge known_category_groups with known_category_groups_ |
| + known_category_groups_.insert(known_category_groups.begin(), |
| + known_category_groups.end()); |
|
dsinclair
2013/02/22 21:13:44
nit: indenting.
rterrazas
2013/02/25 05:55:02
Done.
|
| if (pending_end_ack_count_ == 0) |
| return; |
| @@ -323,25 +315,25 @@ void TraceControllerImpl::OnEndTracingAck( |
| // Trigger callback if one is set. |
| if (subscriber_) { |
| - if (is_get_categories_) |
| - subscriber_->OnKnownCategoriesCollected(known_categories_); |
| + if (is_get_category_groups_) |
| + subscriber_->OnKnownCategoriesCollected(known_category_groups_); |
| else |
| subscriber_->OnEndTracingComplete(); |
| // Clear subscriber so that others can use TraceController. |
| subscriber_ = NULL; |
| } |
| - is_get_categories_ = false; |
| + is_get_category_groups_ = false; |
| } |
| if (pending_end_ack_count_ == 1) { |
| // The last ack represents local trace, so we need to ack it now. Note that |
| // this code only executes if there were child processes. |
| - std::vector<std::string> categories; |
| - TraceLog::GetInstance()->GetKnownCategories(&categories); |
| + std::vector<std::string> category_groups; |
| + TraceLog::GetInstance()->GetKnownCategoryGroups(&category_groups); |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| base::Bind(&TraceControllerImpl::OnEndTracingAck, |
| - base::Unretained(this), categories)); |
| + base::Unretained(this), category_groups)); |
| } |
| } |
| @@ -357,7 +349,7 @@ void TraceControllerImpl::OnTraceDataCollected( |
| } |
| // Drop trace events if we are just getting categories. |
| - if (subscriber_ && !is_get_categories_) |
| + if (subscriber_ && !is_get_category_groups_) |
| subscriber_->OnTraceDataCollected(events_str_ptr); |
| } |