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

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

Issue 2841103002: Chromad: Add GetUserStatus call into AuthPolicyClient (Closed)
Patch Set: Fix test build 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 | « chromeos/dbus/auth_policy_client.h ('k') | chromeos/dbus/fake_auth_policy_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "chromeos/dbus/auth_policy_client.h" 4 #include "chromeos/dbus/auth_policy_client.h"
5 5
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "components/signin/core/account_id/account_id.h" 9 #include "components/signin/core/account_id/account_id.h"
10 #include "dbus/bus.h" 10 #include "dbus/bus.h"
(...skipping 15 matching lines...) Expand all
26 int32_t int_error; 26 int32_t int_error;
27 if (!reader->PopInt32(&int_error)) { 27 if (!reader->PopInt32(&int_error)) {
28 DLOG(ERROR) << "AuthPolicyClient: Failed to get an error from the response"; 28 DLOG(ERROR) << "AuthPolicyClient: Failed to get an error from the response";
29 return authpolicy::ERROR_DBUS_FAILURE; 29 return authpolicy::ERROR_DBUS_FAILURE;
30 } 30 }
31 if (int_error < 0 || int_error >= authpolicy::ERROR_COUNT) 31 if (int_error < 0 || int_error >= authpolicy::ERROR_COUNT)
32 return authpolicy::ERROR_UNKNOWN; 32 return authpolicy::ERROR_UNKNOWN;
33 return static_cast<authpolicy::ErrorType>(int_error); 33 return static_cast<authpolicy::ErrorType>(int_error);
34 } 34 }
35 35
36 authpolicy::ErrorType GetErrorAndProto(
37 dbus::Response* response,
38 google::protobuf::MessageLite* protobuf) {
39 if (!response) {
40 DLOG(ERROR) << "Auth: Failed to call to authpolicy";
41 return authpolicy::ERROR_DBUS_FAILURE;
42 }
43 dbus::MessageReader reader(response);
44 const authpolicy::ErrorType error(GetErrorFromReader(&reader));
45
46 if (error != authpolicy::ERROR_NONE)
47 return error;
48
49 if (!reader.PopArrayOfBytesAsProto(protobuf)) {
50 DLOG(ERROR) << "Failed to parse protobuf.";
51 return authpolicy::ERROR_DBUS_FAILURE;
52 }
53 return authpolicy::ERROR_NONE;
54 }
55
36 class AuthPolicyClientImpl : public AuthPolicyClient { 56 class AuthPolicyClientImpl : public AuthPolicyClient {
37 public: 57 public:
38 AuthPolicyClientImpl() : weak_ptr_factory_(this) {} 58 AuthPolicyClientImpl() : weak_ptr_factory_(this) {}
39 59
40 ~AuthPolicyClientImpl() override {} 60 ~AuthPolicyClientImpl() override {}
41 61
42 // AuthPolicyClient override. 62 // AuthPolicyClient override.
43 void JoinAdDomain(const std::string& machine_name, 63 void JoinAdDomain(const std::string& machine_name,
44 const std::string& user_principal_name, 64 const std::string& user_principal_name,
45 int password_fd, 65 int password_fd,
(...skipping 19 matching lines...) Expand all
65 dbus::MessageWriter writer(&method_call); 85 dbus::MessageWriter writer(&method_call);
66 writer.AppendString(user_principal_name); 86 writer.AppendString(user_principal_name);
67 writer.AppendString(object_guid); 87 writer.AppendString(object_guid);
68 writer.AppendFileDescriptor(password_fd); 88 writer.AppendFileDescriptor(password_fd);
69 proxy_->CallMethod( 89 proxy_->CallMethod(
70 &method_call, kSlowDbusTimeoutMilliseconds, 90 &method_call, kSlowDbusTimeoutMilliseconds,
71 base::Bind(&AuthPolicyClientImpl::HandleAuthCallback, 91 base::Bind(&AuthPolicyClientImpl::HandleAuthCallback,
72 weak_ptr_factory_.GetWeakPtr(), base::Passed(&callback))); 92 weak_ptr_factory_.GetWeakPtr(), base::Passed(&callback)));
73 } 93 }
74 94
95 void GetUserStatus(const std::string& object_guid,
96 GetUserStatusCallback callback) override {
97 dbus::MethodCall method_call(authpolicy::kAuthPolicyInterface,
98 authpolicy::kAuthPolicyGetUserStatus);
99 dbus::MessageWriter writer(&method_call);
100 writer.AppendString(object_guid);
101 proxy_->CallMethod(
102 &method_call, kSlowDbusTimeoutMilliseconds,
103 base::Bind(&AuthPolicyClientImpl::HandleGetUserStatusCallback,
104 weak_ptr_factory_.GetWeakPtr(), base::Passed(&callback)));
105 }
106
75 void RefreshDevicePolicy(RefreshPolicyCallback callback) override { 107 void RefreshDevicePolicy(RefreshPolicyCallback callback) override {
76 dbus::MethodCall method_call(authpolicy::kAuthPolicyInterface, 108 dbus::MethodCall method_call(authpolicy::kAuthPolicyInterface,
77 authpolicy::kAuthPolicyRefreshDevicePolicy); 109 authpolicy::kAuthPolicyRefreshDevicePolicy);
78 proxy_->CallMethod( 110 proxy_->CallMethod(
79 &method_call, kSlowDbusTimeoutMilliseconds, 111 &method_call, kSlowDbusTimeoutMilliseconds,
80 base::Bind(&AuthPolicyClientImpl::HandleRefreshPolicyCallback, 112 base::Bind(&AuthPolicyClientImpl::HandleRefreshPolicyCallback,
81 weak_ptr_factory_.GetWeakPtr(), base::Passed(&callback))); 113 weak_ptr_factory_.GetWeakPtr(), base::Passed(&callback)));
82 } 114 }
83 115
84 void RefreshUserPolicy(const AccountId& account_id, 116 void RefreshUserPolicy(const AccountId& account_id,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 DLOG(ERROR) << "Join: Couldn't call to authpolicy"; 152 DLOG(ERROR) << "Join: Couldn't call to authpolicy";
121 std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE); 153 std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE);
122 return; 154 return;
123 } 155 }
124 156
125 dbus::MessageReader reader(response); 157 dbus::MessageReader reader(response);
126 std::move(callback).Run(GetErrorFromReader(&reader)); 158 std::move(callback).Run(GetErrorFromReader(&reader));
127 } 159 }
128 160
129 void HandleAuthCallback(AuthCallback callback, dbus::Response* response) { 161 void HandleAuthCallback(AuthCallback callback, dbus::Response* response) {
130 authpolicy::ActiveDirectoryAccountData account_data; 162 authpolicy::ActiveDirectoryAccountInfo account_info;
131 if (!response) { 163 authpolicy::ErrorType error(GetErrorAndProto(response, &account_info));
132 DLOG(ERROR) << "Auth: Failed to call to authpolicy"; 164 std::move(callback).Run(error, account_info);
133 std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE, account_data); 165 }
134 return; 166
135 } 167 void HandleGetUserStatusCallback(GetUserStatusCallback callback,
136 dbus::MessageReader reader(response); 168 dbus::Response* response) {
137 const authpolicy::ErrorType error(GetErrorFromReader(&reader)); 169 authpolicy::ActiveDirectoryUserStatus user_status;
138 if (!reader.PopArrayOfBytesAsProto(&account_data)) { 170 authpolicy::ErrorType error(GetErrorAndProto(response, &user_status));
139 DLOG(ERROR) << "Failed to parse protobuf."; 171 std::move(callback).Run(error, user_status);
140 std::move(callback).Run(authpolicy::ErrorType::ERROR_DBUS_FAILURE,
141 account_data);
142 return;
143 }
144 std::move(callback).Run(error, account_data);
145 } 172 }
146 173
147 dbus::Bus* bus_ = nullptr; 174 dbus::Bus* bus_ = nullptr;
148 dbus::ObjectProxy* proxy_ = nullptr; 175 dbus::ObjectProxy* proxy_ = nullptr;
149 176
150 // Note: This should remain the last member so it'll be destroyed and 177 // Note: This should remain the last member so it'll be destroyed and
151 // invalidate its weak pointers before any other members are destroyed. 178 // invalidate its weak pointers before any other members are destroyed.
152 base::WeakPtrFactory<AuthPolicyClientImpl> weak_ptr_factory_; 179 base::WeakPtrFactory<AuthPolicyClientImpl> weak_ptr_factory_;
153 180
154 DISALLOW_COPY_AND_ASSIGN(AuthPolicyClientImpl); 181 DISALLOW_COPY_AND_ASSIGN(AuthPolicyClientImpl);
155 }; 182 };
156 183
157 } // namespace 184 } // namespace
158 185
159 AuthPolicyClient::AuthPolicyClient() {} 186 AuthPolicyClient::AuthPolicyClient() {}
160 187
161 AuthPolicyClient::~AuthPolicyClient() {} 188 AuthPolicyClient::~AuthPolicyClient() {}
162 189
163 // static 190 // static
164 AuthPolicyClient* AuthPolicyClient::Create() { 191 AuthPolicyClient* AuthPolicyClient::Create() {
165 return new AuthPolicyClientImpl(); 192 return new AuthPolicyClientImpl();
166 } 193 }
167 194
168 } // namespace chromeos 195 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/auth_policy_client.h ('k') | chromeos/dbus/fake_auth_policy_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698