usb_configuration_android.cc 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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_configuration_android.h"
  5. #include "services/device/usb/jni_headers/ChromeUsbConfiguration_jni.h"
  6. #include "services/device/usb/usb_interface_android.h"
  7. using base::android::ScopedJavaLocalRef;
  8. namespace device {
  9. // static
  10. mojom::UsbConfigurationInfoPtr UsbConfigurationAndroid::Convert(
  11. JNIEnv* env,
  12. const base::android::JavaRef<jobject>& usb_configuration) {
  13. ScopedJavaLocalRef<jobject> wrapper =
  14. Java_ChromeUsbConfiguration_create(env, usb_configuration);
  15. mojom::UsbConfigurationInfoPtr config = BuildUsbConfigurationInfoPtr(
  16. Java_ChromeUsbConfiguration_getConfigurationValue(env, wrapper),
  17. Java_ChromeUsbConfiguration_isSelfPowered(env, wrapper),
  18. Java_ChromeUsbConfiguration_isRemoteWakeup(env, wrapper),
  19. Java_ChromeUsbConfiguration_getMaxPower(env, wrapper));
  20. base::android::JavaObjectArrayReader<jobject> interfaces(
  21. Java_ChromeUsbConfiguration_getInterfaces(env, wrapper));
  22. config->interfaces.reserve(interfaces.size());
  23. for (auto interface : interfaces) {
  24. config->interfaces.push_back(UsbInterfaceAndroid::Convert(env, interface));
  25. }
  26. AggregateInterfacesForConfig(config.get());
  27. return config;
  28. }
  29. } // namespace device