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

Unified Diff: extensions/browser/api/serial/serial_apitest.cc

Issue 652313002: Enable the mojo-based serial API in the renderer behind a flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-js-natives-registration
Patch Set: fix windows build Created 6 years, 2 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
« no previous file with comments | « extensions/BUILD.gn ('k') | extensions/browser/mojo/service_registration_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/api/serial/serial_apitest.cc
diff --git a/extensions/browser/api/serial/serial_apitest.cc b/extensions/browser/api/serial/serial_apitest.cc
index f561b5bc123c7392c92250a5d73495a32a3f8b28..f951a208eda9fcfa966eb1c008832fd8e0bbc051 100644
--- a/extensions/browser/api/serial/serial_apitest.cc
+++ b/extensions/browser/api/serial/serial_apitest.cc
@@ -5,27 +5,24 @@
#include <string>
#include "chrome/browser/extensions/extension_apitest.h"
+#include "content/public/browser/browser_thread.h"
+#include "device/serial/serial_device_enumerator.h"
+#include "device/serial/serial_service_impl.h"
#include "device/serial/test_serial_io_handler.h"
#include "extensions/browser/api/serial/serial_api.h"
#include "extensions/browser/api/serial/serial_connection.h"
#include "extensions/browser/extension_function.h"
#include "extensions/common/api/serial.h"
+#include "extensions/common/switches.h"
#include "extensions/test/result_catcher.h"
+#include "extensions/test/test_service_registration_manager.h"
#include "testing/gmock/include/gmock/gmock.h"
using testing::_;
using testing::Return;
-namespace {
-
-class SerialApiTest : public ExtensionApiTest {
- public:
- SerialApiTest() {}
-};
-
-} // namespace
-
namespace extensions {
+namespace {
class FakeSerialGetDevicesFunction : public AsyncExtensionFunction {
public:
@@ -43,23 +40,44 @@ class FakeSerialGetDevicesFunction : public AsyncExtensionFunction {
}
protected:
- ~FakeSerialGetDevicesFunction() override {}
+ ~FakeSerialGetDevicesFunction() {}
+};
+
+class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator {
+ public:
+ ~FakeSerialDeviceEnumerator() override {}
+
+ mojo::Array<device::serial::DeviceInfoPtr> GetDevices() override {
+ mojo::Array<device::serial::DeviceInfoPtr> devices;
+ device::serial::DeviceInfoPtr device0(device::serial::DeviceInfo::New());
+ device0->path = "/dev/fakeserialmojo";
+ device::serial::DeviceInfoPtr device1(device::serial::DeviceInfo::New());
+ device1->path = "\\\\COM800\\";
+ devices.push_back(device0.Pass());
+ devices.push_back(device1.Pass());
+ return devices.Pass();
+ }
};
class FakeEchoSerialIoHandler : public device::TestSerialIoHandler {
public:
- explicit FakeEchoSerialIoHandler() {
+ FakeEchoSerialIoHandler() {
device_control_signals()->dcd = true;
device_control_signals()->cts = true;
device_control_signals()->ri = true;
device_control_signals()->dsr = true;
+ EXPECT_CALL(*this, SetControlSignals(_)).Times(1).WillOnce(Return(true));
+ }
+
+ static scoped_refptr<device::SerialIoHandler> Create() {
+ return new FakeEchoSerialIoHandler();
}
MOCK_METHOD1(SetControlSignals,
bool(const device::serial::HostControlSignals&));
protected:
- virtual ~FakeEchoSerialIoHandler() {}
+ ~FakeEchoSerialIoHandler() override {}
private:
DISALLOW_COPY_AND_ASSIGN(FakeEchoSerialIoHandler);
@@ -72,8 +90,6 @@ class FakeSerialConnectFunction : public core_api::SerialConnectFunction {
const std::string& owner_extension_id) const override {
scoped_refptr<FakeEchoSerialIoHandler> io_handler =
new FakeEchoSerialIoHandler;
- EXPECT_CALL(*io_handler.get(), SetControlSignals(_)).Times(1).WillOnce(
- Return(true));
SerialConnection* serial_connection =
new SerialConnection(port, owner_extension_id);
serial_connection->SetIoHandlerForTest(io_handler);
@@ -81,19 +97,58 @@ class FakeSerialConnectFunction : public core_api::SerialConnectFunction {
}
protected:
- ~FakeSerialConnectFunction() override {}
+ ~FakeSerialConnectFunction() {}
};
-} // namespace extensions
+class SerialApiTest : public ExtensionApiTest,
+ public testing::WithParamInterface<bool> {
+ public:
+ SerialApiTest() {}
+
+ void SetUpCommandLine(base::CommandLine* command_line) override {
+ ExtensionApiTest::SetUpCommandLine(command_line);
+ if (GetParam())
+ command_line->AppendSwitch(switches::kEnableMojoSerialService);
+ test_service_registration_manager_.reset(
+ new TestServiceRegistrationManager);
+ }
+
+ protected:
+ scoped_ptr<TestServiceRegistrationManager> test_service_registration_manager_;
+};
ExtensionFunction* FakeSerialGetDevicesFunctionFactory() {
- return new extensions::FakeSerialGetDevicesFunction();
+ return new FakeSerialGetDevicesFunction();
}
ExtensionFunction* FakeSerialConnectFunctionFactory() {
- return new extensions::FakeSerialConnectFunction();
+ return new FakeSerialConnectFunction();
+}
+
+void CreateTestSerialServiceOnFileThread(
+ mojo::InterfaceRequest<device::serial::SerialService> request) {
+ auto io_handler_factory = base::Bind(&FakeEchoSerialIoHandler::Create);
+ auto connection_factory = new device::SerialConnectionFactory(
+ io_handler_factory,
+ content::BrowserThread::GetMessageLoopProxyForThread(
+ content::BrowserThread::IO));
+ scoped_ptr<device::SerialDeviceEnumerator> device_enumerator(
+ new FakeSerialDeviceEnumerator);
+ mojo::BindToRequest(new device::SerialServiceImpl(connection_factory,
+ device_enumerator.Pass()),
+ &request);
}
+void CreateTestSerialService(
+ mojo::InterfaceRequest<device::serial::SerialService> request) {
+ content::BrowserThread::PostTask(
+ content::BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&CreateTestSerialServiceOnFileThread, base::Passed(&request)));
+}
+
+} // namespace
+
// Disable SIMULATE_SERIAL_PORTS only if all the following are true:
//
// 1. You have an Arduino or compatible board attached to your machine and
@@ -114,23 +169,32 @@ ExtensionFunction* FakeSerialConnectFunctionFactory() {
// chrome/test/data/extensions/api_test/serial/api/serial_arduino_test.ino.
//
#define SIMULATE_SERIAL_PORTS (1)
-IN_PROC_BROWSER_TEST_F(SerialApiTest, SerialFakeHardware) {
- extensions::ResultCatcher catcher;
+IN_PROC_BROWSER_TEST_P(SerialApiTest, SerialFakeHardware) {
+ ResultCatcher catcher;
catcher.RestrictToBrowserContext(browser()->profile());
#if SIMULATE_SERIAL_PORTS
- ASSERT_TRUE(extensions::ExtensionFunctionDispatcher::OverrideFunction(
- "serial.getDevices", FakeSerialGetDevicesFunctionFactory));
- ASSERT_TRUE(extensions::ExtensionFunctionDispatcher::OverrideFunction(
- "serial.connect", FakeSerialConnectFunctionFactory));
+ if (GetParam()) {
+ test_service_registration_manager_->OverrideServiceFactoryForTest(
+ base::Bind(&CreateTestSerialService));
+ } else {
+ ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction(
+ "serial.getDevices", FakeSerialGetDevicesFunctionFactory));
+ ASSERT_TRUE(ExtensionFunctionDispatcher::OverrideFunction(
+ "serial.connect", FakeSerialConnectFunctionFactory));
+ }
#endif
ASSERT_TRUE(RunExtensionTest("serial/api")) << message_;
}
-IN_PROC_BROWSER_TEST_F(SerialApiTest, SerialRealHardware) {
- extensions::ResultCatcher catcher;
+IN_PROC_BROWSER_TEST_P(SerialApiTest, SerialRealHardware) {
+ ResultCatcher catcher;
catcher.RestrictToBrowserContext(browser()->profile());
ASSERT_TRUE(RunExtensionTest("serial/real_hardware")) << message_;
}
+
+INSTANTIATE_TEST_CASE_P(SerialApiTest, SerialApiTest, testing::Bool());
+
+} // namespace extensions
« no previous file with comments | « extensions/BUILD.gn ('k') | extensions/browser/mojo/service_registration_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698