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 "chromeos/dbus/debug_daemon_client.h" | 5 #include "chromeos/dbus/debug_daemon_client.h" |
6 | 6 |
7 #include <fcntl.h> | 7 #include <fcntl.h> |
8 #include <unistd.h> | 8 #include <unistd.h> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 17 matching lines...) Expand all Loading... | |
28 | 28 |
29 namespace { | 29 namespace { |
30 | 30 |
31 // Used in DebugDaemonClient::EmptySystemStopTracingCallback(). | 31 // Used in DebugDaemonClient::EmptySystemStopTracingCallback(). |
32 void EmptyStopSystemTracingCallbackBody( | 32 void EmptyStopSystemTracingCallbackBody( |
33 const scoped_refptr<base::RefCountedString>& unused_result) { | 33 const scoped_refptr<base::RefCountedString>& unused_result) { |
34 } | 34 } |
35 | 35 |
36 } // namespace | 36 } // namespace |
37 | 37 |
38 // TODO(zelidrag): Move this to ChromeOS wherever place... | |
39 namespace debugd { | |
40 | |
41 const char kEnableDebuggingFeatures[] = "EnableChromeDevFeatures"; | |
42 const char kQueryDevFeatures[] = "QueryDevFeatures"; | |
43 const char kRemoveRootfsVerification[] = "RemoveRootfsVerification"; | |
44 | |
45 } // namespace debugd | |
46 | |
38 namespace chromeos { | 47 namespace chromeos { |
39 | 48 |
40 // The DebugDaemonClient implementation used in production. | 49 // The DebugDaemonClient implementation used in production. |
41 class DebugDaemonClientImpl : public DebugDaemonClient { | 50 class DebugDaemonClientImpl : public DebugDaemonClient { |
42 public: | 51 public: |
43 DebugDaemonClientImpl() : debugdaemon_proxy_(NULL), weak_ptr_factory_(this) {} | 52 DebugDaemonClientImpl() : debugdaemon_proxy_(NULL), weak_ptr_factory_(this) {} |
44 | 53 |
45 virtual ~DebugDaemonClientImpl() {} | 54 virtual ~DebugDaemonClientImpl() {} |
46 | 55 |
47 // DebugDaemonClient override. | 56 // DebugDaemonClient override. |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
295 virtual void UploadCrashes() override { | 304 virtual void UploadCrashes() override { |
296 dbus::MethodCall method_call(debugd::kDebugdInterface, | 305 dbus::MethodCall method_call(debugd::kDebugdInterface, |
297 debugd::kUploadCrashes); | 306 debugd::kUploadCrashes); |
298 debugdaemon_proxy_->CallMethod( | 307 debugdaemon_proxy_->CallMethod( |
299 &method_call, | 308 &method_call, |
300 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 309 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
301 base::Bind(&DebugDaemonClientImpl::OnStartMethod, | 310 base::Bind(&DebugDaemonClientImpl::OnStartMethod, |
302 weak_ptr_factory_.GetWeakPtr())); | 311 weak_ptr_factory_.GetWeakPtr())); |
303 } | 312 } |
304 | 313 |
314 virtual void EnableDebuggingFeatures( | |
315 const std::string& password, | |
316 const EnableDebuggingCallback& callback) override { | |
317 dbus::MethodCall method_call(debugd::kDebugdInterface, | |
318 debugd::kEnableDebuggingFeatures); | |
319 dbus::MessageWriter writer(&method_call); | |
320 writer.AppendString(password); | |
321 debugdaemon_proxy_->CallMethod( | |
322 &method_call, | |
323 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
324 base::Bind(&DebugDaemonClientImpl::OnEnableDebuggingFeatures, | |
325 weak_ptr_factory_.GetWeakPtr(), | |
326 callback)); | |
327 } | |
328 | |
329 virtual void QueryDebuggingFeatures( | |
330 const QueryDevFeaturesCallback& callback) override { | |
331 dbus::MethodCall method_call(debugd::kDebugdInterface, | |
332 debugd::kQueryDevFeatures); | |
333 dbus::MessageWriter writer(&method_call); | |
334 debugdaemon_proxy_->CallMethod( | |
335 &method_call, | |
336 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
337 base::Bind(&DebugDaemonClientImpl::OnQueryDebuggingFeatures, | |
338 weak_ptr_factory_.GetWeakPtr(), | |
339 callback)); | |
340 } | |
341 | |
342 virtual void RemoveRootfsVerification( | |
343 const EnableDebuggingCallback& callback) override { | |
344 dbus::MethodCall method_call(debugd::kDebugdInterface, | |
345 debugd::kRemoveRootfsVerification); | |
346 dbus::MessageWriter writer(&method_call); | |
347 debugdaemon_proxy_->CallMethod( | |
348 &method_call, | |
349 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
350 base::Bind(&DebugDaemonClientImpl::OnRemoveRootfsVerification, | |
351 weak_ptr_factory_.GetWeakPtr(), | |
352 callback)); | |
353 } | |
354 | |
305 protected: | 355 protected: |
306 virtual void Init(dbus::Bus* bus) override { | 356 virtual void Init(dbus::Bus* bus) override { |
307 debugdaemon_proxy_ = | 357 debugdaemon_proxy_ = |
308 bus->GetObjectProxy(debugd::kDebugdServiceName, | 358 bus->GetObjectProxy(debugd::kDebugdServiceName, |
309 dbus::ObjectPath(debugd::kDebugdServicePath)); | 359 dbus::ObjectPath(debugd::kDebugdServicePath)); |
310 } | 360 } |
311 | 361 |
312 private: | 362 private: |
313 // Called when a CheckValidity response is received. | 363 // Called when a CheckValidity response is received. |
314 void OnCheckValidityGetDebugLogs(bool is_compressed, | 364 void OnCheckValidityGetDebugLogs(bool is_compressed, |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
452 } | 502 } |
453 | 503 |
454 // Called when a response for a simple start is received. | 504 // Called when a response for a simple start is received. |
455 void OnStartMethod(dbus::Response* response) { | 505 void OnStartMethod(dbus::Response* response) { |
456 if (!response) { | 506 if (!response) { |
457 LOG(ERROR) << "Failed to request start"; | 507 LOG(ERROR) << "Failed to request start"; |
458 return; | 508 return; |
459 } | 509 } |
460 } | 510 } |
461 | 511 |
512 void OnEnableDebuggingFeatures( | |
513 const EnableDebuggingCallback& callback, | |
514 dbus::Response* response) { | |
515 if (callback.is_null()) | |
516 return; | |
517 | |
518 callback.Run(response != NULL); | |
519 } | |
520 | |
521 void OnQueryDebuggingFeatures( | |
522 const QueryDevFeaturesCallback& callback, | |
523 dbus::Response* response) { | |
524 if (callback.is_null()) | |
525 return; | |
526 | |
527 int32 feature_mask = DEV_FEATURE_NONE; | |
528 if (!response || !dbus::MessageReader(response).PopInt32(&feature_mask)) { | |
529 callback.Run(false, DEV_FEATURES_DISABLED); | |
530 return; | |
531 } | |
532 | |
533 callback.Run(true, feature_mask); | |
534 } | |
535 | |
536 void OnRemoveRootfsVerification( | |
537 const EnableDebuggingCallback& callback, | |
538 dbus::Response* response) { | |
539 if (callback.is_null()) | |
540 return; | |
541 | |
542 bool success = false; | |
543 if (!response || !dbus::MessageReader(response).PopBool(&success)) { | |
dpursell
2014/11/04 19:33:00
The RemoveRootfsVerification function doesn't retu
zel
2014/11/11 01:02:28
Done.
| |
544 callback.Run(false); | |
545 return; | |
546 } | |
547 | |
548 callback.Run(success); | |
549 } | |
550 | |
462 // Creates dbus::FileDescriptor from base::File. | 551 // Creates dbus::FileDescriptor from base::File. |
463 static scoped_ptr<dbus::FileDescriptor> | 552 static scoped_ptr<dbus::FileDescriptor> |
464 CreateFileDescriptorToStopSystemTracing(base::File pipe_write_end) { | 553 CreateFileDescriptorToStopSystemTracing(base::File pipe_write_end) { |
465 if (!pipe_write_end.IsValid()) { | 554 if (!pipe_write_end.IsValid()) { |
466 LOG(ERROR) << "Cannot create pipe reader"; | 555 LOG(ERROR) << "Cannot create pipe reader"; |
467 // NB: continue anyway to shutdown tracing; toss trace data | 556 // NB: continue anyway to shutdown tracing; toss trace data |
468 pipe_write_end.Initialize(base::FilePath(FILE_PATH_LITERAL("/dev/null")), | 557 pipe_write_end.Initialize(base::FilePath(FILE_PATH_LITERAL("/dev/null")), |
469 base::File::FLAG_OPEN | base::File::FLAG_WRITE); | 558 base::File::FLAG_OPEN | base::File::FLAG_WRITE); |
470 // TODO(sleffler) if this fails AppendFileDescriptor will abort | 559 // TODO(sleffler) if this fails AppendFileDescriptor will abort |
471 } | 560 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
545 DebugDaemonClient::EmptyStopSystemTracingCallback() { | 634 DebugDaemonClient::EmptyStopSystemTracingCallback() { |
546 return base::Bind(&EmptyStopSystemTracingCallbackBody); | 635 return base::Bind(&EmptyStopSystemTracingCallbackBody); |
547 } | 636 } |
548 | 637 |
549 // static | 638 // static |
550 DebugDaemonClient* DebugDaemonClient::Create() { | 639 DebugDaemonClient* DebugDaemonClient::Create() { |
551 return new DebugDaemonClientImpl(); | 640 return new DebugDaemonClientImpl(); |
552 } | 641 } |
553 | 642 |
554 } // namespace chromeos | 643 } // namespace chromeos |
OLD | NEW |