summaryrefslogtreecommitdiffstats
path: root/device/usb/usb_endpoint_android.cc
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2016-01-07 14:00:09 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-07 22:00:58 +0000
commit4e17561af22e80438cd255dd5c92d64b57f4955d (patch)
tree271502639e3fd5d32adca422eb644af49e7de6d8 /device/usb/usb_endpoint_android.cc
parentff1966e831cce0b4a40cfa2bad90e9b6fdf4eb89 (diff)
downloadchromium_src-4e17561af22e80438cd255dd5c92d64b57f4955d.zip
chromium_src-4e17561af22e80438cd255dd5c92d64b57f4955d.tar.gz
chromium_src-4e17561af22e80438cd255dd5c92d64b57f4955d.tar.bz2
Reland of Implement basic USB device enumeration on Android. (patchset #1 id:1 of https://codereview.chromium.org/1561283003/ )
Reason for revert: Lack of GYP dependency on //device/usb Java sources fixed. Original issue's description: > Revert of Implement basic USB device enumeration on Android. (patchset #3 id:40001 of https://codereview.chromium.org/1514603006/ ) > > Reason for revert: > Speculating that this is the cause of issue 575191. > > Original issue's description: > > Implement basic USB device enumeration on Android. > > > > This patch provides a basic implementation of UsbService::GetDevices on > > Android that populates UsbDevice objects by collecting properties of the > > Java-side UsbDevice, UsbConfiguration, UsbInterface and UsbEndpoint > > objects over JNI. > > > > It does not support opening devices and does not generate device add or > > remove notifications. > > > > BUG=549257 > > > > Committed: https://crrev.com/8a310851fb144e91d1777112930ac15c0d88577b > > Cr-Commit-Position: refs/heads/master@{#367918} > > TBR=nasko@chromium.org,qinmin@chromium.org,yfriedman@chromium.org,pfeldman@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=549257,575191 > > Committed: https://crrev.com/e3de6dea8003be39328bea275763daab36a8df24 > Cr-Commit-Position: refs/heads/master@{#368077} TBR=nasko@chromium.org,qinmin@chromium.org,yfriedman@chromium.org,pfeldman@chromium.org BUG=549257,575191 Review URL: https://codereview.chromium.org/1565313002 Cr-Commit-Position: refs/heads/master@{#368169}
Diffstat (limited to 'device/usb/usb_endpoint_android.cc')
-rw-r--r--device/usb/usb_endpoint_android.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/device/usb/usb_endpoint_android.cc b/device/usb/usb_endpoint_android.cc
new file mode 100644
index 0000000..3280b04
--- /dev/null
+++ b/device/usb/usb_endpoint_android.cc
@@ -0,0 +1,41 @@
+// Copyright 2015 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/usb/usb_endpoint_android.h"
+
+#include "jni/ChromeUsbEndpoint_jni.h"
+
+namespace device {
+
+// static
+bool UsbEndpointAndroid::RegisterJNI(JNIEnv* env) {
+ return RegisterNativesImpl(env); // Generated in ChromeUsbEndpoint_jni.h
+}
+
+// static
+UsbEndpointDescriptor UsbEndpointAndroid::Convert(
+ JNIEnv* env,
+ const base::android::JavaRef<jobject>& usb_endpoint) {
+ base::android::ScopedJavaLocalRef<jobject> wrapper =
+ Java_ChromeUsbEndpoint_create(env, usb_endpoint.obj());
+
+ UsbEndpointDescriptor endpoint;
+ endpoint.address = Java_ChromeUsbEndpoint_getAddress(env, wrapper.obj());
+ endpoint.direction = static_cast<UsbEndpointDirection>(
+ Java_ChromeUsbEndpoint_getDirection(env, wrapper.obj()));
+ endpoint.maximum_packet_size =
+ Java_ChromeUsbEndpoint_getMaxPacketSize(env, wrapper.obj());
+ jint attributes = Java_ChromeUsbEndpoint_getAttributes(env, wrapper.obj());
+ endpoint.synchronization_type =
+ static_cast<UsbSynchronizationType>((attributes >> 2) & 3);
+ endpoint.usage_type = static_cast<UsbUsageType>((attributes >> 4) & 3);
+ endpoint.transfer_type = static_cast<UsbTransferType>(
+ Java_ChromeUsbEndpoint_getType(env, wrapper.obj()));
+ endpoint.polling_interval =
+ Java_ChromeUsbEndpoint_getInterval(env, wrapper.obj());
+
+ return endpoint;
+}
+
+} // namespace device