Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Unified Diff: device/hid/hid_connection_linux.h

Issue 2799743006: Remove MessageLoop destruction observer from hid_connection_linux.cc (Closed)
Patch Set: Last review comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | device/hid/hid_connection_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/hid/hid_connection_linux.h
diff --git a/device/hid/hid_connection_linux.h b/device/hid/hid_connection_linux.h
index bcdb99c1cc7d231b07e2346ce983b1aa4a27dc67..574c732638b810dcb96363749fab8bce70c64141 100644
--- a/device/hid/hid_connection_linux.h
+++ b/device/hid/hid_connection_linux.h
@@ -10,13 +10,14 @@
#include <queue>
-#include "base/files/file.h"
+#include "base/files/scoped_file.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
#include "device/hid/hid_connection.h"
namespace base {
-class SingleThreadTaskRunner;
+class SequencedTaskRunner;
}
namespace device {
@@ -25,16 +26,13 @@ class HidConnectionLinux : public HidConnection {
public:
HidConnectionLinux(
scoped_refptr<HidDeviceInfo> device_info,
- base::File device_file,
- scoped_refptr<base::SingleThreadTaskRunner> file_thread_runner);
+ base::ScopedFD fd,
+ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
private:
friend class base::RefCountedThreadSafe<HidConnectionLinux>;
class FileThreadHelper;
- typedef base::Callback<void(ssize_t)> InternalWriteCallback;
- typedef base::Callback<void(int)> IoctlCallback;
-
~HidConnectionLinux() override;
// HidConnection implementation.
@@ -49,46 +47,21 @@ class HidConnectionLinux : public HidConnection {
size_t size,
const WriteCallback& callback) override;
- // Callbacks for blocking operations run on the FILE thread.
- void FinishWrite(size_t expected_size,
- const WriteCallback& callback,
- ssize_t result);
- void FinishGetFeatureReport(uint8_t report_id,
- scoped_refptr<net::IOBuffer> buffer,
- const ReadCallback& callback,
- int result);
- void FinishSendFeatureReport(const WriteCallback& callback, int result);
-
- // Writes to the device. This operation may block.
- static void BlockingWrite(
- base::PlatformFile platform_file,
- scoped_refptr<net::IOBuffer> buffer,
- size_t size,
- const InternalWriteCallback& callback,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner);
- // Performs an ioctl on the device. This operation may block.
- static void BlockingIoctl(
- base::PlatformFile platform_file,
- int request,
- scoped_refptr<net::IOBuffer> buffer,
- const IoctlCallback& callback,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner);
-
- // Closes the device file descriptor. Must be called on the FILE thread.
- static void CloseDevice(base::File device_file);
-
void ProcessInputReport(scoped_refptr<net::IOBuffer> buffer, size_t size);
void ProcessReadQueue();
- base::File device_file_;
- FileThreadHelper* helper_;
+ // This object lives on the sequence to which |blocking_task_runner_| posts
+ // tasks so all calls must be posted there including this object's
+ // destruction.
+ std::unique_ptr<FileThreadHelper> helper_;
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
+ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
std::queue<PendingHidReport> pending_reports_;
std::queue<PendingHidRead> pending_reads_;
+ base::SequenceChecker sequence_checker_;
+
base::WeakPtrFactory<HidConnectionLinux> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(HidConnectionLinux);
« no previous file with comments | « no previous file | device/hid/hid_connection_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698