blob: 751b985c8e6a9708efc749548a879cbcb719e14a [file] [log] [blame]
// Copyright 2015 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_ANDROID_H_
#define DEVICE_USB_USB_DEVICE_ANDROID_H_
#include "base/android/scoped_java_ref.h"
#include "base/memory/weak_ptr.h"
#include "device/usb/usb_device.h"
namespace device {
class UsbServiceAndroid;
class UsbDeviceAndroid : public UsbDevice {
public:
static scoped_refptr<UsbDeviceAndroid> Create(
JNIEnv* env,
base::WeakPtr<UsbServiceAndroid> service,
const base::android::JavaRef<jobject>& usb_device);
// UsbDevice:
void RequestPermission(ResultCallback callback) override;
bool permission_granted() const override;
void Open(OpenCallback callback) override;
jint device_id() const { return device_id_; }
void PermissionGranted(bool granted);
private:
UsbDeviceAndroid(
JNIEnv* env,
base::WeakPtr<UsbServiceAndroid> service,
uint16_t usb_version,
uint8_t device_class,
uint8_t device_subclass,
uint8_t device_protocol,
uint16_t vendor_id,
uint16_t product_id,
uint16_t device_version,
const base::string16& manufacturer_string,
const base::string16& product_string,
const base::string16& serial_number,
const base::android::JavaRef<jobject>& wrapper);
~UsbDeviceAndroid() override;
void CallRequestPermissionCallbacks(bool granted);
void OnDeviceOpenedToReadDescriptors(
scoped_refptr<UsbDeviceHandle> device_handle);
void OnReadDescriptors(scoped_refptr<UsbDeviceHandle> device_handle,
std::unique_ptr<UsbDeviceDescriptor> descriptor);
void OnReadWebUsbDescriptors(
scoped_refptr<UsbDeviceHandle> device_handle,
const GURL& landing_page);
const jint device_id_;
bool permission_granted_ = false;
std::list<ResultCallback> request_permission_callbacks_;
base::WeakPtr<UsbServiceAndroid> service_;
// Java object org.chromium.device.usb.ChromeUsbDevice.
base::android::ScopedJavaGlobalRef<jobject> j_object_;
};
} // namespace device
#endif // DEVICE_USB_USB_DEVICE_ANDROID_H_