Chromium Code Reviews| Index: chromeos/dbus/debug_daemon_client.cc |
| diff --git a/chromeos/dbus/debug_daemon_client.cc b/chromeos/dbus/debug_daemon_client.cc |
| index 125dcb3156be066eb0b5210964b897662ca6d554..b2f4acc294906d485e201191c2dbb9d272117eef 100644 |
| --- a/chromeos/dbus/debug_daemon_client.cc |
| +++ b/chromeos/dbus/debug_daemon_client.cc |
| @@ -25,10 +25,14 @@ |
| namespace { |
| -// Used in DebugDaemonClient::EmptySystemStopTracingCallback(). |
| -void EmptyStopSystemTracingCallbackBody( |
| - const scoped_refptr<base::RefCountedString>& unused_result) { |
| -} |
| +const char kCrOSTracingAgentName[] = "cros"; |
| +const char kCrOSTraceLabel[] = "systemTraceEvents"; |
| + |
| +// Used in DebugDaemonClient::EmptyStopAgentTracingCallback(). |
| +void EmptyStopAgentTracingCallbackBody( |
| + const std::string& agent_name, |
| + const std::string& events_label, |
| + const scoped_refptr<base::RefCountedString>& unused_result) {} |
| } // namespace |
| @@ -194,7 +198,13 @@ class DebugDaemonClientImpl : public DebugDaemonClient { |
| callback)); |
| } |
| - void StartSystemTracing() override { |
| + // base::trace_event::TracingAgent implementation. |
| + std::string GetTracingAgentName() override { return kCrOSTracingAgentName; } |
| + |
| + std::string GetTraceEventLabel() override { return kCrOSTraceLabel; } |
| + |
| + bool StartAgentTracing( |
| + const base::trace_event::TraceConfig& trace_config) override { |
| dbus::MethodCall method_call( |
| debugd::kDebugdInterface, |
| debugd::kSystraceStart); |
| @@ -207,35 +217,37 @@ class DebugDaemonClientImpl : public DebugDaemonClient { |
| dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| base::Bind(&DebugDaemonClientImpl::OnStartMethod, |
| weak_ptr_factory_.GetWeakPtr())); |
| + return true; |
| } |
| - bool RequestStopSystemTracing( |
| - scoped_refptr<base::TaskRunner> task_runner, |
| - const StopSystemTracingCallback& callback) override { |
| + void StopAgentTracing(const StopAgentTracingCallback& callback) override { |
| + DCHECK(stop_agent_tracing_task_runner_); |
|
stevenjb
2015/12/10 20:46:40
Since stop_agent_tracing_task_runner_ is required,
Zhen Wang
2015/12/10 21:09:27
It is passed to pipe_reader_ when creating PipeRea
|
| if (pipe_reader_ != NULL) { |
| LOG(ERROR) << "Busy doing StopSystemTracing"; |
| - return false; |
| + return; |
| } |
| - pipe_reader_.reset(new PipeReaderForString( |
| - task_runner, |
| - base::Bind(&DebugDaemonClientImpl::OnIOComplete, |
| - weak_ptr_factory_.GetWeakPtr()))); |
| + pipe_reader_.reset( |
| + new PipeReaderForString(stop_agent_tracing_task_runner_, |
| + base::Bind(&DebugDaemonClientImpl::OnIOComplete, |
| + weak_ptr_factory_.GetWeakPtr()))); |
| base::File pipe_write_end = pipe_reader_->StartIO(); |
| // Create dbus::FileDescriptor on the worker thread; on return we'll |
| // issue the D-Bus request to stop tracing and collect results. |
| base::PostTaskAndReplyWithResult( |
| - task_runner.get(), |
| - FROM_HERE, |
| + stop_agent_tracing_task_runner_.get(), FROM_HERE, |
| base::Bind( |
| &DebugDaemonClientImpl::CreateFileDescriptorToStopSystemTracing, |
| base::Passed(&pipe_write_end)), |
| base::Bind( |
| &DebugDaemonClientImpl::OnCreateFileDescriptorRequestStopSystem, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - callback)); |
| - return true; |
| + weak_ptr_factory_.GetWeakPtr(), callback)); |
| + } |
| + |
| + void SetStopAgentTracingTaskRunner( |
| + scoped_refptr<base::TaskRunner> task_runner) override { |
| + stop_agent_tracing_task_runner_ = task_runner; |
| } |
| void TestICMP(const std::string& ip_address, |
| @@ -557,7 +569,7 @@ class DebugDaemonClientImpl : public DebugDaemonClient { |
| // Called when a CheckValidity response is received. |
| void OnCreateFileDescriptorRequestStopSystem( |
| - const StopSystemTracingCallback& callback, |
| + const StopAgentTracingCallback& callback, |
| scoped_ptr<dbus::FileDescriptor> file_descriptor) { |
| DCHECK(file_descriptor); |
| @@ -572,14 +584,13 @@ class DebugDaemonClientImpl : public DebugDaemonClient { |
| DVLOG(1) << "Requesting a systrace stop"; |
| debugdaemon_proxy_->CallMethod( |
| - &method_call, |
| - dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| - base::Bind(&DebugDaemonClientImpl::OnRequestStopSystemTracing, |
| + &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| + base::Bind(&DebugDaemonClientImpl::OnStopAgentTracing, |
| weak_ptr_factory_.GetWeakPtr())); |
| } |
| - // Called when a response for RequestStopSystemTracing() is received. |
| - void OnRequestStopSystemTracing(dbus::Response* response) { |
| + // Called when a response for StopAgentTracing() is received. |
| + void OnStopAgentTracing(dbus::Response* response) { |
| if (!response) { |
| LOG(ERROR) << "Failed to request systrace stop"; |
| // If debugd crashes or completes I/O before this message is processed |
| @@ -602,13 +613,15 @@ class DebugDaemonClientImpl : public DebugDaemonClient { |
| void OnIOComplete() { |
| std::string pipe_data; |
| pipe_reader_->GetData(&pipe_data); |
| - callback_.Run(base::RefCountedString::TakeString(&pipe_data)); |
| + callback_.Run(GetTracingAgentName(), GetTraceEventLabel(), |
| + base::RefCountedString::TakeString(&pipe_data)); |
| pipe_reader_.reset(); |
| } |
| dbus::ObjectProxy* debugdaemon_proxy_; |
| scoped_ptr<PipeReaderForString> pipe_reader_; |
| - StopSystemTracingCallback callback_; |
| + StopAgentTracingCallback callback_; |
| + scoped_refptr<base::TaskRunner> stop_agent_tracing_task_runner_; |
| base::WeakPtrFactory<DebugDaemonClientImpl> weak_ptr_factory_; |
| DISALLOW_COPY_AND_ASSIGN(DebugDaemonClientImpl); |
| @@ -621,9 +634,9 @@ DebugDaemonClient::~DebugDaemonClient() { |
| } |
| // static |
| -DebugDaemonClient::StopSystemTracingCallback |
| -DebugDaemonClient::EmptyStopSystemTracingCallback() { |
| - return base::Bind(&EmptyStopSystemTracingCallbackBody); |
| +DebugDaemonClient::StopAgentTracingCallback |
| +DebugDaemonClient::EmptyStopAgentTracingCallback() { |
| + return base::Bind(&EmptyStopAgentTracingCallbackBody); |
| } |
| // static |