blob: 2ebf05782fab86233035f470307af1886dffb441 [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.
#include "ui/events/ozone/evdev/input_device_factory_evdev_proxy.h"
#include "base/bind.h"
#include "base/thread_task_runner_handle.h"
#include "ui/events/ozone/evdev/input_device_factory_evdev.h"
namespace ui {
namespace {
void ForwardGetTouchDeviceStatusReply(
scoped_refptr<base::SingleThreadTaskRunner> reply_runner,
const GetTouchDeviceStatusReply& reply,
scoped_ptr<std::string> status) {
// Thread hop back to UI for reply.
reply_runner->PostTask(FROM_HERE, base::Bind(reply, base::Passed(&status)));
}
void ForwardGetTouchEventLogReply(
scoped_refptr<base::SingleThreadTaskRunner> reply_runner,
const GetTouchEventLogReply& reply,
scoped_ptr<std::vector<base::FilePath>> log_paths) {
// Thread hop back to UI for reply.
reply_runner->PostTask(FROM_HERE,
base::Bind(reply, base::Passed(&log_paths)));
}
} // namespace
InputDeviceFactoryEvdevProxy::InputDeviceFactoryEvdevProxy(
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
base::WeakPtr<InputDeviceFactoryEvdev> input_device_factory)
: task_runner_(task_runner), input_device_factory_(input_device_factory) {
}
InputDeviceFactoryEvdevProxy::~InputDeviceFactoryEvdevProxy() {
}
void InputDeviceFactoryEvdevProxy::AddInputDevice(int id,
const base::FilePath& path) {
task_runner_->PostTask(FROM_HERE,
base::Bind(&InputDeviceFactoryEvdev::AddInputDevice,
input_device_factory_, id, path));
}
void InputDeviceFactoryEvdevProxy::RemoveInputDevice(
const base::FilePath& path) {
task_runner_->PostTask(FROM_HERE,
base::Bind(&InputDeviceFactoryEvdev::RemoveInputDevice,
input_device_factory_, path));
}
void InputDeviceFactoryEvdevProxy::OnStartupScanComplete() {
task_runner_->PostTask(
FROM_HERE, base::Bind(&InputDeviceFactoryEvdev::OnStartupScanComplete,
input_device_factory_));
}
void InputDeviceFactoryEvdevProxy::SetCapsLockLed(bool enabled) {
task_runner_->PostTask(FROM_HERE,
base::Bind(&InputDeviceFactoryEvdev::SetCapsLockLed,
input_device_factory_, enabled));
}
void InputDeviceFactoryEvdevProxy::UpdateInputDeviceSettings(
const InputDeviceSettingsEvdev& settings) {
task_runner_->PostTask(
FROM_HERE, base::Bind(&InputDeviceFactoryEvdev::UpdateInputDeviceSettings,
input_device_factory_, settings));
}
void InputDeviceFactoryEvdevProxy::GetTouchDeviceStatus(
const GetTouchDeviceStatusReply& reply) {
task_runner_->PostTask(
FROM_HERE,
base::Bind(&InputDeviceFactoryEvdev::GetTouchDeviceStatus,
input_device_factory_,
base::Bind(&ForwardGetTouchDeviceStatusReply,
base::ThreadTaskRunnerHandle::Get(), reply)));
}
void InputDeviceFactoryEvdevProxy::GetTouchEventLog(
const base::FilePath& out_dir,
const GetTouchEventLogReply& reply) {
task_runner_->PostTask(
FROM_HERE,
base::Bind(&InputDeviceFactoryEvdev::GetTouchEventLog,
input_device_factory_, out_dir,
base::Bind(&ForwardGetTouchEventLogReply,
base::ThreadTaskRunnerHandle::Get(), reply)));
}
} // namespace ui