| Index: components/mus/input_devices/public/cpp/lib/input_device_client.cc
|
| diff --git a/components/mus/input_devices/public/cpp/lib/input_device_client.cc b/components/mus/input_devices/public/cpp/lib/input_device_client.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0129fc9e0f1b3e273d6e59b2ba45a863589072ea
|
| --- /dev/null
|
| +++ b/components/mus/input_devices/public/cpp/lib/input_device_client.cc
|
| @@ -0,0 +1,125 @@
|
| +// Copyright 2016 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 "components/mus/input_devices/public/cpp/input_device_client.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/files/file_path.h"
|
| +#include "base/logging.h"
|
| +#include "base/strings/string_util.h"
|
| +#include "base/strings/stringprintf.h"
|
| +
|
| +namespace input_device {
|
| +
|
| +namespace {
|
| +
|
| +// TODO(kylechar): Debug, remove eventually.
|
| +template <class DeviceType>
|
| +void PrintDevices(std::string title, const DeviceType& devices) {
|
| + std::vector<std::string> device_strings;
|
| + device_strings.push_back(base::StringPrintf("%s devices.size()=%zu",
|
| + title.c_str(), devices.size()));
|
| + for (const auto& device : devices) {
|
| + device_strings.push_back(device.ToString());
|
| + }
|
| + LOG(ERROR) << base::JoinString(device_strings, ", ");
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +InputDeviceClient::InputDeviceClient() : binding_(this) {
|
| + InputDeviceManager::SetInstance(this);
|
| +}
|
| +
|
| +InputDeviceClient::~InputDeviceClient() {
|
| + InputDeviceManager::ClearInstance();
|
| +}
|
| +
|
| +void InputDeviceClient::Connect(shell::Connector* connector) {
|
| + mojom::InputDeviceServerPtr service;
|
| + connector->ConnectToInterface("mojo:mus", &service);
|
| +
|
| + // Add this class as an observer via Mojo IPC.
|
| + service->AddObserver(binding_.CreateInterfacePtrAndBind());
|
| +}
|
| +
|
| +void InputDeviceClient::OnKeyboardDeviceConfigurationChanged(
|
| + mojo::Array<ui::InputDevice> devices) {
|
| + keyboard_devices_ = devices.To<std::vector<ui::InputDevice>>();
|
| + PrintDevices("UpdateKeyboardDevices", keyboard_devices_);
|
| + FOR_EACH_OBSERVER(ui::InputDeviceEventObserver, observers_,
|
| + OnKeyboardDeviceConfigurationChanged());
|
| +}
|
| +
|
| +void InputDeviceClient::OnTouchscreenDeviceConfigurationChanged(
|
| + mojo::Array<ui::TouchscreenDevice> devices) {
|
| + touchscreen_devices_ = devices.To<std::vector<ui::TouchscreenDevice>>();
|
| + PrintDevices("UpdateTouchscreenDevices", touchscreen_devices_);
|
| + FOR_EACH_OBSERVER(ui::InputDeviceEventObserver, observers_,
|
| + OnTouchscreenDeviceConfigurationChanged());
|
| +}
|
| +
|
| +void InputDeviceClient::OnMouseDeviceConfigurationChanged(
|
| + mojo::Array<ui::InputDevice> devices) {
|
| + mouse_devices_ = devices.To<std::vector<ui::InputDevice>>();
|
| + PrintDevices("UpdateMouseDevices", mouse_devices_);
|
| + FOR_EACH_OBSERVER(ui::InputDeviceEventObserver, observers_,
|
| + OnMouseDeviceConfigurationChanged());
|
| +}
|
| +
|
| +void InputDeviceClient::OnTouchpadDeviceConfigurationChanged(
|
| + mojo::Array<ui::InputDevice> devices) {
|
| + touchpad_devices_ = devices.To<std::vector<ui::InputDevice>>();
|
| + PrintDevices("UpdateTouchpadDevices", touchpad_devices_);
|
| + FOR_EACH_OBSERVER(ui::InputDeviceEventObserver, observers_,
|
| + OnTouchpadDeviceConfigurationChanged());
|
| +}
|
| +
|
| +void InputDeviceClient::OnDeviceListsComplete() {
|
| + if (!device_lists_complete_) {
|
| + LOG(ERROR) << "InputDeviceClient::OnDeviceListsComplete";
|
| + device_lists_complete_ = true;
|
| + FOR_EACH_OBSERVER(ui::InputDeviceEventObserver, observers_,
|
| + OnDeviceListsComplete());
|
| + }
|
| +}
|
| +
|
| +void InputDeviceClient::AddObserver(ui::InputDeviceEventObserver* observer) {
|
| + observers_.AddObserver(observer);
|
| +}
|
| +
|
| +void InputDeviceClient::RemoveObserver(ui::InputDeviceEventObserver* observer) {
|
| + observers_.RemoveObserver(observer);
|
| +}
|
| +
|
| +const std::vector<ui::InputDevice>& InputDeviceClient::keyboard_devices()
|
| + const {
|
| + return keyboard_devices_;
|
| +}
|
| +
|
| +const std::vector<ui::TouchscreenDevice>&
|
| +InputDeviceClient::touchscreen_devices() const {
|
| + return touchscreen_devices_;
|
| +}
|
| +
|
| +const std::vector<ui::InputDevice>& InputDeviceClient::mouse_devices() const {
|
| + return mouse_devices_;
|
| +}
|
| +
|
| +const std::vector<ui::InputDevice>& InputDeviceClient::touchpad_devices()
|
| + const {
|
| + return touchpad_devices_;
|
| +}
|
| +
|
| +bool InputDeviceClient::device_lists_complete() const {
|
| + return device_lists_complete_;
|
| +}
|
| +
|
| +bool InputDeviceClient::AreTouchscreensEnabled() const {
|
| + // TODO(kylechar): This obviously isn't right. We either need to pass this
|
| + // state around or modify the interface.
|
| + return true;
|
| +}
|
| +
|
| +} // namespace input_device
|
|
|