Index: chrome/browser/devtools/device/usb/android_usb_browsertest.cc |
diff --git a/chrome/browser/devtools/device/usb/android_usb_browsertest.cc b/chrome/browser/devtools/device/usb/android_usb_browsertest.cc |
index 585254680e45d0664f320e6afe14924a1080f05b..ca521784727989ae7749f41807d415d5556458e4 100644 |
--- a/chrome/browser/devtools/device/usb/android_usb_browsertest.cc |
+++ b/chrome/browser/devtools/device/usb/android_usb_browsertest.cc |
@@ -12,9 +12,9 @@ |
#include "chrome/test/base/in_process_browser_test.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/test/test_utils.h" |
-#include "device/usb/usb_descriptors.h" |
#include "device/usb/usb_device.h" |
#include "device/usb/usb_device_handle.h" |
+#include "device/usb/usb_interface.h" |
#include "device/usb/usb_service.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -25,6 +25,7 @@ |
using device::UsbEndpointDescriptor; |
using device::UsbEndpointDirection; |
using device::UsbInterfaceDescriptor; |
+using device::UsbInterfaceAltSettingDescriptor; |
using device::UsbService; |
using device::UsbSynchronizationType; |
using device::UsbTransferCallback; |
@@ -102,6 +103,125 @@ |
return ""; |
} |
+ |
+class MockUsbEndpointDescriptor : public UsbEndpointDescriptor { |
+ public: |
+ virtual int GetAddress() const OVERRIDE { return address_; } |
+ |
+ virtual UsbEndpointDirection GetDirection() const OVERRIDE { |
+ return direction_; |
+ } |
+ |
+ virtual int GetMaximumPacketSize() const OVERRIDE { |
+ return maximum_packet_size_; |
+ } |
+ |
+ virtual UsbSynchronizationType GetSynchronizationType() const OVERRIDE { |
+ return usb_synchronization_type_; |
+ } |
+ |
+ virtual UsbTransferType GetTransferType() const OVERRIDE { |
+ return usb_transfer_type_; |
+ } |
+ virtual UsbUsageType GetUsageType() const OVERRIDE { return usb_usage_type_; } |
+ |
+ virtual int GetPollingInterval() const OVERRIDE { return polling_interval_; } |
+ |
+ int address_; |
+ UsbEndpointDirection direction_; |
+ int maximum_packet_size_; |
+ UsbSynchronizationType usb_synchronization_type_; |
+ UsbTransferType usb_transfer_type_; |
+ UsbUsageType usb_usage_type_; |
+ int polling_interval_; |
+ |
+ private: |
+ virtual ~MockUsbEndpointDescriptor() {} |
+}; |
+ |
+template <class T> |
+class MockUsbInterfaceAltSettingDescriptor |
+ : public UsbInterfaceAltSettingDescriptor { |
+ public: |
+ MockUsbInterfaceAltSettingDescriptor(int interface_number, |
+ int alternate_setting) |
+ : interface_number_(interface_number), |
+ alternate_setting_(alternate_setting) {} |
+ |
+ virtual size_t GetNumEndpoints() const OVERRIDE { |
+ // See IsAndroidInterface function in android_usb_device.cc |
+ return 2; |
+ } |
+ |
+ virtual scoped_refptr<const UsbEndpointDescriptor> GetEndpoint( |
+ size_t index) const OVERRIDE { |
+ EXPECT_GT(static_cast<size_t>(2), index); |
+ MockUsbEndpointDescriptor* result = new MockUsbEndpointDescriptor(); |
+ result->address_ = index + 1; |
+ result->usb_transfer_type_ = device::USB_TRANSFER_BULK; |
+ result->direction_ = ((index == 0) ? device::USB_DIRECTION_INBOUND |
+ : device::USB_DIRECTION_OUTBOUND); |
+ result->maximum_packet_size_ = 1 << 20; // 1Mb maximum packet size |
+ return result; |
+ } |
+ |
+ virtual int GetInterfaceNumber() const OVERRIDE { return interface_number_; } |
+ |
+ virtual int GetAlternateSetting() const OVERRIDE { |
+ return alternate_setting_; |
+ } |
+ |
+ virtual int GetInterfaceClass() const OVERRIDE { return T::kClass; } |
+ |
+ virtual int GetInterfaceSubclass() const OVERRIDE { return T::kSubclass; } |
+ |
+ virtual int GetInterfaceProtocol() const OVERRIDE { return T::kProtocol; } |
+ |
+ protected: |
+ virtual ~MockUsbInterfaceAltSettingDescriptor() {}; |
+ |
+ private: |
+ const int interface_number_; |
+ const int alternate_setting_; |
+}; |
+ |
+template <class T> |
+class MockUsbInterfaceDescriptor : public UsbInterfaceDescriptor { |
+ public: |
+ explicit MockUsbInterfaceDescriptor(int interface_number) |
+ : interface_number_(interface_number) {} |
+ |
+ virtual size_t GetNumAltSettings() const OVERRIDE { |
+ // See IsAndroidInterface function in android_usb_device.cc |
+ return 1; |
+ } |
+ virtual scoped_refptr<const UsbInterfaceAltSettingDescriptor> GetAltSetting( |
+ size_t index) const OVERRIDE { |
+ EXPECT_EQ(static_cast<size_t>(0), index); |
+ return new MockUsbInterfaceAltSettingDescriptor<T>(interface_number_, 0); |
+ } |
+ |
+ protected: |
+ const int interface_number_; |
+ virtual ~MockUsbInterfaceDescriptor() {} |
+}; |
+ |
+template <class T> |
+class MockUsbConfigDescriptor : public UsbConfigDescriptor { |
+ public: |
+ MockUsbConfigDescriptor() {} |
+ |
+ virtual size_t GetNumInterfaces() const OVERRIDE { return 1; } |
+ |
+ virtual scoped_refptr<const UsbInterfaceDescriptor> GetInterface( |
+ size_t index) const OVERRIDE { |
+ EXPECT_EQ(static_cast<size_t>(0), index); |
+ return new MockUsbInterfaceDescriptor<T>(index); |
+ } |
+ |
+ protected: |
+ virtual ~MockUsbConfigDescriptor() {}; |
+}; |
template <class T> |
class MockUsbDevice; |
@@ -347,37 +467,14 @@ |
template <class T> |
class MockUsbDevice : public UsbDevice { |
public: |
- MockUsbDevice() : UsbDevice(0, 0, 0) { |
- UsbEndpointDescriptor bulk_in; |
- bulk_in.address = 0x81; |
- bulk_in.direction = device::USB_DIRECTION_INBOUND; |
- bulk_in.maximum_packet_size = 512; |
- bulk_in.transfer_type = device::USB_TRANSFER_BULK; |
- |
- UsbEndpointDescriptor bulk_out; |
- bulk_out.address = 0x01; |
- bulk_out.direction = device::USB_DIRECTION_OUTBOUND; |
- bulk_out.maximum_packet_size = 512; |
- bulk_out.transfer_type = device::USB_TRANSFER_BULK; |
- |
- UsbInterfaceDescriptor interface_desc; |
- interface_desc.interface_number = 0; |
- interface_desc.alternate_setting = 0; |
- interface_desc.interface_class = T::kClass; |
- interface_desc.interface_subclass = T::kSubclass; |
- interface_desc.interface_protocol = T::kProtocol; |
- interface_desc.endpoints.push_back(bulk_in); |
- interface_desc.endpoints.push_back(bulk_out); |
- |
- config_desc_.interfaces.push_back(interface_desc); |
- } |
+ MockUsbDevice() : UsbDevice(0, 0, 0) {} |
virtual scoped_refptr<UsbDeviceHandle> Open() OVERRIDE { |
return new MockUsbDeviceHandle<T>(this); |
} |
- virtual const UsbConfigDescriptor& GetConfiguration() OVERRIDE { |
- return config_desc_; |
+ virtual scoped_refptr<UsbConfigDescriptor> ListInterfaces() OVERRIDE { |
+ return new MockUsbConfigDescriptor<T>(); |
} |
virtual bool Close(scoped_refptr<UsbDeviceHandle> handle) OVERRIDE { |
@@ -400,9 +497,6 @@ |
protected: |
virtual ~MockUsbDevice() {} |
- |
- private: |
- UsbConfigDescriptor config_desc_; |
}; |
class MockUsbService : public UsbService { |