| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <fcntl.h> | 5 #include <fcntl.h> |
| 6 #include <unistd.h> | 6 #include <unistd.h> |
| 7 | 7 |
| 8 #include "chromeos/dbus/debug_daemon_client.h" | 8 #include "chromeos/dbus/debug_daemon_client.h" |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 dbus::MethodCall method_call( | 302 dbus::MethodCall method_call( |
| 303 debugd::kDebugdInterface, | 303 debugd::kDebugdInterface, |
| 304 debugd::kSystraceStart); | 304 debugd::kSystraceStart); |
| 305 dbus::MessageWriter writer(&method_call); | 305 dbus::MessageWriter writer(&method_call); |
| 306 writer.AppendString("all"); // TODO(sleffler) parameterize category list | 306 writer.AppendString("all"); // TODO(sleffler) parameterize category list |
| 307 | 307 |
| 308 DVLOG(1) << "Requesting a systrace start"; | 308 DVLOG(1) << "Requesting a systrace start"; |
| 309 debugdaemon_proxy_->CallMethod( | 309 debugdaemon_proxy_->CallMethod( |
| 310 &method_call, | 310 &method_call, |
| 311 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 311 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 312 base::Bind(&DebugDaemonClientImpl::OnStartSystemTracing, | 312 base::Bind(&DebugDaemonClientImpl::OnStartMethod, |
| 313 weak_ptr_factory_.GetWeakPtr())); | 313 weak_ptr_factory_.GetWeakPtr())); |
| 314 } | 314 } |
| 315 | 315 |
| 316 virtual bool RequestStopSystemTracing(const StopSystemTracingCallback& | 316 virtual bool RequestStopSystemTracing(const StopSystemTracingCallback& |
| 317 callback) OVERRIDE { | 317 callback) OVERRIDE { |
| 318 if (pipe_reader_ != NULL) { | 318 if (pipe_reader_ != NULL) { |
| 319 LOG(ERROR) << "Busy doing StopSystemTracing"; | 319 LOG(ERROR) << "Busy doing StopSystemTracing"; |
| 320 return false; | 320 return false; |
| 321 } | 321 } |
| 322 | 322 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 | 389 |
| 390 // Call the function. | 390 // Call the function. |
| 391 debugdaemon_proxy_->CallMethod( | 391 debugdaemon_proxy_->CallMethod( |
| 392 &method_call, | 392 &method_call, |
| 393 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 393 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 394 base::Bind(&DebugDaemonClientImpl::OnTestICMP, | 394 base::Bind(&DebugDaemonClientImpl::OnTestICMP, |
| 395 weak_ptr_factory_.GetWeakPtr(), | 395 weak_ptr_factory_.GetWeakPtr(), |
| 396 callback)); | 396 callback)); |
| 397 } | 397 } |
| 398 | 398 |
| 399 virtual void UploadCrashes() OVERRIDE { |
| 400 dbus::MethodCall method_call(debugd::kDebugdInterface, |
| 401 debugd::kUploadCrashes); |
| 402 debugdaemon_proxy_->CallMethod( |
| 403 &method_call, |
| 404 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 405 base::Bind(&DebugDaemonClientImpl::OnStartMethod, |
| 406 weak_ptr_factory_.GetWeakPtr())); |
| 407 } |
| 408 |
| 399 protected: | 409 protected: |
| 400 virtual void Init(dbus::Bus* bus) OVERRIDE { | 410 virtual void Init(dbus::Bus* bus) OVERRIDE { |
| 401 debugdaemon_proxy_ = | 411 debugdaemon_proxy_ = |
| 402 bus->GetObjectProxy(debugd::kDebugdServiceName, | 412 bus->GetObjectProxy(debugd::kDebugdServiceName, |
| 403 dbus::ObjectPath(debugd::kDebugdServicePath)); | 413 dbus::ObjectPath(debugd::kDebugdServicePath)); |
| 404 } | 414 } |
| 405 | 415 |
| 406 private: | 416 private: |
| 407 // Called to check descriptor validity on a thread where i/o is permitted. | 417 // Called to check descriptor validity on a thread where i/o is permitted. |
| 408 static void CheckValidity(dbus::FileDescriptor* file_descriptor) { | 418 static void CheckValidity(dbus::FileDescriptor* file_descriptor) { |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 logs[key] = value; | 554 logs[key] = value; |
| 545 } | 555 } |
| 546 callback.Run(!sub_reader.HasMoreData() && !broken, logs); | 556 callback.Run(!sub_reader.HasMoreData() && !broken, logs); |
| 547 } | 557 } |
| 548 | 558 |
| 549 void OnGetUserLogFiles(const GetLogsCallback& callback, | 559 void OnGetUserLogFiles(const GetLogsCallback& callback, |
| 550 dbus::Response* response) { | 560 dbus::Response* response) { |
| 551 return OnGetAllLogs(callback, response); | 561 return OnGetAllLogs(callback, response); |
| 552 } | 562 } |
| 553 | 563 |
| 554 // Called when a response for StartSystemTracing() is received. | 564 // Called when a response for a simple start is received. |
| 555 void OnStartSystemTracing(dbus::Response* response) { | 565 void OnStartMethod(dbus::Response* response) { |
| 556 if (!response) { | 566 if (!response) { |
| 557 LOG(ERROR) << "Failed to request systrace start"; | 567 LOG(ERROR) << "Failed to request start"; |
| 558 return; | 568 return; |
| 559 } | 569 } |
| 560 } | 570 } |
| 561 | 571 |
| 562 // Called when a CheckValidity response is received. | 572 // Called when a CheckValidity response is received. |
| 563 void OnCheckValidityRequestStopSystem( | 573 void OnCheckValidityRequestStopSystem( |
| 564 dbus::FileDescriptor* file_descriptor, | 574 dbus::FileDescriptor* file_descriptor, |
| 565 const StopSystemTracingCallback& callback) { | 575 const StopSystemTracingCallback& callback) { |
| 566 // Issue the dbus request to stop system tracing | 576 // Issue the dbus request to stop system tracing |
| 567 dbus::MethodCall method_call( | 577 dbus::MethodCall method_call( |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 FROM_HERE, base::Bind(callback, false, sample)); | 691 FROM_HERE, base::Bind(callback, false, sample)); |
| 682 } | 692 } |
| 683 virtual void GetUserLogFiles(const GetLogsCallback& callback) OVERRIDE { | 693 virtual void GetUserLogFiles(const GetLogsCallback& callback) OVERRIDE { |
| 684 std::map<std::string, std::string> user_logs; | 694 std::map<std::string, std::string> user_logs; |
| 685 user_logs["preferences"] = "Preferences"; | 695 user_logs["preferences"] = "Preferences"; |
| 686 user_logs["invalid_file"] = "Invalid File"; | 696 user_logs["invalid_file"] = "Invalid File"; |
| 687 base::MessageLoop::current()->PostTask( | 697 base::MessageLoop::current()->PostTask( |
| 688 FROM_HERE, | 698 FROM_HERE, |
| 689 base::Bind(callback, true, user_logs)); | 699 base::Bind(callback, true, user_logs)); |
| 690 } | 700 } |
| 691 | |
| 692 virtual void TestICMP(const std::string& ip_address, | 701 virtual void TestICMP(const std::string& ip_address, |
| 693 const TestICMPCallback& callback) OVERRIDE { | 702 const TestICMPCallback& callback) OVERRIDE { |
| 694 base::MessageLoop::current()->PostTask(FROM_HERE, | 703 base::MessageLoop::current()->PostTask(FROM_HERE, |
| 695 base::Bind(callback, false, "")); | 704 base::Bind(callback, false, "")); |
| 696 } | 705 } |
| 697 | |
| 698 virtual void TestICMPWithOptions( | 706 virtual void TestICMPWithOptions( |
| 699 const std::string& ip_address, | 707 const std::string& ip_address, |
| 700 const std::map<std::string, std::string>& options, | 708 const std::map<std::string, std::string>& options, |
| 701 const TestICMPCallback& callback) OVERRIDE { | 709 const TestICMPCallback& callback) OVERRIDE { |
| 702 base::MessageLoop::current()->PostTask(FROM_HERE, | 710 base::MessageLoop::current()->PostTask(FROM_HERE, |
| 703 base::Bind(callback, false, "")); | 711 base::Bind(callback, false, "")); |
| 704 } | 712 } |
| 713 virtual void UploadCrashes() OVERRIDE {} |
| 705 }; | 714 }; |
| 706 | 715 |
| 707 DebugDaemonClient::DebugDaemonClient() { | 716 DebugDaemonClient::DebugDaemonClient() { |
| 708 } | 717 } |
| 709 | 718 |
| 710 DebugDaemonClient::~DebugDaemonClient() { | 719 DebugDaemonClient::~DebugDaemonClient() { |
| 711 } | 720 } |
| 712 | 721 |
| 713 // static | 722 // static |
| 714 DebugDaemonClient::StopSystemTracingCallback | 723 DebugDaemonClient::StopSystemTracingCallback |
| 715 DebugDaemonClient::EmptyStopSystemTracingCallback() { | 724 DebugDaemonClient::EmptyStopSystemTracingCallback() { |
| 716 return base::Bind(&EmptyStopSystemTracingCallbackBody); | 725 return base::Bind(&EmptyStopSystemTracingCallbackBody); |
| 717 } | 726 } |
| 718 | 727 |
| 719 // static | 728 // static |
| 720 DebugDaemonClient* DebugDaemonClient::Create( | 729 DebugDaemonClient* DebugDaemonClient::Create( |
| 721 DBusClientImplementationType type) { | 730 DBusClientImplementationType type) { |
| 722 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 731 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
| 723 return new DebugDaemonClientImpl(); | 732 return new DebugDaemonClientImpl(); |
| 724 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); | 733 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); |
| 725 return new DebugDaemonClientStubImpl(); | 734 return new DebugDaemonClientStubImpl(); |
| 726 } | 735 } |
| 727 | 736 |
| 728 } // namespace chromeos | 737 } // namespace chromeos |
| OLD | NEW |