| 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/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 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 | 736 |
| 737 void ScreenIsUnlockedReceived(dbus::Signal* signal) { | 737 void ScreenIsUnlockedReceived(dbus::Signal* signal) { |
| 738 screen_is_locked_ = false; | 738 screen_is_locked_ = false; |
| 739 for (auto& observer : observers_) | 739 for (auto& observer : observers_) |
| 740 observer.ScreenIsUnlocked(); | 740 observer.ScreenIsUnlocked(); |
| 741 } | 741 } |
| 742 | 742 |
| 743 void ArcInstanceStoppedReceived(dbus::Signal* signal) { | 743 void ArcInstanceStoppedReceived(dbus::Signal* signal) { |
| 744 dbus::MessageReader reader(signal); | 744 dbus::MessageReader reader(signal); |
| 745 bool clean = false; | 745 bool clean = false; |
| 746 if (!reader.PopBool(&clean)) { | 746 std::string container_instance_id; |
| 747 if (!reader.PopBool(&clean) || !reader.PopString(&container_instance_id)) { |
| 747 LOG(ERROR) << "Invalid signal: " << signal->ToString(); | 748 LOG(ERROR) << "Invalid signal: " << signal->ToString(); |
| 748 return; | 749 return; |
| 749 } | 750 } |
| 750 for (auto& observer : observers_) | 751 for (auto& observer : observers_) |
| 751 observer.ArcInstanceStopped(clean); | 752 observer.ArcInstanceStopped(clean, container_instance_id); |
| 752 } | 753 } |
| 753 | 754 |
| 754 // Called when the object is connected to the signal. | 755 // Called when the object is connected to the signal. |
| 755 void SignalConnected(const std::string& interface_name, | 756 void SignalConnected(const std::string& interface_name, |
| 756 const std::string& signal_name, | 757 const std::string& signal_name, |
| 757 bool success) { | 758 bool success) { |
| 758 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name; | 759 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name; |
| 759 } | 760 } |
| 760 | 761 |
| 761 // Called when kSessionManagerGetServerBackedStateKeys method is complete. | 762 // Called when kSessionManagerGetServerBackedStateKeys method is complete. |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 811 arc_start_time = base::TimeTicks::FromInternalValue(ticks); | 812 arc_start_time = base::TimeTicks::FromInternalValue(ticks); |
| 812 } else { | 813 } else { |
| 813 LOG(ERROR) << "Invalid response: " << response->ToString(); | 814 LOG(ERROR) << "Invalid response: " << response->ToString(); |
| 814 } | 815 } |
| 815 } | 816 } |
| 816 callback.Run(success, arc_start_time); | 817 callback.Run(success, arc_start_time); |
| 817 } | 818 } |
| 818 | 819 |
| 819 void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback, | 820 void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback, |
| 820 dbus::Response* response) { | 821 dbus::Response* response) { |
| 822 DCHECK(response); |
| 823 dbus::MessageReader reader(response); |
| 824 std::string container_instance_id; |
| 825 if (!reader.PopString(&container_instance_id)) { |
| 826 LOG(ERROR) << "Invalid response: " << response->ToString(); |
| 827 if (!callback.is_null()) |
| 828 callback.Run(StartArcInstanceResult::UNKNOWN_ERROR, std::string()); |
| 829 return; |
| 830 } |
| 831 |
| 821 if (!callback.is_null()) | 832 if (!callback.is_null()) |
| 822 callback.Run(StartArcInstanceResult::SUCCESS); | 833 callback.Run(StartArcInstanceResult::SUCCESS, container_instance_id); |
| 823 } | 834 } |
| 824 | 835 |
| 825 void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback, | 836 void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback, |
| 826 dbus::ErrorResponse* response) { | 837 dbus::ErrorResponse* response) { |
| 827 LOG(ERROR) << "Failed to call StartArcInstance: " | 838 LOG(ERROR) << "Failed to call StartArcInstance: " |
| 828 << (response ? response->ToString() : "(null)"); | 839 << (response ? response->ToString() : "(null)"); |
| 829 if (!callback.is_null()) { | 840 if (!callback.is_null()) { |
| 830 callback.Run(response && response->GetErrorName() == | 841 callback.Run(response && response->GetErrorName() == |
| 831 login_manager::dbus_error::kLowFreeDisk | 842 login_manager::dbus_error::kLowFreeDisk |
| 832 ? StartArcInstanceResult::LOW_FREE_DISK_SPACE | 843 ? StartArcInstanceResult::LOW_FREE_DISK_SPACE |
| 833 : StartArcInstanceResult::UNKNOWN_ERROR); | 844 : StartArcInstanceResult::UNKNOWN_ERROR, |
| 845 std::string()); |
| 834 } | 846 } |
| 835 } | 847 } |
| 836 | 848 |
| 837 dbus::ObjectProxy* session_manager_proxy_ = nullptr; | 849 dbus::ObjectProxy* session_manager_proxy_ = nullptr; |
| 838 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; | 850 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; |
| 839 base::ObserverList<Observer> observers_; | 851 base::ObserverList<Observer> observers_; |
| 840 | 852 |
| 841 // Most recent screen-lock state received from session_manager. | 853 // Most recent screen-lock state received from session_manager. |
| 842 bool screen_is_locked_ = false; | 854 bool screen_is_locked_ = false; |
| 843 | 855 |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1035 } | 1047 } |
| 1036 | 1048 |
| 1037 void CheckArcAvailability(const ArcCallback& callback) override { | 1049 void CheckArcAvailability(const ArcCallback& callback) override { |
| 1038 callback.Run(false); | 1050 callback.Run(false); |
| 1039 } | 1051 } |
| 1040 | 1052 |
| 1041 void StartArcInstance(const cryptohome::Identification& cryptohome_id, | 1053 void StartArcInstance(const cryptohome::Identification& cryptohome_id, |
| 1042 bool disable_boot_completed_broadcast, | 1054 bool disable_boot_completed_broadcast, |
| 1043 bool enable_vendor_privileged, | 1055 bool enable_vendor_privileged, |
| 1044 const StartArcInstanceCallback& callback) override { | 1056 const StartArcInstanceCallback& callback) override { |
| 1045 callback.Run(StartArcInstanceResult::UNKNOWN_ERROR); | 1057 callback.Run(StartArcInstanceResult::UNKNOWN_ERROR, std::string()); |
| 1046 } | 1058 } |
| 1047 | 1059 |
| 1048 void SetArcCpuRestriction( | 1060 void SetArcCpuRestriction( |
| 1049 login_manager::ContainerCpuRestrictionState restriction_state, | 1061 login_manager::ContainerCpuRestrictionState restriction_state, |
| 1050 const ArcCallback& callback) override { | 1062 const ArcCallback& callback) override { |
| 1051 callback.Run(false); | 1063 callback.Run(false); |
| 1052 } | 1064 } |
| 1053 | 1065 |
| 1054 void EmitArcBooted(const cryptohome::Identification& cryptohome_id, | 1066 void EmitArcBooted(const cryptohome::Identification& cryptohome_id, |
| 1055 const ArcCallback& callback) override { | 1067 const ArcCallback& callback) override { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 | 1101 |
| 1090 SessionManagerClient* SessionManagerClient::Create( | 1102 SessionManagerClient* SessionManagerClient::Create( |
| 1091 DBusClientImplementationType type) { | 1103 DBusClientImplementationType type) { |
| 1092 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 1104 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
| 1093 return new SessionManagerClientImpl(); | 1105 return new SessionManagerClientImpl(); |
| 1094 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); | 1106 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); |
| 1095 return new SessionManagerClientStubImpl(); | 1107 return new SessionManagerClientStubImpl(); |
| 1096 } | 1108 } |
| 1097 | 1109 |
| 1098 } // namespace chromeos | 1110 } // namespace chromeos |
| OLD | NEW |