Index: device/usb/usb_interface_android.cc |
diff --git a/device/usb/usb_interface_android.cc b/device/usb/usb_interface_android.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..60403aed2da0ffbd94c153dbe6c94c6b435a30b5 |
--- /dev/null |
+++ b/device/usb/usb_interface_android.cc |
@@ -0,0 +1,51 @@ |
+// 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_interface_android.h" |
+ |
+#include "device/usb/usb_endpoint_android.h" |
+#include "jni/ChromeUsbInterface_jni.h" |
+ |
+using base::android::ScopedJavaLocalRef; |
+ |
+namespace device { |
+ |
+// static |
+bool UsbInterfaceAndroid::RegisterJNI(JNIEnv* env) { |
+ return RegisterNativesImpl(env); // Generated in ChromeUsbInterface_jni.h |
+} |
+ |
+// static |
+UsbInterfaceDescriptor UsbInterfaceAndroid::Convert( |
+ JNIEnv* env, |
+ const base::android::JavaRef<jobject>& usb_interface) { |
+ ScopedJavaLocalRef<jobject> wrapper = |
+ Java_ChromeUsbInterface_create(env, usb_interface.obj()); |
+ |
+ UsbInterfaceDescriptor interface; |
+ interface.interface_number = |
+ Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper.obj()); |
+ interface.alternate_setting = |
+ Java_ChromeUsbInterface_getAlternateSetting(env, wrapper.obj()); |
+ interface.interface_class = |
+ Java_ChromeUsbInterface_getInterfaceClass(env, wrapper.obj()); |
+ interface.interface_subclass = |
+ Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper.obj()); |
+ interface.interface_protocol = |
+ Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper.obj()); |
+ |
+ ScopedJavaLocalRef<jobjectArray> endpoints = |
+ Java_ChromeUsbInterface_getEndpoints(env, wrapper.obj()); |
+ jsize count = env->GetArrayLength(endpoints.obj()); |
+ interface.endpoints.reserve(count); |
+ for (jsize i = 0; i < count; ++i) { |
+ ScopedJavaLocalRef<jobject> endpoint( |
+ env, env->GetObjectArrayElement(endpoints.obj(), i)); |
+ interface.endpoints.push_back(UsbEndpointAndroid::Convert(env, endpoint)); |
+ } |
+ |
+ return interface; |
+} |
+ |
+} // namespace device |