blob: 6e7a51c41edc8e056a9d82eadc8a84e7177aeb88 [file] [log] [blame]
// Copyright 2016 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.
#ifndef DEVICE_USB_USB_DEVICE_HANDLE_ANDROID_H_
#define DEVICE_USB_USB_DEVICE_HANDLE_ANDROID_H_
#include "base/android/scoped_java_ref.h"
#include "base/memory/ref_counted.h"
#include "device/usb/usb_device_handle_usbfs.h"
namespace device {
class UsbDevice;
// Extends UsbDeviceHandleUsbfs with support for managing a device connection
// through an instance of android.hardware.usb.UsbDeviceConnection.
class UsbDeviceHandleAndroid : public UsbDeviceHandleUsbfs {
public:
static scoped_refptr<UsbDeviceHandleAndroid> Create(
JNIEnv* env,
scoped_refptr<UsbDevice> device,
const base::android::JavaRef<jobject>& usb_connection);
private:
// |wrapper| is an instance of org.chromium.device.usb.ChromeUsbConnection.
UsbDeviceHandleAndroid(
scoped_refptr<UsbDevice> device,
base::ScopedFD fd,
const base::android::JavaRef<jobject>& wrapper);
~UsbDeviceHandleAndroid() override;
// UsbDeviceHandleUsbfs:
void CloseBlocking() override;
void CloseConnection();
// Java object org.chromium.device.usb.ChromeUsbConnection.
base::android::ScopedJavaGlobalRef<jobject> j_object_;
};
} // namespace device
#endif // DEVICE_USB_USB_DEVICE_HANDLE_ANDROID_H_