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

Unified Diff: device/hid/hid_service_linux.cc

Issue 2799743006: Remove MessageLoop destruction observer from hid_connection_linux.cc (Closed)
Patch Set: 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
« device/hid/hid_connection_linux.cc ('K') | « device/hid/hid_connection_linux.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/hid/hid_service_linux.cc
diff --git a/device/hid/hid_service_linux.cc b/device/hid/hid_service_linux.cc
index 1cd5d393b17030a5c6fdc05a7554016f27538276..8fc39c5ec91975befcfac05fe2f7ea4113e09df3 100644
--- a/device/hid/hid_service_linux.cc
+++ b/device/hid/hid_service_linux.cc
@@ -16,6 +16,7 @@
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
+#include "base/files/scoped_file.h"
#include "base/location.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
@@ -53,18 +54,18 @@ struct HidServiceLinux::ConnectParams {
ConnectParams(scoped_refptr<HidDeviceInfoLinux> device_info,
const ConnectCallback& callback,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner)
- : device_info(device_info),
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner)
+ : device_info(std::move(device_info)),
callback(callback),
- task_runner(task_runner),
- file_task_runner(file_task_runner) {}
+ task_runner(std::move(task_runner)),
+ file_task_runner(std::move(file_task_runner)) {}
~ConnectParams() {}
scoped_refptr<HidDeviceInfoLinux> device_info;
ConnectCallback callback;
scoped_refptr<base::SingleThreadTaskRunner> task_runner;
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner;
- base::File device_file;
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner;
robliao 2017/04/07 01:08:24 Rename to blocking_task_runner to harmonize with H
Reilly Grant (use Gerrit) 2017/04/07 22:10:49 Done.
+ base::ScopedFD fd;
};
class HidServiceLinux::FileThreadHelper : public DeviceMonitorLinux::Observer {
@@ -257,9 +258,9 @@ void HidServiceLinux::Connect(const HidDeviceId& device_id,
// static
void HidServiceLinux::OnPathOpenComplete(std::unique_ptr<ConnectParams> params,
base::ScopedFD fd) {
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner =
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner =
params->file_task_runner;
- params->device_file = base::File(fd.release());
+ params->fd = std::move(fd);
file_task_runner->PostTask(FROM_HERE, base::Bind(&HidServiceLinux::FinishOpen,
base::Passed(&params)));
}
@@ -283,7 +284,7 @@ void HidServiceLinux::OpenOnBlockingThread(
scoped_refptr<base::SingleThreadTaskRunner> task_runner = params->task_runner;
base::FilePath device_path(params->device_info->device_node());
- base::File& device_file = params->device_file;
+ base::File device_file;
int flags =
base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
device_file.Initialize(device_path, flags);
@@ -304,7 +305,7 @@ void HidServiceLinux::OpenOnBlockingThread(
task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
return;
}
-
+ params->fd.reset(device_file.TakePlatformFile());
FinishOpen(std::move(params));
}
@@ -315,7 +316,7 @@ void HidServiceLinux::FinishOpen(std::unique_ptr<ConnectParams> params) {
base::ThreadRestrictions::AssertIOAllowed();
scoped_refptr<base::SingleThreadTaskRunner> task_runner = params->task_runner;
- if (!base::SetNonBlocking(params->device_file.GetPlatformFile())) {
+ if (!base::SetNonBlocking(params->fd.get())) {
HID_PLOG(ERROR) << "Failed to set the non-blocking flag on the device fd";
task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
return;
@@ -328,10 +329,10 @@ void HidServiceLinux::FinishOpen(std::unique_ptr<ConnectParams> params) {
// static
void HidServiceLinux::CreateConnection(std::unique_ptr<ConnectParams> params) {
- DCHECK(params->device_file.IsValid());
+ DCHECK(params->fd.is_valid());
params->callback.Run(make_scoped_refptr(new HidConnectionLinux(
- params->device_info, std::move(params->device_file),
- params->file_task_runner)));
+ std::move(params->device_info), std::move(params->fd),
+ std::move(params->file_task_runner))));
}
} // namespace device
« device/hid/hid_connection_linux.cc ('K') | « device/hid/hid_connection_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698