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

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

Issue 10830033: Convert chromeos::CryptohomeClient::TpmCanAttemptOwnership to asynchronous (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "chromeos/dbus/blocking_method_caller.h" 9 #include "chromeos/dbus/blocking_method_caller.h"
10 #include "dbus/bus.h" 10 #include "dbus/bus.h"
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 return CallBoolMethodAndBlock(&method_call, owned); 196 return CallBoolMethodAndBlock(&method_call, owned);
197 } 197 }
198 198
199 // CryptohomeClient override. 199 // CryptohomeClient override.
200 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE { 200 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE {
201 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsBeingOwned); 201 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsBeingOwned);
202 return CallBoolMethodAndBlock(&method_call, owning); 202 return CallBoolMethodAndBlock(&method_call, owning);
203 } 203 }
204 204
205 // CryptohomeClient override. 205 // CryptohomeClient override.
206 virtual bool TpmCanAttemptOwnership() OVERRIDE { 206 virtual void TpmCanAttemptOwnership(
207 const VoidMethodCallback& callback) OVERRIDE {
207 INITIALIZE_METHOD_CALL(method_call, 208 INITIALIZE_METHOD_CALL(method_call,
208 cryptohome::kCryptohomeTpmCanAttemptOwnership); 209 cryptohome::kCryptohomeTpmCanAttemptOwnership);
209 scoped_ptr<dbus::Response> response( 210 CallVoidMethod(&method_call, callback);
210 blocking_method_caller_.CallMethodAndBlock(&method_call));
211 return response.get() != NULL;
212 } 211 }
213 212
214 // CryptohomeClient override. 213 // CryptohomeClient override.
215 virtual bool TpmClearStoredPassword() OVERRIDE { 214 virtual bool TpmClearStoredPassword() OVERRIDE {
216 INITIALIZE_METHOD_CALL(method_call, 215 INITIALIZE_METHOD_CALL(method_call,
217 cryptohome::kCryptohomeTpmClearStoredPassword); 216 cryptohome::kCryptohomeTpmClearStoredPassword);
218 scoped_ptr<dbus::Response> response( 217 scoped_ptr<dbus::Response> response(
219 blocking_method_caller_.CallMethodAndBlock(&method_call)); 218 blocking_method_caller_.CallMethodAndBlock(&method_call));
220 return response.get() != NULL; 219 return response.get() != NULL;
221 } 220 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 return; 316 return;
318 dbus::MessageReader reader(response); 317 dbus::MessageReader reader(response);
319 int async_id = 0; 318 int async_id = 0;
320 if (!reader.PopInt32(&async_id)) { 319 if (!reader.PopInt32(&async_id)) {
321 LOG(ERROR) << "Invalid response: " << response->ToString(); 320 LOG(ERROR) << "Invalid response: " << response->ToString();
322 return; 321 return;
323 } 322 }
324 callback.Run(async_id); 323 callback.Run(async_id);
325 } 324 }
326 325
326 // Calls a method without result values.
327 void CallVoidMethod(dbus::MethodCall* method_call,
328 const VoidMethodCallback& callback) {
329 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
330 base::Bind(&CryptohomeClientImpl::OnVoidMethod,
331 weak_ptr_factory_.GetWeakPtr(),
332 callback));
333 }
334
335 void OnVoidMethod(const VoidMethodCallback& callback,
336 dbus::Response* response) {
337 if (!response) {
338 callback.Run(DBUS_METHOD_CALL_FAILURE);
339 return;
340 }
341 callback.Run(DBUS_METHOD_CALL_SUCCESS);
342 }
343
327 // Calls a method with a bool value reult and block. 344 // Calls a method with a bool value reult and block.
328 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call, 345 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call,
329 bool* result) { 346 bool* result) {
330 scoped_ptr<dbus::Response> response( 347 scoped_ptr<dbus::Response> response(
331 blocking_method_caller_.CallMethodAndBlock(method_call)); 348 blocking_method_caller_.CallMethodAndBlock(method_call));
332 if (!response.get()) 349 if (!response.get())
333 return false; 350 return false;
334 dbus::MessageReader reader(response.get()); 351 dbus::MessageReader reader(response.get());
335 return reader.PopBool(result); 352 return reader.PopBool(result);
336 } 353 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 return true; 542 return true;
526 } 543 }
527 544
528 // CryptohomeClient override. 545 // CryptohomeClient override.
529 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE { 546 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE {
530 *owning = true; 547 *owning = true;
531 return true; 548 return true;
532 } 549 }
533 550
534 // CryptohomeClient override. 551 // CryptohomeClient override.
535 virtual bool TpmCanAttemptOwnership() OVERRIDE { return true; } 552 virtual void TpmCanAttemptOwnership(
553 const VoidMethodCallback& callback) OVERRIDE {
554 MessageLoop::current()->PostTask(
555 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
556 }
536 557
537 // CryptohomeClient override. 558 // CryptohomeClient override.
538 virtual bool TpmClearStoredPassword() OVERRIDE { return true; } 559 virtual bool TpmClearStoredPassword() OVERRIDE { return true; }
539 560
540 // CryptohomeClient override. 561 // CryptohomeClient override.
541 virtual void Pkcs11IsTpmTokenReady( 562 virtual void Pkcs11IsTpmTokenReady(
542 const BoolMethodCallback& callback) OVERRIDE { 563 const BoolMethodCallback& callback) OVERRIDE {
543 MessageLoop::current()->PostTask( 564 MessageLoop::current()->PostTask(
544 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); 565 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true));
545 } 566 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 // static 670 // static
650 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type, 671 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type,
651 dbus::Bus* bus) { 672 dbus::Bus* bus) {
652 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 673 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
653 return new CryptohomeClientImpl(bus); 674 return new CryptohomeClientImpl(bus);
654 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 675 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
655 return new CryptohomeClientStubImpl(); 676 return new CryptohomeClientStubImpl();
656 } 677 }
657 678
658 } // namespace chromeos 679 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698