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

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: Add comment 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
« no previous file with comments | « chromeos/dbus/cryptohome_client.h ('k') | chromeos/dbus/mock_cryptohome_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 (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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 return CallBoolMethodAndBlock(&method_call, owned); 188 return CallBoolMethodAndBlock(&method_call, owned);
189 } 189 }
190 190
191 // CryptohomeClient override. 191 // CryptohomeClient override.
192 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE { 192 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE {
193 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsBeingOwned); 193 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsBeingOwned);
194 return CallBoolMethodAndBlock(&method_call, owning); 194 return CallBoolMethodAndBlock(&method_call, owning);
195 } 195 }
196 196
197 // CryptohomeClient override. 197 // CryptohomeClient override.
198 virtual bool TpmCanAttemptOwnership() OVERRIDE { 198 virtual void TpmCanAttemptOwnership(
199 const VoidMethodCallback& callback) OVERRIDE {
199 INITIALIZE_METHOD_CALL(method_call, 200 INITIALIZE_METHOD_CALL(method_call,
200 cryptohome::kCryptohomeTpmCanAttemptOwnership); 201 cryptohome::kCryptohomeTpmCanAttemptOwnership);
201 scoped_ptr<dbus::Response> response( 202 CallVoidMethod(&method_call, callback);
202 blocking_method_caller_.CallMethodAndBlock(&method_call));
203 return response.get() != NULL;
204 } 203 }
205 204
206 // CryptohomeClient override. 205 // CryptohomeClient override.
207 virtual bool TpmClearStoredPassword() OVERRIDE { 206 virtual bool TpmClearStoredPassword() OVERRIDE {
208 INITIALIZE_METHOD_CALL(method_call, 207 INITIALIZE_METHOD_CALL(method_call,
209 cryptohome::kCryptohomeTpmClearStoredPassword); 208 cryptohome::kCryptohomeTpmClearStoredPassword);
210 scoped_ptr<dbus::Response> response( 209 scoped_ptr<dbus::Response> response(
211 blocking_method_caller_.CallMethodAndBlock(&method_call)); 210 blocking_method_caller_.CallMethodAndBlock(&method_call));
212 return response.get() != NULL; 211 return response.get() != NULL;
213 } 212 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 return; 303 return;
305 dbus::MessageReader reader(response); 304 dbus::MessageReader reader(response);
306 int async_id = 0; 305 int async_id = 0;
307 if (!reader.PopInt32(&async_id)) { 306 if (!reader.PopInt32(&async_id)) {
308 LOG(ERROR) << "Invalid response: " << response->ToString(); 307 LOG(ERROR) << "Invalid response: " << response->ToString();
309 return; 308 return;
310 } 309 }
311 callback.Run(async_id); 310 callback.Run(async_id);
312 } 311 }
313 312
313 // Calls a method without result values.
314 void CallVoidMethod(dbus::MethodCall* method_call,
315 const VoidMethodCallback& callback) {
316 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
317 base::Bind(&CryptohomeClientImpl::OnVoidMethod,
318 weak_ptr_factory_.GetWeakPtr(),
319 callback));
320 }
321
322 void OnVoidMethod(const VoidMethodCallback& callback,
323 dbus::Response* response) {
324 if (!response) {
325 callback.Run(DBUS_METHOD_CALL_FAILURE);
326 return;
327 }
328 callback.Run(DBUS_METHOD_CALL_SUCCESS);
329 }
330
314 // Calls a method with a bool value reult and block. 331 // Calls a method with a bool value reult and block.
315 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call, 332 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call,
316 bool* result) { 333 bool* result) {
317 scoped_ptr<dbus::Response> response( 334 scoped_ptr<dbus::Response> response(
318 blocking_method_caller_.CallMethodAndBlock(method_call)); 335 blocking_method_caller_.CallMethodAndBlock(method_call));
319 if (!response.get()) 336 if (!response.get())
320 return false; 337 return false;
321 dbus::MessageReader reader(response.get()); 338 dbus::MessageReader reader(response.get());
322 return reader.PopBool(result); 339 return reader.PopBool(result);
323 } 340 }
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 return true; 539 return true;
523 } 540 }
524 541
525 // CryptohomeClient override. 542 // CryptohomeClient override.
526 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE { 543 virtual bool TpmIsBeingOwned(bool* owning) OVERRIDE {
527 *owning = true; 544 *owning = true;
528 return true; 545 return true;
529 } 546 }
530 547
531 // CryptohomeClient override. 548 // CryptohomeClient override.
532 virtual bool TpmCanAttemptOwnership() OVERRIDE { return true; } 549 virtual void TpmCanAttemptOwnership(
550 const VoidMethodCallback& callback) OVERRIDE {
551 MessageLoop::current()->PostTask(
552 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
553 }
533 554
534 // CryptohomeClient override. 555 // CryptohomeClient override.
535 virtual bool TpmClearStoredPassword() OVERRIDE { return true; } 556 virtual bool TpmClearStoredPassword() OVERRIDE { return true; }
536 557
537 // CryptohomeClient override. 558 // CryptohomeClient override.
538 virtual void Pkcs11IsTpmTokenReady( 559 virtual void Pkcs11IsTpmTokenReady(
539 const BoolMethodCallback& callback) OVERRIDE { 560 const BoolMethodCallback& callback) OVERRIDE {
540 MessageLoop::current()->PostTask( 561 MessageLoop::current()->PostTask(
541 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); 562 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true));
542 } 563 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 // static 667 // static
647 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type, 668 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type,
648 dbus::Bus* bus) { 669 dbus::Bus* bus) {
649 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 670 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
650 return new CryptohomeClientImpl(bus); 671 return new CryptohomeClientImpl(bus);
651 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 672 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
652 return new CryptohomeClientStubImpl(); 673 return new CryptohomeClientStubImpl();
653 } 674 }
654 675
655 } // namespace chromeos 676 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/cryptohome_client.h ('k') | chromeos/dbus/mock_cryptohome_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698