#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "services/device/hid/hid_connection_linux.h"
#include <errno.h>
#include <linux/hidraw.h>
#include <sys/ioctl.h>
#include <memory>
#include <string>
#include <tuple>
#include <utility>
#include "base/files/file_descriptor_watcher_posix.h"
#include "base/functional/bind.h"
#include "base/memory/ref_counted_memory.h"
#include "base/posix/eintr_wrapper.h"
#include "base/task/sequenced_task_runner.h"
#include "base/threading/scoped_blocking_call.h"
#include "components/device_event_log/device_event_log.h"
#include "services/device/hid/hid_service.h"
#ifndef HIDIOCSFEATURE
#define HIDIOCSFEATURE …
#endif
#ifndef HIDIOCGFEATURE
#define HIDIOCGFEATURE …
#endif
namespace device {
class HidConnectionLinux::BlockingTaskRunnerHelper { … };
HidConnectionLinux::HidConnectionLinux(
scoped_refptr<HidDeviceInfo> device_info,
base::ScopedFD fd,
scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
bool allow_protected_reports,
bool allow_fido_reports)
: … { … }
HidConnectionLinux::~HidConnectionLinux() { … }
void HidConnectionLinux::PlatformClose() { … }
void HidConnectionLinux::PlatformWrite(
scoped_refptr<base::RefCountedBytes> buffer,
WriteCallback callback) { … }
void HidConnectionLinux::PlatformGetFeatureReport(uint8_t report_id,
ReadCallback callback) { … }
void HidConnectionLinux::PlatformSendFeatureReport(
scoped_refptr<base::RefCountedBytes> buffer,
WriteCallback callback) { … }
}