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

Side by Side Diff: chrome/browser/extensions/api/usb/usb_api.cc

Issue 19981004: Remove callbacks on USB manipulation methods. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser_tests Created 7 years, 5 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 "chrome/browser/extensions/api/usb/usb_api.h" 5 #include "chrome/browser/extensions/api/usb/usb_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 481
482 void UsbListInterfacesFunction::AsyncWorkStart() { 482 void UsbListInterfacesFunction::AsyncWorkStart() {
483 UsbDeviceResource* const resource = GetUsbDeviceResource( 483 UsbDeviceResource* const resource = GetUsbDeviceResource(
484 parameters_->device.handle); 484 parameters_->device.handle);
485 if (!resource) { 485 if (!resource) {
486 CompleteWithError(kErrorNoDevice); 486 CompleteWithError(kErrorNoDevice);
487 return; 487 return;
488 } 488 }
489 489
490 config_ = new UsbConfigDescriptor(); 490 config_ = new UsbConfigDescriptor();
491 resource->device()->ListInterfaces( 491 BrowserThread::PostTaskAndReplyWithResult(
492 config_.get(), base::Bind(&UsbListInterfacesFunction::OnCompleted, this)); 492 BrowserThread::FILE,
493 FROM_HERE,
494 base::Bind(&UsbDeviceHandle::ListInterfaces,
495 resource->device(),
496 config_),
497 base::Bind(&UsbListInterfacesFunction::OnCompleted, this));
493 } 498 }
494 499
495 void UsbListInterfacesFunction::OnCompleted(bool success) { 500 void UsbListInterfacesFunction::OnCompleted(bool success) {
496 if (!success) { 501 if (!success) {
497 SetError(kErrorCannotListInterfaces); 502 SetError(kErrorCannotListInterfaces);
498 AsyncWorkCompleted(); 503 AsyncWorkCompleted();
499 return; 504 return;
500 } 505 }
501 506
502 result_.reset(new base::ListValue()); 507 result_.reset(new base::ListValue());
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 } 610 }
606 611
607 void UsbCloseDeviceFunction::AsyncWorkStart() { 612 void UsbCloseDeviceFunction::AsyncWorkStart() {
608 UsbDeviceResource* const resource = GetUsbDeviceResource( 613 UsbDeviceResource* const resource = GetUsbDeviceResource(
609 parameters_->device.handle); 614 parameters_->device.handle);
610 if (!resource) { 615 if (!resource) {
611 CompleteWithError(kErrorNoDevice); 616 CompleteWithError(kErrorNoDevice);
612 return; 617 return;
613 } 618 }
614 619
615 resource->device()->Close(base::Bind(&UsbCloseDeviceFunction::OnCompleted, 620 BrowserThread::PostTaskAndReply(
616 this)); 621 BrowserThread::FILE,
622 FROM_HERE,
623 base::Bind(&UsbDeviceHandle::Close, resource->device()),
624 base::Bind(&UsbCloseDeviceFunction::OnCompleted, this));
617 RemoveUsbDeviceResource(parameters_->device.handle); 625 RemoveUsbDeviceResource(parameters_->device.handle);
618 } 626 }
619 627
620 void UsbCloseDeviceFunction::OnCompleted() { 628 void UsbCloseDeviceFunction::OnCompleted() {
621 AsyncWorkCompleted(); 629 AsyncWorkCompleted();
622 } 630 }
623 631
624 UsbClaimInterfaceFunction::UsbClaimInterfaceFunction() {} 632 UsbClaimInterfaceFunction::UsbClaimInterfaceFunction() {}
625 633
626 UsbClaimInterfaceFunction::~UsbClaimInterfaceFunction() {} 634 UsbClaimInterfaceFunction::~UsbClaimInterfaceFunction() {}
627 635
628 bool UsbClaimInterfaceFunction::Prepare() { 636 bool UsbClaimInterfaceFunction::Prepare() {
629 parameters_ = ClaimInterface::Params::Create(*args_); 637 parameters_ = ClaimInterface::Params::Create(*args_);
630 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 638 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
631 return true; 639 return true;
632 } 640 }
633 641
634 void UsbClaimInterfaceFunction::AsyncWorkStart() { 642 void UsbClaimInterfaceFunction::AsyncWorkStart() {
635 UsbDeviceResource* resource = 643 UsbDeviceResource* resource =
636 GetUsbDeviceResource(parameters_->device.handle); 644 GetUsbDeviceResource(parameters_->device.handle);
637 if (!resource) { 645 if (!resource) {
638 CompleteWithError(kErrorNoDevice); 646 CompleteWithError(kErrorNoDevice);
639 return; 647 return;
640 } 648 }
641 649
642 resource->device()->ClaimInterface(parameters_->interface_number, 650 BrowserThread::PostTaskAndReplyWithResult(
651 BrowserThread::FILE,
652 FROM_HERE,
653 base::Bind(&UsbDeviceHandle::ClaimInterface,
654 resource->device(),
655 parameters_->interface_number),
643 base::Bind(&UsbClaimInterfaceFunction::OnCompleted, this)); 656 base::Bind(&UsbClaimInterfaceFunction::OnCompleted, this));
644 } 657 }
645 658
646 void UsbClaimInterfaceFunction::OnCompleted(bool success) { 659 void UsbClaimInterfaceFunction::OnCompleted(bool success) {
647 if (!success) 660 if (!success)
648 SetError(kErrorCannotClaimInterface); 661 SetError(kErrorCannotClaimInterface);
649 AsyncWorkCompleted(); 662 AsyncWorkCompleted();
650 } 663 }
651 664
652 UsbReleaseInterfaceFunction::UsbReleaseInterfaceFunction() {} 665 UsbReleaseInterfaceFunction::UsbReleaseInterfaceFunction() {}
653 666
654 UsbReleaseInterfaceFunction::~UsbReleaseInterfaceFunction() {} 667 UsbReleaseInterfaceFunction::~UsbReleaseInterfaceFunction() {}
655 668
656 bool UsbReleaseInterfaceFunction::Prepare() { 669 bool UsbReleaseInterfaceFunction::Prepare() {
657 parameters_ = ReleaseInterface::Params::Create(*args_); 670 parameters_ = ReleaseInterface::Params::Create(*args_);
658 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 671 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
659 return true; 672 return true;
660 } 673 }
661 674
662 void UsbReleaseInterfaceFunction::AsyncWorkStart() { 675 void UsbReleaseInterfaceFunction::AsyncWorkStart() {
663 UsbDeviceResource* resource = 676 UsbDeviceResource* resource =
664 GetUsbDeviceResource(parameters_->device.handle); 677 GetUsbDeviceResource(parameters_->device.handle);
665 if (!resource) { 678 if (!resource) {
666 CompleteWithError(kErrorNoDevice); 679 CompleteWithError(kErrorNoDevice);
667 return; 680 return;
668 } 681 }
669 682
670 resource->device()->ReleaseInterface(parameters_->interface_number, 683 BrowserThread::PostTaskAndReplyWithResult(
684 BrowserThread::FILE,
685 FROM_HERE,
686 base::Bind(&UsbDeviceHandle::ReleaseInterface,
687 resource->device(),
688 parameters_->interface_number),
671 base::Bind(&UsbReleaseInterfaceFunction::OnCompleted, this)); 689 base::Bind(&UsbReleaseInterfaceFunction::OnCompleted, this));
672 } 690 }
673 691
674 void UsbReleaseInterfaceFunction::OnCompleted(bool success) { 692 void UsbReleaseInterfaceFunction::OnCompleted(bool success) {
675 if (!success) 693 if (!success)
676 SetError(kErrorCannotReleaseInterface); 694 SetError(kErrorCannotReleaseInterface);
677 AsyncWorkCompleted(); 695 AsyncWorkCompleted();
678 } 696 }
679 697
680 UsbSetInterfaceAlternateSettingFunction:: 698 UsbSetInterfaceAlternateSettingFunction::
681 UsbSetInterfaceAlternateSettingFunction() {} 699 UsbSetInterfaceAlternateSettingFunction() {}
682 700
683 UsbSetInterfaceAlternateSettingFunction:: 701 UsbSetInterfaceAlternateSettingFunction::
684 ~UsbSetInterfaceAlternateSettingFunction() {} 702 ~UsbSetInterfaceAlternateSettingFunction() {}
685 703
686 bool UsbSetInterfaceAlternateSettingFunction::Prepare() { 704 bool UsbSetInterfaceAlternateSettingFunction::Prepare() {
687 parameters_ = SetInterfaceAlternateSetting::Params::Create(*args_); 705 parameters_ = SetInterfaceAlternateSetting::Params::Create(*args_);
688 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 706 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
689 return true; 707 return true;
690 } 708 }
691 709
692 void UsbSetInterfaceAlternateSettingFunction::AsyncWorkStart() { 710 void UsbSetInterfaceAlternateSettingFunction::AsyncWorkStart() {
693 UsbDeviceResource* resource = 711 UsbDeviceResource* resource =
694 GetUsbDeviceResource(parameters_->device.handle); 712 GetUsbDeviceResource(parameters_->device.handle);
695 if (!resource) { 713 if (!resource) {
696 CompleteWithError(kErrorNoDevice); 714 CompleteWithError(kErrorNoDevice);
697 return; 715 return;
698 } 716 }
699 717
700 resource->device()->SetInterfaceAlternateSetting( 718 BrowserThread::PostTaskAndReplyWithResult(
701 parameters_->interface_number, 719 BrowserThread::FILE,
702 parameters_->alternate_setting, 720 FROM_HERE,
721 base::Bind(&UsbDeviceHandle::SetInterfaceAlternateSetting,
722 resource->device(),
723 parameters_->interface_number,
724 parameters_->alternate_setting),
703 base::Bind(&UsbSetInterfaceAlternateSettingFunction::OnCompleted, this)); 725 base::Bind(&UsbSetInterfaceAlternateSettingFunction::OnCompleted, this));
704 } 726 }
705 727
706 void UsbSetInterfaceAlternateSettingFunction::OnCompleted(bool success) { 728 void UsbSetInterfaceAlternateSettingFunction::OnCompleted(bool success) {
707 if (!success) 729 if (!success)
708 SetError(kErrorCannotSetInterfaceAlternateSetting); 730 SetError(kErrorCannotSetInterfaceAlternateSetting);
709 AsyncWorkCompleted(); 731 AsyncWorkCompleted();
710 } 732 }
711 733
712 UsbControlTransferFunction::UsbControlTransferFunction() {} 734 UsbControlTransferFunction::UsbControlTransferFunction() {}
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 return; 971 return;
950 } 972 }
951 973
952 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 974 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
953 base::Bind(&UsbResetDeviceFunction::OnStartResest, 975 base::Bind(&UsbResetDeviceFunction::OnStartResest,
954 this, resource)); 976 this, resource));
955 } 977 }
956 978
957 void UsbResetDeviceFunction::OnStartResest(UsbDeviceResource* resource) { 979 void UsbResetDeviceFunction::OnStartResest(UsbDeviceResource* resource) {
958 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 980 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
959 resource->device()->ResetDevice( 981 OnCompletedFileThread(resource->device()->ResetDevice());
960 base::Bind(&UsbResetDeviceFunction::OnCompletedFileThread, this));
961 } 982 }
962 983
963 void UsbResetDeviceFunction::OnCompletedFileThread(bool success) { 984 void UsbResetDeviceFunction::OnCompletedFileThread(bool success) {
964 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 985 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
965 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 986 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
966 base::Bind(&UsbResetDeviceFunction::OnCompleted, 987 base::Bind(&UsbResetDeviceFunction::OnCompleted,
967 this, success)); 988 this, success));
968 return; 989 return;
969 } 990 }
970 991
971 void UsbResetDeviceFunction::OnCompleted(bool success) { 992 void UsbResetDeviceFunction::OnCompleted(bool success) {
972 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 993 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
973 if (!success) { 994 if (!success) {
974 UsbDeviceResource* const resource = GetUsbDeviceResource( 995 UsbDeviceResource* const resource = GetUsbDeviceResource(
975 parameters_->device.handle); 996 parameters_->device.handle);
976 if (!resource) { 997 if (!resource) {
977 CompleteWithError(kErrorNoDevice); 998 CompleteWithError(kErrorNoDevice);
978 return; 999 return;
979 } 1000 }
980 // Close the device now because the handle is invalid after an 1001 // Close the device now because the handle is invalid after an
981 // unsuccessful reset. 1002 // unsuccessful reset.
982 resource->device()->Close( 1003 BrowserThread::PostTaskAndReply(
983 base::Bind(&UsbResetDeviceFunction::OnError, this)); 1004 BrowserThread::FILE,
1005 FROM_HERE,
1006 base::Bind(&UsbDeviceHandle::Close,
1007 resource->device()),
1008 base::Bind(&UsbResetDeviceFunction::OnError, this));
984 return; 1009 return;
985 } 1010 }
986 SetResult(Value::CreateBooleanValue(true)); 1011 SetResult(Value::CreateBooleanValue(true));
987 AsyncWorkCompleted(); 1012 AsyncWorkCompleted();
988 } 1013 }
989 1014
990 void UsbResetDeviceFunction::OnError() { 1015 void UsbResetDeviceFunction::OnError() {
991 RemoveUsbDeviceResource(parameters_->device.handle); 1016 RemoveUsbDeviceResource(parameters_->device.handle);
992 SetError(kErrorResetDevice); 1017 SetError(kErrorResetDevice);
993 SetResult(Value::CreateBooleanValue(false)); 1018 SetResult(Value::CreateBooleanValue(false));
994 AsyncWorkCompleted(); 1019 AsyncWorkCompleted();
995 } 1020 }
996 1021
997 } // namespace extensions 1022 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/devtools/adb/android_usb_device.cc ('k') | chrome/browser/extensions/api/usb/usb_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698