Chromium Code Reviews| Index: chromeos/dbus/session_manager_client.cc |
| diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc |
| index 9e87be84e0a371296c29620fa4930b9e484d6049..5f1bce63c752f651d3d2d81b75973d507cfffe91 100644 |
| --- a/chromeos/dbus/session_manager_client.cc |
| +++ b/chromeos/dbus/session_manager_client.cc |
| @@ -229,6 +229,15 @@ class SessionManagerClientImpl : public SessionManagerClient { |
| callback); |
| } |
| + void RetrievePolicyForUserWithErrorCallback( |
| + const cryptohome::Identification& cryptohome_id, |
| + const RetrievePolicyCallback& callback, |
| + const ErrorCallback& error_callback) override { |
| + CallRetrievePolicyByUsernameWithErrorCallback( |
| + login_manager::kSessionManagerRetrievePolicyForUser, cryptohome_id.id(), |
| + callback, error_callback); |
| + } |
| + |
| std::string BlockingRetrievePolicyForUser( |
| const cryptohome::Identification& cryptohome_id) override { |
| dbus::MethodCall method_call( |
| @@ -505,6 +514,23 @@ class SessionManagerClientImpl : public SessionManagerClient { |
| callback)); |
| } |
| + void CallRetrievePolicyByUsernameWithErrorCallback( |
| + const std::string& method_name, |
| + const std::string& account_id, |
| + const RetrievePolicyCallback& callback, |
| + const ErrorCallback& error_callback) { |
| + dbus::MethodCall method_call(login_manager::kSessionManagerInterface, |
| + method_name); |
| + dbus::MessageWriter writer(&method_call); |
| + writer.AppendString(account_id); |
|
Daniel Erat
2017/04/10 18:59:26
please avoid copy-and-pasting code (i.e. the exist
igorcov
2017/04/18 10:23:18
Done.
|
| + session_manager_proxy_->CallMethodWithErrorCallback( |
| + &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| + base::Bind(&SessionManagerClientImpl::OnRetrievePolicy, |
| + weak_ptr_factory_.GetWeakPtr(), method_name, callback), |
| + base::Bind(&SessionManagerClientImpl::OnRetrievePolicyWithError, |
| + weak_ptr_factory_.GetWeakPtr(), error_callback)); |
| + } |
| + |
| void CallStorePolicyByUsername(const std::string& method_name, |
| const std::string& account_id, |
| const std::string& policy_blob, |
| @@ -623,6 +649,16 @@ class SessionManagerClientImpl : public SessionManagerClient { |
| callback.Run(serialized_proto); |
| } |
| + void OnRetrievePolicyWithError(const ErrorCallback& callback, |
| + dbus::ErrorResponse* response) { |
| + std::string error_name; |
| + std::string error_message; |
| + dbus::MessageReader reader(response); |
| + error_name = response->GetErrorName(); |
| + reader.PopString(&error_message); |
| + callback.Run(error_name, error_message); |
| + } |
| + |
| // Called when kSessionManagerStorePolicy or kSessionManagerStorePolicyForUser |
| // method is complete. |
| void OnStorePolicy(const std::string& method_name, |
| @@ -894,6 +930,12 @@ class SessionManagerClientStubImpl : public SessionManagerClient { |
| GetUserFilePath(cryptohome_id, kStubPolicyFile)), |
| callback); |
| } |
| + void RetrievePolicyForUserWithErrorCallback( |
| + const cryptohome::Identification& cryptohome_id, |
| + const RetrievePolicyCallback& callback, |
| + const ErrorCallback& error_callback) override { |
| + RetrievePolicyForUser(cryptohome_id, callback); |
| + } |
| std::string BlockingRetrievePolicyForUser( |
| const cryptohome::Identification& cryptohome_id) override { |
| return GetFileContent(GetUserFilePath(cryptohome_id, kStubPolicyFile)); |