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)); |