usb_interface_android.cc 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. #include "services/device/usb/usb_interface_android.h"
  5. #include "services/device/usb/jni_headers/ChromeUsbInterface_jni.h"
  6. #include "services/device/usb/usb_endpoint_android.h"
  7. using base::android::ScopedJavaLocalRef;
  8. namespace device {
  9. // static
  10. mojom::UsbInterfaceInfoPtr UsbInterfaceAndroid::Convert(
  11. JNIEnv* env,
  12. const base::android::JavaRef<jobject>& usb_interface) {
  13. ScopedJavaLocalRef<jobject> wrapper =
  14. Java_ChromeUsbInterface_create(env, usb_interface);
  15. uint8_t alternate_setting =
  16. Java_ChromeUsbInterface_getAlternateSetting(env, wrapper);
  17. auto interface = BuildUsbInterfaceInfoPtr(
  18. Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper),
  19. alternate_setting,
  20. Java_ChromeUsbInterface_getInterfaceClass(env, wrapper),
  21. Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper),
  22. Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper));
  23. base::android::JavaObjectArrayReader<jobject> endpoints(
  24. Java_ChromeUsbInterface_getEndpoints(env, wrapper));
  25. interface->alternates[0]->endpoints.reserve(endpoints.size());
  26. for (auto endpoint : endpoints) {
  27. interface->alternates[0]->endpoints.push_back(
  28. UsbEndpointAndroid::Convert(env, endpoint));
  29. }
  30. return interface;
  31. }
  32. } // namespace device