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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "dbus/bus.h" | 10 #include "dbus/bus.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 dbus::MessageWriter writer(&method_call); | 127 dbus::MessageWriter writer(&method_call); |
128 writer.AppendString(""); // Unique ID is deprecated | 128 writer.AppendString(""); // Unique ID is deprecated |
129 session_manager_proxy_->CallMethod( | 129 session_manager_proxy_->CallMethod( |
130 &method_call, | 130 &method_call, |
131 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 131 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
132 base::Bind(&SessionManagerClientImpl::OnStopSession, | 132 base::Bind(&SessionManagerClientImpl::OnStopSession, |
133 weak_ptr_factory_.GetWeakPtr())); | 133 weak_ptr_factory_.GetWeakPtr())); |
134 } | 134 } |
135 | 135 |
136 // SessionManagerClient override. | 136 // SessionManagerClient override. |
137 virtual void RetrieveDevicePolicy(RetrievePolicyCallback callback) OVERRIDE { | 137 virtual void RetrieveDevicePolicy( |
| 138 const RetrievePolicyCallback& callback) OVERRIDE { |
138 CallRetrievePolicy(login_manager::kSessionManagerRetrievePolicy, | 139 CallRetrievePolicy(login_manager::kSessionManagerRetrievePolicy, |
139 callback); | 140 callback); |
140 } | 141 } |
141 | 142 |
142 // SessionManagerClient override. | 143 // SessionManagerClient override. |
143 virtual void RetrieveUserPolicy(RetrievePolicyCallback callback) OVERRIDE { | 144 virtual void RetrieveUserPolicy( |
| 145 const RetrievePolicyCallback& callback) OVERRIDE { |
144 CallRetrievePolicy(login_manager::kSessionManagerRetrieveUserPolicy, | 146 CallRetrievePolicy(login_manager::kSessionManagerRetrieveUserPolicy, |
145 callback); | 147 callback); |
146 } | 148 } |
147 | 149 |
148 // SessionManagerClient override. | 150 // SessionManagerClient override. |
149 virtual void StoreDevicePolicy(const std::string& policy_blob, | 151 virtual void StoreDevicePolicy(const std::string& policy_blob, |
150 StorePolicyCallback callback) OVERRIDE { | 152 const StorePolicyCallback& callback) OVERRIDE { |
151 CallStorePolicy(login_manager::kSessionManagerStorePolicy, | 153 CallStorePolicy(login_manager::kSessionManagerStorePolicy, |
152 policy_blob, callback); | 154 policy_blob, callback); |
153 } | 155 } |
154 | 156 |
155 // SessionManagerClient override. | 157 // SessionManagerClient override. |
156 virtual void StoreUserPolicy(const std::string& policy_blob, | 158 virtual void StoreUserPolicy(const std::string& policy_blob, |
157 StorePolicyCallback callback) OVERRIDE { | 159 const StorePolicyCallback& callback) OVERRIDE { |
158 CallStorePolicy(login_manager::kSessionManagerStoreUserPolicy, | 160 CallStorePolicy(login_manager::kSessionManagerStoreUserPolicy, |
159 policy_blob, callback); | 161 policy_blob, callback); |
160 } | 162 } |
161 | 163 |
162 private: | 164 private: |
163 // Helper for Retrieve{User,Device}Policy. | 165 // Helper for Retrieve{User,Device}Policy. |
164 virtual void CallRetrievePolicy(const std::string& method_name, | 166 virtual void CallRetrievePolicy(const std::string& method_name, |
165 RetrievePolicyCallback callback) { | 167 const RetrievePolicyCallback& callback) { |
166 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, | 168 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, |
167 method_name); | 169 method_name); |
168 session_manager_proxy_->CallMethod( | 170 session_manager_proxy_->CallMethod( |
169 &method_call, | 171 &method_call, |
170 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 172 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
171 base::Bind(&SessionManagerClientImpl::OnRetrievePolicy, | 173 base::Bind(&SessionManagerClientImpl::OnRetrievePolicy, |
172 weak_ptr_factory_.GetWeakPtr(), | 174 weak_ptr_factory_.GetWeakPtr(), |
173 method_name, | 175 method_name, |
174 callback)); | 176 callback)); |
175 } | 177 } |
176 | 178 |
177 // Helper for Store{User,Device}Policy. | 179 // Helper for Store{User,Device}Policy. |
178 virtual void CallStorePolicy(const std::string& method_name, | 180 virtual void CallStorePolicy(const std::string& method_name, |
179 const std::string& policy_blob, | 181 const std::string& policy_blob, |
180 StorePolicyCallback callback) { | 182 const StorePolicyCallback& callback) { |
181 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, | 183 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, |
182 method_name); | 184 method_name); |
183 dbus::MessageWriter writer(&method_call); | 185 dbus::MessageWriter writer(&method_call); |
184 // static_cast does not work due to signedness. | 186 // static_cast does not work due to signedness. |
185 writer.AppendArrayOfBytes( | 187 writer.AppendArrayOfBytes( |
186 reinterpret_cast<const uint8*>(policy_blob.data()), policy_blob.size()); | 188 reinterpret_cast<const uint8*>(policy_blob.data()), policy_blob.size()); |
187 session_manager_proxy_->CallMethod( | 189 session_manager_proxy_->CallMethod( |
188 &method_call, | 190 &method_call, |
189 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 191 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
190 base::Bind(&SessionManagerClientImpl::OnStorePolicy, | 192 base::Bind(&SessionManagerClientImpl::OnStorePolicy, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 // Called when kSessionManagerStopSession method is complete. | 233 // Called when kSessionManagerStopSession method is complete. |
232 void OnStopSession(dbus::Response* response) { | 234 void OnStopSession(dbus::Response* response) { |
233 LOG_IF(ERROR, !response) | 235 LOG_IF(ERROR, !response) |
234 << "Failed to call " | 236 << "Failed to call " |
235 << login_manager::kSessionManagerStopSession; | 237 << login_manager::kSessionManagerStopSession; |
236 } | 238 } |
237 | 239 |
238 // Called when kSessionManagerRetrievePolicy or | 240 // Called when kSessionManagerRetrievePolicy or |
239 // kSessionManagerRetrieveUserPolicy method is complete. | 241 // kSessionManagerRetrieveUserPolicy method is complete. |
240 void OnRetrievePolicy(const std::string& method_name, | 242 void OnRetrievePolicy(const std::string& method_name, |
241 RetrievePolicyCallback callback, | 243 const RetrievePolicyCallback& callback, |
242 dbus::Response* response) { | 244 dbus::Response* response) { |
243 if (!response) { | 245 if (!response) { |
244 LOG(ERROR) << "Failed to call " << method_name; | 246 LOG(ERROR) << "Failed to call " << method_name; |
245 callback.Run(""); | 247 callback.Run(""); |
246 return; | 248 return; |
247 } | 249 } |
248 dbus::MessageReader reader(response); | 250 dbus::MessageReader reader(response); |
249 uint8* values = NULL; | 251 uint8* values = NULL; |
250 size_t length = 0; | 252 size_t length = 0; |
251 if (!reader.PopArrayOfBytes(&values, &length)) { | 253 if (!reader.PopArrayOfBytes(&values, &length)) { |
252 LOG(ERROR) << "Invalid response: " << response->ToString(); | 254 LOG(ERROR) << "Invalid response: " << response->ToString(); |
253 callback.Run(""); | 255 callback.Run(""); |
254 return; | 256 return; |
255 } | 257 } |
256 // static_cast does not work due to signedness. | 258 // static_cast does not work due to signedness. |
257 std::string serialized_proto(reinterpret_cast<char*>(values), length); | 259 std::string serialized_proto(reinterpret_cast<char*>(values), length); |
258 callback.Run(serialized_proto); | 260 callback.Run(serialized_proto); |
259 } | 261 } |
260 | 262 |
261 // Called when kSessionManagerStorePolicy or kSessionManagerStoreUserPolicy | 263 // Called when kSessionManagerStorePolicy or kSessionManagerStoreUserPolicy |
262 // method is complete. | 264 // method is complete. |
263 void OnStorePolicy(const std::string& method_name, | 265 void OnStorePolicy(const std::string& method_name, |
264 StorePolicyCallback callback, | 266 const StorePolicyCallback& callback, |
265 dbus::Response* response) { | 267 dbus::Response* response) { |
266 bool success = false; | 268 bool success = false; |
267 if (!response) { | 269 if (!response) { |
268 LOG(ERROR) << "Failed to call " << method_name; | 270 LOG(ERROR) << "Failed to call " << method_name; |
269 } else { | 271 } else { |
270 dbus::MessageReader reader(response); | 272 dbus::MessageReader reader(response); |
271 if (!reader.PopBool(&success)) | 273 if (!reader.PopBool(&success)) |
272 LOG(ERROR) << "Invalid response: " << response->ToString(); | 274 LOG(ERROR) << "Invalid response: " << response->ToString(); |
273 } | 275 } |
274 callback.Run(success); | 276 callback.Run(success); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 class SessionManagerClientStubImpl : public SessionManagerClient { | 319 class SessionManagerClientStubImpl : public SessionManagerClient { |
318 // SessionManagerClient overrides. | 320 // SessionManagerClient overrides. |
319 virtual void AddObserver(Observer* observer) OVERRIDE {} | 321 virtual void AddObserver(Observer* observer) OVERRIDE {} |
320 virtual void RemoveObserver(Observer* observer) OVERRIDE {} | 322 virtual void RemoveObserver(Observer* observer) OVERRIDE {} |
321 virtual void EmitLoginPromptReady() OVERRIDE {} | 323 virtual void EmitLoginPromptReady() OVERRIDE {} |
322 virtual void EmitLoginPromptVisible() OVERRIDE {} | 324 virtual void EmitLoginPromptVisible() OVERRIDE {} |
323 virtual void RestartJob(int pid, const std::string& command_line) OVERRIDE {} | 325 virtual void RestartJob(int pid, const std::string& command_line) OVERRIDE {} |
324 virtual void RestartEntd() OVERRIDE {} | 326 virtual void RestartEntd() OVERRIDE {} |
325 virtual void StartSession(const std::string& user_email) OVERRIDE {} | 327 virtual void StartSession(const std::string& user_email) OVERRIDE {} |
326 virtual void StopSession() OVERRIDE {} | 328 virtual void StopSession() OVERRIDE {} |
327 virtual void RetrieveDevicePolicy(RetrievePolicyCallback callback) OVERRIDE { | 329 virtual void RetrieveDevicePolicy( |
| 330 const RetrievePolicyCallback& callback) OVERRIDE { |
328 callback.Run(""); | 331 callback.Run(""); |
329 } | 332 } |
330 virtual void RetrieveUserPolicy(RetrievePolicyCallback callback) OVERRIDE { | 333 virtual void RetrieveUserPolicy( |
| 334 const RetrievePolicyCallback& callback) OVERRIDE { |
331 callback.Run(""); | 335 callback.Run(""); |
332 } | 336 } |
333 virtual void StoreDevicePolicy(const std::string& policy_blob, | 337 virtual void StoreDevicePolicy(const std::string& policy_blob, |
334 StorePolicyCallback callback) OVERRIDE { | 338 const StorePolicyCallback& callback) OVERRIDE { |
335 callback.Run(true); | 339 callback.Run(true); |
336 } | 340 } |
337 virtual void StoreUserPolicy(const std::string& policy_blob, | 341 virtual void StoreUserPolicy(const std::string& policy_blob, |
338 StorePolicyCallback callback) OVERRIDE { | 342 const StorePolicyCallback& callback) OVERRIDE { |
339 callback.Run(true); | 343 callback.Run(true); |
340 } | 344 } |
341 }; | 345 }; |
342 | 346 |
343 SessionManagerClient::SessionManagerClient() { | 347 SessionManagerClient::SessionManagerClient() { |
344 } | 348 } |
345 | 349 |
346 SessionManagerClient::~SessionManagerClient() { | 350 SessionManagerClient::~SessionManagerClient() { |
347 } | 351 } |
348 | 352 |
349 SessionManagerClient* SessionManagerClient::Create( | 353 SessionManagerClient* SessionManagerClient::Create( |
350 DBusClientImplementationType type, | 354 DBusClientImplementationType type, |
351 dbus::Bus* bus) { | 355 dbus::Bus* bus) { |
352 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 356 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
353 return new SessionManagerClientImpl(bus); | 357 return new SessionManagerClientImpl(bus); |
354 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); | 358 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); |
355 return new SessionManagerClientStubImpl(); | 359 return new SessionManagerClientStubImpl(); |
356 } | 360 } |
357 | 361 |
358 } // namespace chromeos | 362 } // namespace chromeos |
OLD | NEW |