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/cryptohome_client.h" | 5 #include "chromeos/dbus/cryptohome_client.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 async_call_status_data_handler_ = data_handler; | 56 async_call_status_data_handler_ = data_handler; |
57 } | 57 } |
58 | 58 |
59 // CryptohomeClient override. | 59 // CryptohomeClient override. |
60 void ResetAsyncCallStatusHandlers() override { | 60 void ResetAsyncCallStatusHandlers() override { |
61 async_call_status_handler_.Reset(); | 61 async_call_status_handler_.Reset(); |
62 async_call_status_data_handler_.Reset(); | 62 async_call_status_data_handler_.Reset(); |
63 } | 63 } |
64 | 64 |
65 // CryptohomeClient override. | 65 // CryptohomeClient override. |
| 66 void SetLowDiskSpaceHandler(const LowDiskSpaceHandler& handler) override { |
| 67 low_disk_space_handler_ = handler; |
| 68 } |
| 69 |
| 70 // CryptohomeClient override. |
66 void WaitForServiceToBeAvailable( | 71 void WaitForServiceToBeAvailable( |
67 const WaitForServiceToBeAvailableCallback& callback) override { | 72 const WaitForServiceToBeAvailableCallback& callback) override { |
68 proxy_->WaitForServiceToBeAvailable(callback); | 73 proxy_->WaitForServiceToBeAvailable(callback); |
69 } | 74 } |
70 | 75 |
71 // CryptohomeClient override. | 76 // CryptohomeClient override. |
72 void IsMounted(const BoolDBusMethodCallback& callback) override { | 77 void IsMounted(const BoolDBusMethodCallback& callback) override { |
73 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 78 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
74 cryptohome::kCryptohomeIsMounted); | 79 cryptohome::kCryptohomeIsMounted); |
75 CallBoolMethod(&method_call, callback); | 80 CallBoolMethod(&method_call, callback); |
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 weak_ptr_factory_.GetWeakPtr()), | 926 weak_ptr_factory_.GetWeakPtr()), |
922 base::Bind(&CryptohomeClientImpl::OnSignalConnected, | 927 base::Bind(&CryptohomeClientImpl::OnSignalConnected, |
923 weak_ptr_factory_.GetWeakPtr())); | 928 weak_ptr_factory_.GetWeakPtr())); |
924 proxy_->ConnectToSignal( | 929 proxy_->ConnectToSignal( |
925 cryptohome::kCryptohomeInterface, | 930 cryptohome::kCryptohomeInterface, |
926 cryptohome::kSignalAsyncCallStatusWithData, | 931 cryptohome::kSignalAsyncCallStatusWithData, |
927 base::Bind(&CryptohomeClientImpl::OnAsyncCallStatusWithData, | 932 base::Bind(&CryptohomeClientImpl::OnAsyncCallStatusWithData, |
928 weak_ptr_factory_.GetWeakPtr()), | 933 weak_ptr_factory_.GetWeakPtr()), |
929 base::Bind(&CryptohomeClientImpl::OnSignalConnected, | 934 base::Bind(&CryptohomeClientImpl::OnSignalConnected, |
930 weak_ptr_factory_.GetWeakPtr())); | 935 weak_ptr_factory_.GetWeakPtr())); |
| 936 proxy_->ConnectToSignal(cryptohome::kCryptohomeInterface, |
| 937 cryptohome::kSignalLowDiskSpace, |
| 938 base::Bind(&CryptohomeClientImpl::OnLowDiskSpace, |
| 939 weak_ptr_factory_.GetWeakPtr()), |
| 940 base::Bind(&CryptohomeClientImpl::OnSignalConnected, |
| 941 weak_ptr_factory_.GetWeakPtr())); |
931 } | 942 } |
932 | 943 |
933 private: | 944 private: |
934 // Handles the result of AsyncXXX methods. | 945 // Handles the result of AsyncXXX methods. |
935 void OnAsyncMethodCall(const AsyncMethodCallback& callback, | 946 void OnAsyncMethodCall(const AsyncMethodCallback& callback, |
936 dbus::Response* response) { | 947 dbus::Response* response) { |
937 if (!response) { | 948 if (!response) { |
938 callback.Run(kNotReadyAsyncId); | 949 callback.Run(kNotReadyAsyncId); |
939 return; | 950 return; |
940 } | 951 } |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1142 LOG(ERROR) << "Invalid signal: " << signal->ToString(); | 1153 LOG(ERROR) << "Invalid signal: " << signal->ToString(); |
1143 return; | 1154 return; |
1144 } | 1155 } |
1145 if (!async_call_status_data_handler_.is_null()) { | 1156 if (!async_call_status_data_handler_.is_null()) { |
1146 std::string return_data(reinterpret_cast<const char*>(return_data_buffer), | 1157 std::string return_data(reinterpret_cast<const char*>(return_data_buffer), |
1147 return_data_length); | 1158 return_data_length); |
1148 async_call_status_data_handler_.Run(async_id, return_status, return_data); | 1159 async_call_status_data_handler_.Run(async_id, return_status, return_data); |
1149 } | 1160 } |
1150 } | 1161 } |
1151 | 1162 |
| 1163 // Handles LowDiskSpace signal. |
| 1164 void OnLowDiskSpace(dbus::Signal* signal) { |
| 1165 dbus::MessageReader reader(signal); |
| 1166 uint64_t disk_free_bytes = 0; |
| 1167 if (!reader.PopUint64(&disk_free_bytes)) { |
| 1168 LOG(ERROR) << "Invalid signal: " << signal->ToString(); |
| 1169 return; |
| 1170 } |
| 1171 if (!low_disk_space_handler_.is_null()) |
| 1172 low_disk_space_handler_.Run(disk_free_bytes); |
| 1173 } |
| 1174 |
1152 // Handles the result of signal connection setup. | 1175 // Handles the result of signal connection setup. |
1153 void OnSignalConnected(const std::string& interface, | 1176 void OnSignalConnected(const std::string& interface, |
1154 const std::string& signal, | 1177 const std::string& signal, |
1155 bool succeeded) { | 1178 bool succeeded) { |
1156 LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " " << | 1179 LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " " << |
1157 signal << " failed."; | 1180 signal << " failed."; |
1158 } | 1181 } |
1159 | 1182 |
1160 dbus::ObjectProxy* proxy_; | 1183 dbus::ObjectProxy* proxy_; |
1161 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; | 1184 std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; |
1162 AsyncCallStatusHandler async_call_status_handler_; | 1185 AsyncCallStatusHandler async_call_status_handler_; |
1163 AsyncCallStatusWithDataHandler async_call_status_data_handler_; | 1186 AsyncCallStatusWithDataHandler async_call_status_data_handler_; |
| 1187 LowDiskSpaceHandler low_disk_space_handler_; |
1164 | 1188 |
1165 // Note: This should remain the last member so it'll be destroyed and | 1189 // Note: This should remain the last member so it'll be destroyed and |
1166 // invalidate its weak pointers before any other members are destroyed. | 1190 // invalidate its weak pointers before any other members are destroyed. |
1167 base::WeakPtrFactory<CryptohomeClientImpl> weak_ptr_factory_; | 1191 base::WeakPtrFactory<CryptohomeClientImpl> weak_ptr_factory_; |
1168 | 1192 |
1169 DISALLOW_COPY_AND_ASSIGN(CryptohomeClientImpl); | 1193 DISALLOW_COPY_AND_ASSIGN(CryptohomeClientImpl); |
1170 }; | 1194 }; |
1171 | 1195 |
1172 } // namespace | 1196 } // namespace |
1173 | 1197 |
1174 //////////////////////////////////////////////////////////////////////////////// | 1198 //////////////////////////////////////////////////////////////////////////////// |
1175 // CryptohomeClient | 1199 // CryptohomeClient |
1176 | 1200 |
1177 CryptohomeClient::CryptohomeClient() {} | 1201 CryptohomeClient::CryptohomeClient() {} |
1178 | 1202 |
1179 CryptohomeClient::~CryptohomeClient() {} | 1203 CryptohomeClient::~CryptohomeClient() {} |
1180 | 1204 |
1181 // static | 1205 // static |
1182 CryptohomeClient* CryptohomeClient::Create() { | 1206 CryptohomeClient* CryptohomeClient::Create() { |
1183 return new CryptohomeClientImpl(); | 1207 return new CryptohomeClientImpl(); |
1184 } | 1208 } |
1185 | 1209 |
1186 // static | 1210 // static |
1187 std::string CryptohomeClient::GetStubSanitizedUsername( | 1211 std::string CryptohomeClient::GetStubSanitizedUsername( |
1188 const cryptohome::Identification& cryptohome_id) { | 1212 const cryptohome::Identification& cryptohome_id) { |
1189 return cryptohome_id.id() + kUserIdStubHashSuffix; | 1213 return cryptohome_id.id() + kUserIdStubHashSuffix; |
1190 } | 1214 } |
1191 | 1215 |
1192 } // namespace chromeos | 1216 } // namespace chromeos |
OLD | NEW |