#endif
using base::debug::TraceLog;
+using base::debug::TraceOptions;
+using base::debug::CategoryFilter;
namespace content {
// message. So to get known categories, just begin and end tracing immediately
// afterwards. This will ping all the child processes for categories.
pending_get_categories_done_callback_ = callback;
- if (!EnableRecording("*", TracingController::Options(),
- EnableRecordingDoneCallback())) {
+ if (!EnableRecording(
+ CategoryFilter("*"), TraceOptions(), EnableRecordingDoneCallback())) {
pending_get_categories_done_callback_.Reset();
return false;
}
}
void TracingControllerImpl::SetEnabledOnFileThread(
- const std::string& category_filter,
+ const CategoryFilter& category_filter,
int mode,
- int trace_options,
+ const TraceOptions& trace_options,
const base::Closure& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
TraceLog::GetInstance()->SetEnabled(
- base::debug::CategoryFilter(category_filter),
- static_cast<TraceLog::Mode>(mode),
- static_cast<TraceLog::Options>(trace_options));
+ category_filter, static_cast<TraceLog::Mode>(mode), trace_options);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
}
}
bool TracingControllerImpl::EnableRecording(
- const std::string& category_filter,
- TracingController::Options options,
+ const CategoryFilter& category_filter,
+ const TraceOptions& trace_options,
const EnableRecordingDoneCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
TraceLog::GetInstance()->AddClockSyncMetadataEvent();
#endif
- options_ = options;
- int trace_options = (options & RECORD_CONTINUOUSLY) ?
- TraceLog::RECORD_CONTINUOUSLY : TraceLog::RECORD_UNTIL_FULL;
- if (options & ENABLE_SAMPLING) {
- trace_options |= TraceLog::ENABLE_SAMPLING;
- }
+ trace_options_ = trace_options;
- if (options & ENABLE_SYSTRACE) {
+ if (trace_options.enable_systrace) {
#if defined(OS_CHROMEOS)
DCHECK(!is_system_tracing_);
chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->
}
void TracingControllerImpl::OnEnableRecordingDone(
- const std::string& category_filter,
- int trace_options,
+ const CategoryFilter& category_filter,
+ const TraceOptions& trace_options,
const EnableRecordingDoneCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Notify all child processes.
for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin();
it != trace_message_filters_.end(); ++it) {
- it->get()->SendBeginTracing(category_filter,
- static_cast<TraceLog::Options>(trace_options));
+ it->get()->SendBeginTracing(category_filter, trace_options);
}
if (!callback.is_null())
if (!can_disable_recording())
return false;
- options_ = TracingController::Options();
+ trace_options_ = TraceOptions();
// Disable local trace early to avoid traces during end-tracing process from
// interfering with the process.
base::Closure on_disable_recording_done_callback =
++pending_disable_recording_ack_count_;
#if defined(OS_CHROMEOS)
- chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->
- RequestStopSystemTracing(
- base::Bind(&TracingControllerImpl::OnEndSystemTracingAcked,
- base::Unretained(this)));
+ scoped_refptr<base::TaskRunner> task_runner =
+ BrowserThread::GetBlockingPool();
+ chromeos::DBusThreadManager::Get()
+ ->GetDebugDaemonClient()
+ ->RequestStopSystemTracing(
+ task_runner,
+ base::Bind(&TracingControllerImpl::OnEndSystemTracingAcked,
+ base::Unretained(this)));
#elif defined(OS_WIN)
EtwSystemEventConsumer::GetInstance()->StopSystemTracing(
base::Bind(&TracingControllerImpl::OnEndSystemTracingAcked,
}
bool TracingControllerImpl::EnableMonitoring(
- const std::string& category_filter,
- TracingController::Options options,
+ const CategoryFilter& category_filter,
+ const TraceOptions& trace_options,
const EnableMonitoringDoneCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
TraceLog::GetInstance()->AddClockSyncMetadataEvent();
#endif
- options_ = options;
- int trace_options = 0;
- if (options & ENABLE_SAMPLING)
- trace_options |= TraceLog::ENABLE_SAMPLING;
+ trace_options_ = trace_options;
base::Closure on_enable_monitoring_done_callback =
base::Bind(&TracingControllerImpl::OnEnableMonitoringDone,
}
void TracingControllerImpl::OnEnableMonitoringDone(
- const std::string& category_filter,
- int trace_options,
+ const CategoryFilter& category_filter,
+ const TraceOptions& trace_options,
const EnableMonitoringDoneCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Notify all child processes.
for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin();
it != trace_message_filters_.end(); ++it) {
- it->get()->SendEnableMonitoring(category_filter,
- static_cast<TraceLog::Options>(trace_options));
+ it->get()->SendEnableMonitoring(category_filter, trace_options);
}
if (!callback.is_null())
if (!can_disable_monitoring())
return false;
- options_ = TracingController::Options();
+ trace_options_ = TraceOptions();
base::Closure on_disable_monitoring_done_callback =
base::Bind(&TracingControllerImpl::OnDisableMonitoringDone,
base::Unretained(this), callback);
void TracingControllerImpl::GetMonitoringStatus(
bool* out_enabled,
- std::string* out_category_filter,
- TracingController::Options* out_options) {
+ CategoryFilter* out_category_filter,
+ TraceOptions* out_trace_options) {
*out_enabled = is_monitoring_;
- *out_category_filter =
- TraceLog::GetInstance()->GetCurrentCategoryFilter().ToString();
- *out_options = options_;
+ *out_category_filter = TraceLog::GetInstance()->GetCurrentCategoryFilter();
+ *out_trace_options = trace_options_;
}
bool TracingControllerImpl::CaptureMonitoringSnapshot(
}
if (can_disable_recording()) {
trace_message_filter->SendBeginTracing(
- TraceLog::GetInstance()->GetCurrentCategoryFilter().ToString(),
- TraceLog::GetInstance()->trace_options());
+ TraceLog::GetInstance()->GetCurrentCategoryFilter(),
+ TraceLog::GetInstance()->GetCurrentTraceOptions());
}
if (can_disable_monitoring()) {
trace_message_filter->SendEnableMonitoring(
- TraceLog::GetInstance()->GetCurrentCategoryFilter().ToString(),
- TraceLog::GetInstance()->trace_options());
+ TraceLog::GetInstance()->GetCurrentCategoryFilter(),
+ TraceLog::GetInstance()->GetCurrentTraceOptions());
}
}