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

Unified Diff: chrome/browser/extensions/api/usb/usb_apitest.cc

Issue 258783002: Extracted UsbService as interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed chromeos issue. Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/usb/usb_apitest.cc
diff --git a/chrome/browser/extensions/api/usb/usb_apitest.cc b/chrome/browser/extensions/api/usb/usb_apitest.cc
index 4f2d72faf5560efd7a00aea6364ba092136eab2f..da67ff7eee4f36edcd8fec6ad21472f4a8f409da 100644
--- a/chrome/browser/extensions/api/usb/usb_apitest.cc
+++ b/chrome/browser/extensions/api/usb/usb_apitest.cc
@@ -5,7 +5,9 @@
#include "chrome/browser/extensions/api/usb/usb_api.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/ui/browser.h"
+#include "components/usb_service/usb_service.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/test/test_utils.h"
#include "net/base/io_buffer.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -17,6 +19,7 @@ using usb_service::UsbConfigDescriptor;
using usb_service::UsbDevice;
using usb_service::UsbDeviceHandle;
using usb_service::UsbEndpointDirection;
+using usb_service::UsbService;
using usb_service::UsbTransferCallback;
namespace {
@@ -68,6 +71,14 @@ class MockUsbDeviceHandle : public UsbDeviceHandle {
virtual ~MockUsbDeviceHandle() {}
};
+class MockUsbConfigDescriptor : public UsbConfigDescriptor {
+ public:
+ MOCK_CONST_METHOD0(GetNumInterfaces, size_t());
+
+ protected:
+ virtual ~MockUsbConfigDescriptor() {}
+};
+
class MockUsbDevice : public UsbDevice {
public:
explicit MockUsbDevice(MockUsbDeviceHandle* mock_handle)
@@ -85,6 +96,15 @@ class MockUsbDevice : public UsbDevice {
return false;
}
+#if defined(OS_CHROMEOS)
+ virtual void RequestUsbAcess(
+ int interface_id,
+ const base::Callback<void(bool success)>& callback) OVERRIDE {
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE, base::Bind(callback, true));
+ }
+#endif // OS_CHROMEOS
+
MOCK_METHOD0(ListInterfaces, scoped_refptr<UsbConfigDescriptor>());
private:
@@ -92,6 +112,25 @@ class MockUsbDevice : public UsbDevice {
virtual ~MockUsbDevice() {}
};
+class MockUsbService : public UsbService {
+ public:
+ explicit MockUsbService(scoped_refptr<UsbDevice> device) : device_(device) {}
+
+ protected:
+ virtual scoped_refptr<UsbDevice> GetDeviceById(uint32 unique_id) OVERRIDE {
+ EXPECT_EQ(unique_id, 0U);
+ return device_;
+ }
+
+ virtual void GetDevices(
+ std::vector<scoped_refptr<UsbDevice> >* devices) OVERRIDE {
+ STLClearObject(devices);
+ devices->push_back(device_);
+ }
+
+ scoped_refptr<UsbDevice> device_;
+};
+
#if defined(OS_WIN)
#pragma warning(pop)
#endif
@@ -101,7 +140,29 @@ class UsbApiTest : public ExtensionApiTest {
virtual void SetUpOnMainThread() OVERRIDE {
mock_device_handle_ = new MockUsbDeviceHandle();
mock_device_ = new MockUsbDevice(mock_device_handle_.get());
- extensions::UsbGetDevicesFunction::SetDeviceForTest(mock_device_.get());
+ scoped_refptr<content::MessageLoopRunner> runner =
+ new content::MessageLoopRunner;
+ BrowserThread::PostTaskAndReply(BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&UsbApiTest::SetUpService, this),
+ runner->QuitClosure());
+ runner->Run();
+ }
+
+ void SetUpService() {
+ UsbService::SetInstanceForTest(new MockUsbService(mock_device_));
+ }
+
+ virtual void CleanUpOnMainThread() OVERRIDE {
+ scoped_refptr<content::MessageLoopRunner> runner =
+ new content::MessageLoopRunner;
+ UsbService* service = NULL;
+ BrowserThread::PostTaskAndReply(
+ BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&UsbService::SetInstanceForTest, service),
+ runner->QuitClosure());
+ runner->Run();
}
protected:
@@ -130,9 +191,12 @@ IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) {
}
IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) {
- EXPECT_CALL(*mock_device_.get(), ListInterfaces())
- .WillOnce(Return(scoped_refptr<UsbConfigDescriptor>()));
+ scoped_refptr<MockUsbConfigDescriptor> mock_descriptor =
+ new MockUsbConfigDescriptor();
EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
+ EXPECT_CALL(*mock_descriptor.get(), GetNumInterfaces()).WillOnce(Return(0));
+ EXPECT_CALL(*mock_device_.get(), ListInterfaces())
+ .WillOnce(Return(mock_descriptor));
ASSERT_TRUE(RunExtensionTest("usb/list_interfaces"));
}
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_api.cc ('k') | chrome/test/data/extensions/api_test/usb/device_handling/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698