| 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_);
|
| 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
|
|
|