Chromium Code Reviews| 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(¶ms))); |
| } |
| @@ -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 |