Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: chromeos/dbus/session_manager_client.cc

Issue 2889683006: Misc refactoring of SessionManagerClient. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | dbus/object_proxy.cc » ('j') | dbus/object_proxy.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/session_manager_client.h" 5 #include "chromeos/dbus/session_manager_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 LOG(ERROR) << "Invalid method_name: " << method_name; 145 LOG(ERROR) << "Invalid method_name: " << method_name;
146 } 146 }
147 } 147 }
148 148
149 } // namespace 149 } // namespace
150 150
151 // The SessionManagerClient implementation used in production. 151 // The SessionManagerClient implementation used in production.
152 class SessionManagerClientImpl : public SessionManagerClient { 152 class SessionManagerClientImpl : public SessionManagerClient {
153 public: 153 public:
154 SessionManagerClientImpl() 154 SessionManagerClientImpl()
155 : session_manager_proxy_(NULL), 155 : weak_ptr_factory_(this) {}
156 screen_is_locked_(false),
157 weak_ptr_factory_(this) {}
158 156
159 ~SessionManagerClientImpl() override {} 157 ~SessionManagerClientImpl() override = default;
160 158
161 // SessionManagerClient overrides: 159 // SessionManagerClient overrides:
162 void SetStubDelegate(StubDelegate* delegate) override { 160 void SetStubDelegate(StubDelegate* delegate) override {
163 // Do nothing; this isn't a stub implementation. 161 // Do nothing; this isn't a stub implementation.
164 } 162 }
165 163
166 void AddObserver(Observer* observer) override { 164 void AddObserver(Observer* observer) override {
167 observers_.AddObserver(observer); 165 observers_.AddObserver(observer);
168 } 166 }
169 167
(...skipping 30 matching lines...) Expand all
200 198
201 void StartSession(const cryptohome::Identification& cryptohome_id) override { 199 void StartSession(const cryptohome::Identification& cryptohome_id) override {
202 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 200 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
203 login_manager::kSessionManagerStartSession); 201 login_manager::kSessionManagerStartSession);
204 dbus::MessageWriter writer(&method_call); 202 dbus::MessageWriter writer(&method_call);
205 writer.AppendString(cryptohome_id.id()); 203 writer.AppendString(cryptohome_id.id());
206 writer.AppendString(""); // Unique ID is deprecated 204 writer.AppendString(""); // Unique ID is deprecated
207 session_manager_proxy_->CallMethod( 205 session_manager_proxy_->CallMethod(
208 &method_call, 206 &method_call,
209 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 207 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
210 base::Bind(&SessionManagerClientImpl::OnStartSession, 208 dbus::ObjectProxy::EmptyResponseCallback());
211 weak_ptr_factory_.GetWeakPtr()));
212 } 209 }
213 210
214 void StopSession() override { 211 void StopSession() override {
215 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 212 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
216 login_manager::kSessionManagerStopSession); 213 login_manager::kSessionManagerStopSession);
217 dbus::MessageWriter writer(&method_call); 214 dbus::MessageWriter writer(&method_call);
218 writer.AppendString(""); // Unique ID is deprecated 215 writer.AppendString(""); // Unique ID is deprecated
219 session_manager_proxy_->CallMethod( 216 session_manager_proxy_->CallMethod(
220 &method_call, 217 &method_call,
221 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 218 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
222 base::Bind(&SessionManagerClientImpl::OnStopSession, 219 dbus::ObjectProxy::EmptyResponseCallback());
223 weak_ptr_factory_.GetWeakPtr()));
224 } 220 }
225 221
226 void StartDeviceWipe() override { 222 void StartDeviceWipe() override {
227 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 223 SimpleMethodCallToSessionManager(
228 login_manager::kSessionManagerStartDeviceWipe); 224 login_manager::kSessionManagerStartDeviceWipe);
229 session_manager_proxy_->CallMethod(
230 &method_call,
231 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
232 base::Bind(&SessionManagerClientImpl::OnDeviceWipe,
233 weak_ptr_factory_.GetWeakPtr()));
234 } 225 }
235 226
236 void RequestLockScreen() override { 227 void RequestLockScreen() override {
237 SimpleMethodCallToSessionManager(login_manager::kSessionManagerLockScreen); 228 SimpleMethodCallToSessionManager(login_manager::kSessionManagerLockScreen);
238 } 229 }
239 230
240 void NotifyLockScreenShown() override { 231 void NotifyLockScreenShown() override {
241 SimpleMethodCallToSessionManager( 232 SimpleMethodCallToSessionManager(
242 login_manager::kSessionManagerHandleLockScreenShown); 233 login_manager::kSessionManagerHandleLockScreenShown);
243 } 234 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 333 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
343 login_manager::kSessionManagerStorePolicy); 334 login_manager::kSessionManagerStorePolicy);
344 dbus::MessageWriter writer(&method_call); 335 dbus::MessageWriter writer(&method_call);
345 // static_cast does not work due to signedness. 336 // static_cast does not work due to signedness.
346 writer.AppendArrayOfBytes( 337 writer.AppendArrayOfBytes(
347 reinterpret_cast<const uint8_t*>(policy_blob.data()), 338 reinterpret_cast<const uint8_t*>(policy_blob.data()),
348 policy_blob.size()); 339 policy_blob.size());
349 session_manager_proxy_->CallMethod( 340 session_manager_proxy_->CallMethod(
350 &method_call, 341 &method_call,
351 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 342 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
352 base::Bind(&SessionManagerClientImpl::OnStorePolicy, 343 base::Bind(&SessionManagerClientImpl::OnNoOutputParamResponse,
353 weak_ptr_factory_.GetWeakPtr(), 344 weak_ptr_factory_.GetWeakPtr(), callback));
354 login_manager::kSessionManagerStorePolicy,
355 callback));
356 } 345 }
357 346
358 void StorePolicyForUser(const cryptohome::Identification& cryptohome_id, 347 void StorePolicyForUser(const cryptohome::Identification& cryptohome_id,
359 const std::string& policy_blob, 348 const std::string& policy_blob,
360 const StorePolicyCallback& callback) override { 349 const StorePolicyCallback& callback) override {
361 CallStorePolicyByUsername(login_manager::kSessionManagerStorePolicyForUser, 350 CallStorePolicyByUsername(login_manager::kSessionManagerStorePolicyForUser,
362 cryptohome_id.id(), policy_blob, callback); 351 cryptohome_id.id(), policy_blob, callback);
363 } 352 }
364 353
365 void StoreDeviceLocalAccountPolicy( 354 void StoreDeviceLocalAccountPolicy(
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 weak_ptr_factory_.GetWeakPtr(), callback), 422 weak_ptr_factory_.GetWeakPtr(), callback),
434 base::Bind(&SessionManagerClientImpl::OnStartArcInstanceFailed, 423 base::Bind(&SessionManagerClientImpl::OnStartArcInstanceFailed,
435 weak_ptr_factory_.GetWeakPtr(), callback)); 424 weak_ptr_factory_.GetWeakPtr(), callback));
436 } 425 }
437 426
438 void StopArcInstance(const ArcCallback& callback) override { 427 void StopArcInstance(const ArcCallback& callback) override {
439 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 428 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
440 login_manager::kSessionManagerStopArcInstance); 429 login_manager::kSessionManagerStopArcInstance);
441 session_manager_proxy_->CallMethod( 430 session_manager_proxy_->CallMethod(
442 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 431 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
443 base::Bind(&SessionManagerClientImpl::OnArcMethod, 432 base::Bind(&SessionManagerClientImpl::OnNoOutputParamResponse,
444 weak_ptr_factory_.GetWeakPtr(), 433 weak_ptr_factory_.GetWeakPtr(), callback));
445 login_manager::kSessionManagerStopArcInstance, callback));
446 } 434 }
447 435
448 void SetArcCpuRestriction( 436 void SetArcCpuRestriction(
449 login_manager::ContainerCpuRestrictionState restriction_state, 437 login_manager::ContainerCpuRestrictionState restriction_state,
450 const ArcCallback& callback) override { 438 const ArcCallback& callback) override {
451 dbus::MethodCall method_call( 439 dbus::MethodCall method_call(
452 login_manager::kSessionManagerInterface, 440 login_manager::kSessionManagerInterface,
453 login_manager::kSessionManagerSetArcCpuRestriction); 441 login_manager::kSessionManagerSetArcCpuRestriction);
454 dbus::MessageWriter writer(&method_call); 442 dbus::MessageWriter writer(&method_call);
455 writer.AppendUint32(restriction_state); 443 writer.AppendUint32(restriction_state);
456 session_manager_proxy_->CallMethod( 444 session_manager_proxy_->CallMethod(
457 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 445 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
458 base::Bind(&SessionManagerClientImpl::OnArcMethod, 446 base::Bind(&SessionManagerClientImpl::OnNoOutputParamResponse,
459 weak_ptr_factory_.GetWeakPtr(), 447 weak_ptr_factory_.GetWeakPtr(), callback));
460 login_manager::kSessionManagerSetArcCpuRestriction,
461 callback));
462 } 448 }
463 449
464 void EmitArcBooted(const cryptohome::Identification& cryptohome_id, 450 void EmitArcBooted(const cryptohome::Identification& cryptohome_id,
465 const ArcCallback& callback) override { 451 const ArcCallback& callback) override {
466 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 452 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
467 login_manager::kSessionManagerEmitArcBooted); 453 login_manager::kSessionManagerEmitArcBooted);
468 dbus::MessageWriter writer(&method_call); 454 dbus::MessageWriter writer(&method_call);
469 writer.AppendString(cryptohome_id.id()); 455 writer.AppendString(cryptohome_id.id());
470 session_manager_proxy_->CallMethod( 456 session_manager_proxy_->CallMethod(
471 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 457 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
472 base::Bind(&SessionManagerClientImpl::OnArcMethod, 458 base::Bind(&SessionManagerClientImpl::OnNoOutputParamResponse,
473 weak_ptr_factory_.GetWeakPtr(), 459 weak_ptr_factory_.GetWeakPtr(), callback));
474 login_manager::kSessionManagerEmitArcBooted, callback));
475 } 460 }
476 461
477 void GetArcStartTime(const GetArcStartTimeCallback& callback) override { 462 void GetArcStartTime(const GetArcStartTimeCallback& callback) override {
478 dbus::MethodCall method_call( 463 dbus::MethodCall method_call(
479 login_manager::kSessionManagerInterface, 464 login_manager::kSessionManagerInterface,
480 login_manager::kSessionManagerGetArcStartTimeTicks); 465 login_manager::kSessionManagerGetArcStartTimeTicks);
481 466
482 session_manager_proxy_->CallMethod( 467 session_manager_proxy_->CallMethod(
483 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 468 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
484 base::Bind(&SessionManagerClientImpl::OnGetArcStartTime, 469 base::Bind(&SessionManagerClientImpl::OnGetArcStartTime,
485 weak_ptr_factory_.GetWeakPtr(), callback)); 470 weak_ptr_factory_.GetWeakPtr(), callback));
486 } 471 }
487 472
488 void RemoveArcData(const cryptohome::Identification& cryptohome_id, 473 void RemoveArcData(const cryptohome::Identification& cryptohome_id,
489 const ArcCallback& callback) override { 474 const ArcCallback& callback) override {
490 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 475 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
491 login_manager::kSessionManagerRemoveArcData); 476 login_manager::kSessionManagerRemoveArcData);
492 dbus::MessageWriter writer(&method_call); 477 dbus::MessageWriter writer(&method_call);
493 writer.AppendString(cryptohome_id.id()); 478 writer.AppendString(cryptohome_id.id());
494 session_manager_proxy_->CallMethod( 479 session_manager_proxy_->CallMethod(
495 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 480 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
496 base::Bind(&SessionManagerClientImpl::OnArcMethod, 481 base::Bind(&SessionManagerClientImpl::OnNoOutputParamResponse,
497 weak_ptr_factory_.GetWeakPtr(), 482 weak_ptr_factory_.GetWeakPtr(), callback));
498 login_manager::kSessionManagerRemoveArcData, callback));
499 } 483 }
500 484
501 protected: 485 protected:
502 void Init(dbus::Bus* bus) override { 486 void Init(dbus::Bus* bus) override {
503 session_manager_proxy_ = bus->GetObjectProxy( 487 session_manager_proxy_ = bus->GetObjectProxy(
504 login_manager::kSessionManagerServiceName, 488 login_manager::kSessionManagerServiceName,
505 dbus::ObjectPath(login_manager::kSessionManagerServicePath)); 489 dbus::ObjectPath(login_manager::kSessionManagerServicePath));
506 blocking_method_caller_.reset( 490 blocking_method_caller_.reset(
507 new BlockingMethodCaller(bus, session_manager_proxy_)); 491 new BlockingMethodCaller(bus, session_manager_proxy_));
508 492
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 // response. 533 // response.
550 void SimpleMethodCallToSessionManager(const std::string& method_name) { 534 void SimpleMethodCallToSessionManager(const std::string& method_name) {
551 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 535 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
552 method_name); 536 method_name);
553 session_manager_proxy_->CallMethod( 537 session_manager_proxy_->CallMethod(
554 &method_call, 538 &method_call,
555 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 539 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
556 dbus::ObjectProxy::EmptyResponseCallback()); 540 dbus::ObjectProxy::EmptyResponseCallback());
557 } 541 }
558 542
543 // Calls given callback (if non-null), with the |success| boolean
544 // representing the dbus call was successful or not.
545 void OnNoOutputParamResponse(
546 const base::Callback<void(bool success)>& callback,
547 dbus::Response* response) {
548 if (!callback.is_null())
549 callback.Run(response != nullptr);
550 }
551
559 // Helper for RetrieveDeviceLocalAccountPolicy and RetrievePolicyForUser. 552 // Helper for RetrieveDeviceLocalAccountPolicy and RetrievePolicyForUser.
560 void CallRetrievePolicyByUsername(const std::string& method_name, 553 void CallRetrievePolicyByUsername(const std::string& method_name,
561 const std::string& account_id, 554 const std::string& account_id,
562 const RetrievePolicyCallback& callback) { 555 const RetrievePolicyCallback& callback) {
563 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 556 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
564 method_name); 557 method_name);
565 dbus::MessageWriter writer(&method_call); 558 dbus::MessageWriter writer(&method_call);
566 writer.AppendString(account_id); 559 writer.AppendString(account_id);
567 session_manager_proxy_->CallMethodWithErrorCallback( 560 session_manager_proxy_->CallMethodWithErrorCallback(
568 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 561 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 dbus::MessageWriter writer(&method_call); 601 dbus::MessageWriter writer(&method_call);
609 writer.AppendString(account_id); 602 writer.AppendString(account_id);
610 // static_cast does not work due to signedness. 603 // static_cast does not work due to signedness.
611 writer.AppendArrayOfBytes( 604 writer.AppendArrayOfBytes(
612 reinterpret_cast<const uint8_t*>(policy_blob.data()), 605 reinterpret_cast<const uint8_t*>(policy_blob.data()),
613 policy_blob.size()); 606 policy_blob.size());
614 session_manager_proxy_->CallMethod( 607 session_manager_proxy_->CallMethod(
615 &method_call, 608 &method_call,
616 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 609 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
617 base::Bind( 610 base::Bind(
618 &SessionManagerClientImpl::OnStorePolicy, 611 &SessionManagerClientImpl::OnNoOutputParamResponse,
619 weak_ptr_factory_.GetWeakPtr(), 612 weak_ptr_factory_.GetWeakPtr(), callback));
620 method_name,
621 callback));
622 } 613 }
623 614
624 // Called when kSessionManagerRestartJob method is complete. 615 // Called when kSessionManagerRestartJob method is complete.
625 void OnRestartJob(const VoidDBusMethodCallback& callback, 616 void OnRestartJob(const VoidDBusMethodCallback& callback,
626 dbus::Response* response) { 617 dbus::Response* response) {
627 LOG_IF(ERROR, !response) 618 LOG_IF(ERROR, !response)
628 << "Failed to call " 619 << "Failed to call "
629 << login_manager::kSessionManagerRestartJob; 620 << login_manager::kSessionManagerRestartJob;
630 callback.Run(response ? DBUS_METHOD_CALL_SUCCESS 621 callback.Run(response ? DBUS_METHOD_CALL_SUCCESS
631 : DBUS_METHOD_CALL_FAILURE); 622 : DBUS_METHOD_CALL_FAILURE);
632 } 623 }
633 624
634 // Called when kSessionManagerStartSession method is complete.
635 void OnStartSession(dbus::Response* response) {
636 LOG_IF(ERROR, !response)
637 << "Failed to call "
638 << login_manager::kSessionManagerStartSession;
639 }
640
641 // Called when kSessionManagerStopSession method is complete.
642 void OnStopSession(dbus::Response* response) {
643 LOG_IF(ERROR, !response)
644 << "Failed to call "
645 << login_manager::kSessionManagerStopSession;
646 }
647
648 // Called when kSessionManagerStopSession method is complete.
649 void OnDeviceWipe(dbus::Response* response) {
650 LOG_IF(ERROR, !response)
651 << "Failed to call "
652 << login_manager::kSessionManagerStartDeviceWipe;
653 }
654
655 // Called when kSessionManagerRetrieveActiveSessions method is complete. 625 // Called when kSessionManagerRetrieveActiveSessions method is complete.
656 void OnRetrieveActiveSessions(const std::string& method_name, 626 void OnRetrieveActiveSessions(const std::string& method_name,
657 const ActiveSessionsCallback& callback, 627 const ActiveSessionsCallback& callback,
658 dbus::Response* response) { 628 dbus::Response* response) {
659 ActiveSessionsMap sessions; 629 ActiveSessionsMap sessions;
660 bool success = false; 630 bool success = false;
661 if (!response) { 631 if (!response) {
662 LOG(ERROR) << "Failed to call " << method_name;
663 callback.Run(sessions, success); 632 callback.Run(sessions, success);
664 return; 633 return;
665 } 634 }
666 635
667 dbus::MessageReader reader(response); 636 dbus::MessageReader reader(response);
668 dbus::MessageReader array_reader(NULL); 637 dbus::MessageReader array_reader(nullptr);
669 638
670 if (!reader.PopArray(&array_reader)) { 639 if (!reader.PopArray(&array_reader)) {
671 LOG(ERROR) << method_name << " response is incorrect: " 640 LOG(ERROR) << method_name << " response is incorrect: "
672 << response->ToString(); 641 << response->ToString();
673 } else { 642 } else {
674 while (array_reader.HasMoreData()) { 643 while (array_reader.HasMoreData()) {
675 dbus::MessageReader dict_entry_reader(NULL); 644 dbus::MessageReader dict_entry_reader(nullptr);
676 std::string key; 645 std::string key;
677 std::string value; 646 std::string value;
678 if (!array_reader.PopDictEntry(&dict_entry_reader) || 647 if (!array_reader.PopDictEntry(&dict_entry_reader) ||
679 !dict_entry_reader.PopString(&key) || 648 !dict_entry_reader.PopString(&key) ||
680 !dict_entry_reader.PopString(&value)) { 649 !dict_entry_reader.PopString(&value)) {
681 LOG(ERROR) << method_name << " response is incorrect: " 650 LOG(ERROR) << method_name << " response is incorrect: "
682 << response->ToString(); 651 << response->ToString();
683 } else { 652 } else {
684 sessions[cryptohome::Identification::FromString(key)] = value; 653 sessions[cryptohome::Identification::FromString(key)] = value;
685 } 654 }
686 } 655 }
687 success = true; 656 success = true;
688 } 657 }
689 callback.Run(sessions, success); 658 callback.Run(sessions, success);
690 } 659 }
691 660
692 void ExtractString(const std::string& method_name, 661 void ExtractString(const std::string& method_name,
693 dbus::Response* response, 662 dbus::Response* response,
694 std::string* extracted) { 663 std::string* extracted) {
695 if (!response) { 664 if (!response) {
696 LOG(ERROR) << "Failed to call " << method_name; 665 LOG(ERROR) << "Failed to call " << method_name;
697 return; 666 return;
698 } 667 }
699 dbus::MessageReader reader(response); 668 dbus::MessageReader reader(response);
700 const uint8_t* values = NULL; 669 const uint8_t* values = nullptr;
701 size_t length = 0; 670 size_t length = 0;
702 if (!reader.PopArrayOfBytes(&values, &length)) { 671 if (!reader.PopArrayOfBytes(&values, &length)) {
703 LOG(ERROR) << "Invalid response: " << response->ToString(); 672 LOG(ERROR) << "Invalid response: " << response->ToString();
704 return; 673 return;
705 } 674 }
706 // static_cast does not work due to signedness. 675 // static_cast does not work due to signedness.
707 extracted->assign(reinterpret_cast<const char*>(values), length); 676 extracted->assign(reinterpret_cast<const char*>(values), length);
708 } 677 }
709 678
710 // Called when kSessionManagerRetrievePolicy or 679 // Called when kSessionManagerRetrievePolicy or
(...skipping 13 matching lines...) Expand all
724 void OnRetrievePolicyError(const std::string& method_name, 693 void OnRetrievePolicyError(const std::string& method_name,
725 const RetrievePolicyCallback& callback, 694 const RetrievePolicyCallback& callback,
726 dbus::ErrorResponse* response) { 695 dbus::ErrorResponse* response) {
727 RetrievePolicyResponseType response_type = 696 RetrievePolicyResponseType response_type =
728 GetResponseTypeBasedOnError(response->GetErrorName()); 697 GetResponseTypeBasedOnError(response->GetErrorName());
729 callback.Run(std::string(), response_type); 698 callback.Run(std::string(), response_type);
730 699
731 LogPolicyResponseUma(method_name, response_type); 700 LogPolicyResponseUma(method_name, response_type);
732 } 701 }
733 702
734 // Called when kSessionManagerStorePolicy or kSessionManagerStorePolicyForUser
735 // method is complete.
736 void OnStorePolicy(const std::string& method_name,
737 const StorePolicyCallback& callback,
738 dbus::Response* response) {
739 bool success = response != nullptr;
740 LOG_IF(ERROR, !success) << "Failed to call " << method_name;
741 callback.Run(success);
742 }
743
744 // Called when the owner key set signal is received. 703 // Called when the owner key set signal is received.
745 void OwnerKeySetReceived(dbus::Signal* signal) { 704 void OwnerKeySetReceived(dbus::Signal* signal) {
746 dbus::MessageReader reader(signal); 705 dbus::MessageReader reader(signal);
747 std::string result_string; 706 std::string result_string;
748 if (!reader.PopString(&result_string)) { 707 if (!reader.PopString(&result_string)) {
749 LOG(ERROR) << "Invalid signal: " << signal->ToString(); 708 LOG(ERROR) << "Invalid signal: " << signal->ToString();
750 return; 709 return;
751 } 710 }
752 const bool success = base::StartsWith(result_string, "success", 711 const bool success = base::StartsWith(result_string, "success",
753 base::CompareCase::INSENSITIVE_ASCII); 712 base::CompareCase::INSENSITIVE_ASCII);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 void SignalConnected(const std::string& interface_name, 755 void SignalConnected(const std::string& interface_name,
797 const std::string& signal_name, 756 const std::string& signal_name,
798 bool success) { 757 bool success) {
799 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name; 758 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name;
800 } 759 }
801 760
802 // Called when kSessionManagerGetServerBackedStateKeys method is complete. 761 // Called when kSessionManagerGetServerBackedStateKeys method is complete.
803 void OnGetServerBackedStateKeys(const StateKeysCallback& callback, 762 void OnGetServerBackedStateKeys(const StateKeysCallback& callback,
804 dbus::Response* response) { 763 dbus::Response* response) {
805 std::vector<std::string> state_keys; 764 std::vector<std::string> state_keys;
806 if (!response) { 765 if (response) {
807 LOG(ERROR) << "Failed to call "
808 << login_manager::kSessionManagerGetServerBackedStateKeys;
809 } else {
810 dbus::MessageReader reader(response); 766 dbus::MessageReader reader(response);
811 dbus::MessageReader array_reader(NULL); 767 dbus::MessageReader array_reader(nullptr);
812 768
813 if (!reader.PopArray(&array_reader)) { 769 if (!reader.PopArray(&array_reader)) {
814 LOG(ERROR) << "Bad response: " << response->ToString(); 770 LOG(ERROR) << "Bad response: " << response->ToString();
815 } else { 771 } else {
816 while (array_reader.HasMoreData()) { 772 while (array_reader.HasMoreData()) {
817 const uint8_t* data = NULL; 773 const uint8_t* data = nullptr;
818 size_t size = 0; 774 size_t size = 0;
819 if (!array_reader.PopArrayOfBytes(&data, &size)) { 775 if (!array_reader.PopArrayOfBytes(&data, &size)) {
820 LOG(ERROR) << "Bad response: " << response->ToString(); 776 LOG(ERROR) << "Bad response: " << response->ToString();
821 state_keys.clear(); 777 state_keys.clear();
822 break; 778 break;
823 } 779 }
824 state_keys.push_back( 780 state_keys.emplace_back(reinterpret_cast<const char*>(data), size);
825 std::string(reinterpret_cast<const char*>(data), size));
826 } 781 }
827 } 782 }
828 } 783 }
829 784
830 if (!callback.is_null()) 785 if (!callback.is_null())
831 callback.Run(state_keys); 786 callback.Run(state_keys);
832 } 787 }
833 788
834 // Called when kSessionManagerCheckArcAvailability method is complete. 789 // Called when kSessionManagerCheckArcAvailability method is complete.
835 void OnCheckArcAvailability(const ArcCallback& callback, 790 void OnCheckArcAvailability(const ArcCallback& callback,
836 dbus::Response* response) { 791 dbus::Response* response) {
837 bool available = false; 792 bool available = false;
838 if (!response) { 793 if (response) {
839 LOG(ERROR) << "Failed to call "
840 << login_manager::kSessionManagerCheckArcAvailability;
841 } else {
842 dbus::MessageReader reader(response); 794 dbus::MessageReader reader(response);
843 if (!reader.PopBool(&available)) 795 if (!reader.PopBool(&available))
844 LOG(ERROR) << "Invalid response: " << response->ToString(); 796 LOG(ERROR) << "Invalid response: " << response->ToString();
845 } 797 }
846 if (!callback.is_null()) 798 if (!callback.is_null())
847 callback.Run(available); 799 callback.Run(available);
848 } 800 }
849 801
850 void OnGetArcStartTime(const GetArcStartTimeCallback& callback, 802 void OnGetArcStartTime(const GetArcStartTimeCallback& callback,
851 dbus::Response* response) { 803 dbus::Response* response) {
852 bool success = false; 804 bool success = false;
853 base::TimeTicks arc_start_time; 805 base::TimeTicks arc_start_time;
854 if (!response) { 806 if (response) {
855 LOG(ERROR) << "Failed to call "
856 << login_manager::kSessionManagerGetArcStartTimeTicks;
857 } else {
858 dbus::MessageReader reader(response); 807 dbus::MessageReader reader(response);
859 int64_t ticks = 0; 808 int64_t ticks = 0;
860 if (reader.PopInt64(&ticks)) { 809 if (reader.PopInt64(&ticks)) {
861 success = true; 810 success = true;
862 arc_start_time = base::TimeTicks::FromInternalValue(ticks); 811 arc_start_time = base::TimeTicks::FromInternalValue(ticks);
863 } else { 812 } else {
864 LOG(ERROR) << "Invalid response: " << response->ToString(); 813 LOG(ERROR) << "Invalid response: " << response->ToString();
865 } 814 }
866 } 815 }
867 callback.Run(success, arc_start_time); 816 callback.Run(success, arc_start_time);
868 } 817 }
869 818
870 // Called when kSessionManagerStartArcInstance or
871 // kSessionManagerStopArcInstance methods complete.
872 void OnArcMethod(const std::string& method_name,
873 const ArcCallback& callback,
874 dbus::Response* response) {
875 bool success = false;
876 if (!response) {
877 LOG(ERROR) << "Failed to call " << method_name;
878 } else {
879 success = true;
880 }
881
882 if (!callback.is_null())
883 callback.Run(success);
884 }
885
886 void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback, 819 void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback,
887 dbus::Response* response) { 820 dbus::Response* response) {
888 if (!callback.is_null()) 821 if (!callback.is_null())
889 callback.Run(StartArcInstanceResult::SUCCESS); 822 callback.Run(StartArcInstanceResult::SUCCESS);
890 } 823 }
891 824
892 void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback, 825 void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback,
893 dbus::ErrorResponse* response) { 826 dbus::ErrorResponse* response) {
894 LOG(ERROR) << "Failed to call StartArcInstance: " 827 LOG(ERROR) << "Failed to call StartArcInstance: "
895 << (response ? response->ToString() : "(null)"); 828 << (response ? response->ToString() : "(null)");
896 if (!callback.is_null()) { 829 if (!callback.is_null()) {
897 callback.Run(response && response->GetErrorName() == 830 callback.Run(response && response->GetErrorName() ==
898 login_manager::dbus_error::kLowFreeDisk 831 login_manager::dbus_error::kLowFreeDisk
899 ? StartArcInstanceResult::LOW_FREE_DISK_SPACE 832 ? StartArcInstanceResult::LOW_FREE_DISK_SPACE
900 : StartArcInstanceResult::UNKNOWN_ERROR); 833 : StartArcInstanceResult::UNKNOWN_ERROR);
901 } 834 }
902 } 835 }
903 836
904 dbus::ObjectProxy* session_manager_proxy_; 837 dbus::ObjectProxy* session_manager_proxy_ = nullptr;
905 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; 838 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_;
906 base::ObserverList<Observer> observers_; 839 base::ObserverList<Observer> observers_;
907 840
908 // Most recent screen-lock state received from session_manager. 841 // Most recent screen-lock state received from session_manager.
909 bool screen_is_locked_; 842 bool screen_is_locked_ = false;
910 843
911 // Note: This should remain the last member so it'll be destroyed and 844 // Note: This should remain the last member so it'll be destroyed and
912 // invalidate its weak pointers before any other members are destroyed. 845 // invalidate its weak pointers before any other members are destroyed.
913 base::WeakPtrFactory<SessionManagerClientImpl> weak_ptr_factory_; 846 base::WeakPtrFactory<SessionManagerClientImpl> weak_ptr_factory_;
914 847
915 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientImpl); 848 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientImpl);
916 }; 849 };
917 850
918 // The SessionManagerClient implementation used on Linux desktop, 851 // The SessionManagerClient implementation used on Linux desktop,
919 // which does nothing. 852 // which does nothing.
920 class SessionManagerClientStubImpl : public SessionManagerClient { 853 class SessionManagerClientStubImpl : public SessionManagerClient {
921 public: 854 public:
922 SessionManagerClientStubImpl() : delegate_(NULL), screen_is_locked_(false) {} 855 SessionManagerClientStubImpl() = default;
923 ~SessionManagerClientStubImpl() override {} 856 ~SessionManagerClientStubImpl() override = default;
924 857
925 // SessionManagerClient overrides 858 // SessionManagerClient overrides
926 void Init(dbus::Bus* bus) override {} 859 void Init(dbus::Bus* bus) override {}
927 void SetStubDelegate(StubDelegate* delegate) override { 860 void SetStubDelegate(StubDelegate* delegate) override {
928 delegate_ = delegate; 861 delegate_ = delegate;
929 } 862 }
930 void AddObserver(Observer* observer) override { 863 void AddObserver(Observer* observer) override {
931 observers_.AddObserver(observer); 864 observers_.AddObserver(observer);
932 } 865 }
933 void RemoveObserver(Observer* observer) override { 866 void RemoveObserver(Observer* observer) override {
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 1066
1134 void RemoveArcData(const cryptohome::Identification& cryptohome_id, 1067 void RemoveArcData(const cryptohome::Identification& cryptohome_id,
1135 const ArcCallback& callback) override { 1068 const ArcCallback& callback) override {
1136 if (callback.is_null()) 1069 if (callback.is_null())
1137 return; 1070 return;
1138 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 1071 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
1139 base::Bind(callback, false)); 1072 base::Bind(callback, false));
1140 } 1073 }
1141 1074
1142 private: 1075 private:
1143 StubDelegate* delegate_; // Weak pointer; may be NULL. 1076 StubDelegate* delegate_ = nullptr; // Weak pointer; may be nullptr.
1144 base::ObserverList<Observer> observers_; 1077 base::ObserverList<Observer> observers_;
1145 std::string device_policy_; 1078 std::string device_policy_;
1146 bool screen_is_locked_; 1079 bool screen_is_locked_ = false;
1147 1080
1148 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientStubImpl); 1081 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientStubImpl);
1149 }; 1082 };
1150 1083
1151 SessionManagerClient::SessionManagerClient() { 1084 SessionManagerClient::SessionManagerClient() {
1152 } 1085 }
1153 1086
1154 SessionManagerClient::~SessionManagerClient() { 1087 SessionManagerClient::~SessionManagerClient() {
1155 } 1088 }
1156 1089
1157 SessionManagerClient* SessionManagerClient::Create( 1090 SessionManagerClient* SessionManagerClient::Create(
1158 DBusClientImplementationType type) { 1091 DBusClientImplementationType type) {
1159 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 1092 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
1160 return new SessionManagerClientImpl(); 1093 return new SessionManagerClientImpl();
1161 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); 1094 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type);
1162 return new SessionManagerClientStubImpl(); 1095 return new SessionManagerClientStubImpl();
1163 } 1096 }
1164 1097
1165 } // namespace chromeos 1098 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | dbus/object_proxy.cc » ('j') | dbus/object_proxy.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698