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

Side by Side Diff: device/usb/usb_device_android.cc

Issue 1561283003: Revert of Implement basic USB device enumeration on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « device/usb/usb_device_android.h ('k') | device/usb/usb_device_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "device/usb/usb_device_android.h"
6
7 #include "base/android/build_info.h"
8 #include "base/android/jni_string.h"
9 #include "base/bind.h"
10 #include "base/location.h"
11 #include "base/thread_task_runner_handle.h"
12 #include "device/usb/usb_configuration_android.h"
13 #include "device/usb/usb_device_handle.h"
14 #include "device/usb/usb_interface_android.h"
15 #include "jni/ChromeUsbDevice_jni.h"
16
17 using base::android::AttachCurrentThread;
18 using base::android::ConvertJavaStringToUTF16;
19 using base::android::JavaRef;
20 using base::android::ScopedJavaLocalRef;
21
22 namespace device {
23
24 // static
25 bool UsbDeviceAndroid::RegisterJNI(JNIEnv* env) {
26 return RegisterNativesImpl(env); // Generated in ChromeUsbDevice_jni.h
27 }
28
29 // static
30 scoped_refptr<UsbDeviceAndroid> UsbDeviceAndroid::Create(
31 JNIEnv* env,
32 const JavaRef<jobject>& usb_device) {
33 ScopedJavaLocalRef<jobject> wrapper =
34 Java_ChromeUsbDevice_create(env, usb_device.obj());
35 uint16_t vendor_id = Java_ChromeUsbDevice_getVendorId(env, wrapper.obj());
36 uint16_t product_id = Java_ChromeUsbDevice_getProductId(env, wrapper.obj());
37 ScopedJavaLocalRef<jstring> manufacturer_string =
38 Java_ChromeUsbDevice_getManufacturerName(env, wrapper.obj());
39 ScopedJavaLocalRef<jstring> product_string =
40 Java_ChromeUsbDevice_getProductName(env, wrapper.obj());
41 ScopedJavaLocalRef<jstring> serial_number =
42 Java_ChromeUsbDevice_getSerialNumber(env, wrapper.obj());
43 return make_scoped_refptr(new UsbDeviceAndroid(
44 env, vendor_id, product_id,
45 ConvertJavaStringToUTF16(env, manufacturer_string),
46 ConvertJavaStringToUTF16(env, product_string),
47 ConvertJavaStringToUTF16(env, serial_number), wrapper));
48 }
49
50 void UsbDeviceAndroid::Open(const OpenCallback& callback) {
51 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
52 base::Bind(callback, nullptr));
53 }
54
55 const UsbConfigDescriptor* UsbDeviceAndroid::GetActiveConfiguration() {
56 return nullptr;
57 }
58
59 UsbDeviceAndroid::UsbDeviceAndroid(JNIEnv* env,
60 uint16_t vendor_id,
61 uint16_t product_id,
62 const base::string16& manufacturer_string,
63 const base::string16& product_string,
64 const base::string16& serial_number,
65 const JavaRef<jobject>& wrapper)
66 : UsbDevice(vendor_id,
67 product_id,
68 manufacturer_string,
69 product_string,
70 serial_number) {
71 j_object_.Reset(wrapper);
72
73 if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) {
74 ScopedJavaLocalRef<jobjectArray> configurations =
75 Java_ChromeUsbDevice_getConfigurations(env, j_object_.obj());
76 jsize count = env->GetArrayLength(configurations.obj());
77 configurations_.reserve(count);
78 for (jsize i = 0; i < count; ++i) {
79 ScopedJavaLocalRef<jobject> config(
80 env, env->GetObjectArrayElement(configurations.obj(), i));
81 configurations_.push_back(UsbConfigurationAndroid::Convert(env, config));
82 }
83 } else {
84 // Pre-lollipop only the first configuration was supported. Build a basic
85 // configuration out of the available interfaces.
86 UsbConfigDescriptor config;
87 config.configuration_value = 1; // Reasonable guess.
88 config.self_powered = false; // Arbitrary default.
89 config.remote_wakeup = false; // Arbitrary default.
90 config.maximum_power = 0; // Arbitrary default.
91
92 ScopedJavaLocalRef<jobjectArray> interfaces =
93 Java_ChromeUsbDevice_getInterfaces(env, wrapper.obj());
94 jsize count = env->GetArrayLength(interfaces.obj());
95 config.interfaces.reserve(count);
96 for (jsize i = 0; i < count; ++i) {
97 ScopedJavaLocalRef<jobject> interface(
98 env, env->GetObjectArrayElement(interfaces.obj(), i));
99 config.interfaces.push_back(UsbInterfaceAndroid::Convert(env, interface));
100 }
101 configurations_.push_back(config);
102 }
103 }
104
105 UsbDeviceAndroid::~UsbDeviceAndroid() {}
106
107 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_device_android.h ('k') | device/usb/usb_device_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698