summaryrefslogtreecommitdiffstats
path: root/extensions/renderer/api
diff options
context:
space:
mode:
authorsammc@chromium.org <sammc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-30 11:28:43 +0000
committersammc@chromium.org <sammc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-30 11:28:43 +0000
commite8a5608bbec4c3ddfa491b01c122b3900a21980f (patch)
tree655237d35d31c9e6ed889479b6a98ecb40a85ff1 /extensions/renderer/api
parent0a5fdad7e4f2104722baecabbe16990da1911b8f (diff)
downloadchromium_src-e8a5608bbec4c3ddfa491b01c122b3900a21980f.zip
chromium_src-e8a5608bbec4c3ddfa491b01c122b3900a21980f.tar.gz
chromium_src-e8a5608bbec4c3ddfa491b01c122b3900a21980f.tar.bz2
Implement chrome.serial.getDevices() on top of the Mojo serial service.
This does not change Chrome to use the new implementation. BUG=389016 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=286122 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=286199 Review URL: https://codereview.chromium.org/391413005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286480 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/renderer/api')
-rw-r--r--extensions/renderer/api/serial/DEPS3
-rw-r--r--extensions/renderer/api/serial/serial_api_unittest.cc65
2 files changed, 68 insertions, 0 deletions
diff --git a/extensions/renderer/api/serial/DEPS b/extensions/renderer/api/serial/DEPS
new file mode 100644
index 0000000..e273c39
--- /dev/null
+++ b/extensions/renderer/api/serial/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+device/serial",
+]
diff --git a/extensions/renderer/api/serial/serial_api_unittest.cc b/extensions/renderer/api/serial/serial_api_unittest.cc
new file mode 100644
index 0000000..3f551ca
--- /dev/null
+++ b/extensions/renderer/api/serial/serial_api_unittest.cc
@@ -0,0 +1,65 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/serial/serial_device_enumerator.h"
+#include "device/serial/serial_service_impl.h"
+#include "extensions/renderer/api_test_base.h"
+#include "grit/extensions_renderer_resources.h"
+
+namespace extensions {
+
+namespace {
+
+class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator {
+ virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE {
+ mojo::Array<device::serial::DeviceInfoPtr> result(3);
+ result[0] = device::serial::DeviceInfo::New();
+ result[0]->path = "device";
+ result[0]->vendor_id = 1234;
+ result[0]->has_vendor_id = true;
+ result[0]->product_id = 5678;
+ result[0]->has_product_id = true;
+ result[0]->display_name = "foo";
+ result[1] = device::serial::DeviceInfo::New();
+ result[1]->path = "another_device";
+ // These IDs should be ignored.
+ result[1]->vendor_id = 1234;
+ result[1]->product_id = 5678;
+ result[2] = device::serial::DeviceInfo::New();
+ result[2]->display_name = "";
+ return result.Pass();
+ }
+};
+
+} // namespace
+
+void CreateSerialService(
+ mojo::InterfaceRequest<device::serial::SerialService> request) {
+ mojo::BindToRequest(
+ new device::SerialServiceImpl(
+ new device::SerialConnectionFactory(
+ device::SerialConnectionFactory::IoHandlerFactory(),
+ base::MessageLoopProxy::current()),
+ scoped_ptr<device::SerialDeviceEnumerator>(
+ new FakeSerialDeviceEnumerator)),
+ &request);
+}
+
+class SerialApiTest : public ApiTestBase {
+ public:
+ virtual void SetUp() OVERRIDE {
+ ApiTestBase::SetUp();
+ env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS);
+ env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS);
+ env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS);
+ service_provider()->AddService<device::serial::SerialService>(
+ base::Bind(CreateSerialService));
+ }
+};
+
+TEST_F(SerialApiTest, GetDevices) {
+ RunTest("serial_unittest.js", "testGetDevices");
+}
+
+} // namespace extensions