OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "device/usb/usb_interface_android.h" | 5 #include "device/usb/usb_interface_android.h" |
6 | 6 |
7 #include "base/android/build_info.h" | 7 #include "base/android/build_info.h" |
8 #include "device/usb/usb_endpoint_android.h" | 8 #include "device/usb/usb_endpoint_android.h" |
9 #include "jni/ChromeUsbInterface_jni.h" | 9 #include "jni/ChromeUsbInterface_jni.h" |
10 | 10 |
11 using base::android::ScopedJavaLocalRef; | 11 using base::android::ScopedJavaLocalRef; |
12 | 12 |
13 namespace device { | 13 namespace device { |
14 | 14 |
15 // static | 15 // static |
16 UsbInterfaceDescriptor UsbInterfaceAndroid::Convert( | 16 UsbInterfaceDescriptor UsbInterfaceAndroid::Convert( |
17 JNIEnv* env, | 17 JNIEnv* env, |
18 const base::android::JavaRef<jobject>& usb_interface) { | 18 const base::android::JavaRef<jobject>& usb_interface) { |
19 ScopedJavaLocalRef<jobject> wrapper = | 19 ScopedJavaLocalRef<jobject> wrapper = |
20 Java_ChromeUsbInterface_create(env, usb_interface.obj()); | 20 Java_ChromeUsbInterface_create(env, usb_interface); |
21 | 21 |
22 uint8_t alternate_setting = 0; | 22 uint8_t alternate_setting = 0; |
23 if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) { | 23 if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) { |
24 alternate_setting = | 24 alternate_setting = |
25 Java_ChromeUsbInterface_getAlternateSetting(env, wrapper.obj()); | 25 Java_ChromeUsbInterface_getAlternateSetting(env, wrapper); |
26 } | 26 } |
27 | 27 |
28 UsbInterfaceDescriptor interface( | 28 UsbInterfaceDescriptor interface( |
29 Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper.obj()), | 29 Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper), |
30 alternate_setting, | 30 alternate_setting, |
31 Java_ChromeUsbInterface_getInterfaceClass(env, wrapper.obj()), | 31 Java_ChromeUsbInterface_getInterfaceClass(env, wrapper), |
32 Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper.obj()), | 32 Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper), |
33 Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper.obj())); | 33 Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper)); |
34 | 34 |
35 ScopedJavaLocalRef<jobjectArray> endpoints = | 35 ScopedJavaLocalRef<jobjectArray> endpoints = |
36 Java_ChromeUsbInterface_getEndpoints(env, wrapper.obj()); | 36 Java_ChromeUsbInterface_getEndpoints(env, wrapper); |
37 jsize count = env->GetArrayLength(endpoints.obj()); | 37 jsize count = env->GetArrayLength(endpoints.obj()); |
38 interface.endpoints.reserve(count); | 38 interface.endpoints.reserve(count); |
39 for (jsize i = 0; i < count; ++i) { | 39 for (jsize i = 0; i < count; ++i) { |
40 ScopedJavaLocalRef<jobject> endpoint( | 40 ScopedJavaLocalRef<jobject> endpoint( |
41 env, env->GetObjectArrayElement(endpoints.obj(), i)); | 41 env, env->GetObjectArrayElement(endpoints.obj(), i)); |
42 interface.endpoints.push_back(UsbEndpointAndroid::Convert(env, endpoint)); | 42 interface.endpoints.push_back(UsbEndpointAndroid::Convert(env, endpoint)); |
43 } | 43 } |
44 | 44 |
45 return interface; | 45 return interface; |
46 } | 46 } |
47 | 47 |
48 } // namespace device | 48 } // namespace device |
OLD | NEW |