| Index: ui/events/ozone/evdev/input_device_factory_evdev.h
|
| diff --git a/ui/events/ozone/evdev/input_device_factory_evdev.h b/ui/events/ozone/evdev/input_device_factory_evdev.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8f9b3a73569fc2d2bf01dc8c08976d0fabf23f64
|
| --- /dev/null
|
| +++ b/ui/events/ozone/evdev/input_device_factory_evdev.h
|
| @@ -0,0 +1,140 @@
|
| +// Copyright 2014 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.
|
| +
|
| +#ifndef UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
|
| +#define UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
|
| +
|
| +#include <map>
|
| +#include <set>
|
| +#include <vector>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/compiler_specific.h"
|
| +#include "base/files/file_path.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/task_runner.h"
|
| +#include "ui/events/ozone/evdev/event_converter_evdev.h"
|
| +#include "ui/events/ozone/evdev/event_device_info.h"
|
| +#include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
|
| +#include "ui/events/ozone/evdev/input_device_settings_evdev.h"
|
| +
|
| +namespace ui {
|
| +
|
| +class CursorDelegateEvdev;
|
| +class DeviceEventDispatcherEvdev;
|
| +class InputDeviceFactoryEvdevProxy;
|
| +
|
| +#if !defined(USE_EVDEV)
|
| +#error Missing dependency on ui/events/ozone:events_ozone_evdev
|
| +#endif
|
| +
|
| +#if defined(USE_EVDEV_GESTURES)
|
| +class GesturePropertyProvider;
|
| +#endif
|
| +
|
| +typedef base::Callback<void(scoped_ptr<std::string>)> GetTouchDeviceStatusReply;
|
| +typedef base::Callback<void(scoped_ptr<std::vector<base::FilePath>>)>
|
| + GetTouchEventLogReply;
|
| +
|
| +// Manager for event device objects. All device I/O starts here.
|
| +class EVENTS_OZONE_EVDEV_EXPORT InputDeviceFactoryEvdev {
|
| + public:
|
| + InputDeviceFactoryEvdev(scoped_ptr<DeviceEventDispatcherEvdev> dispatcher,
|
| + CursorDelegateEvdev* cursor);
|
| + ~InputDeviceFactoryEvdev();
|
| +
|
| + // Open & start reading a newly plugged-in input device.
|
| + void AddInputDevice(int id, const base::FilePath& path);
|
| +
|
| + // Stop reading & close an unplugged input device.
|
| + void RemoveInputDevice(const base::FilePath& path);
|
| +
|
| + // Device thread handler for initial scan completion.
|
| + void OnStartupScanComplete();
|
| +
|
| + // LED state.
|
| + void SetCapsLockLed(bool enabled);
|
| +
|
| + // Bits from InputController that have to be answered on IO.
|
| + void UpdateInputDeviceSettings(const InputDeviceSettingsEvdev& settings);
|
| + void GetTouchDeviceStatus(const GetTouchDeviceStatusReply& reply);
|
| + void GetTouchEventLog(const base::FilePath& out_dir,
|
| + const GetTouchEventLogReply& reply);
|
| +
|
| + base::WeakPtr<InputDeviceFactoryEvdev> GetWeakPtr();
|
| +
|
| + private:
|
| + // Open device at path & starting processing events (on UI thread).
|
| + void AttachInputDevice(scoped_ptr<EventConverterEvdev> converter);
|
| +
|
| + // Close device at path (on UI thread).
|
| + void DetachInputDevice(const base::FilePath& file_path);
|
| +
|
| + // Sync input_device_settings_ to attached devices.
|
| + void ApplyInputDeviceSettings();
|
| + void ApplyCapsLockLed();
|
| +
|
| + // Policy for device enablement.
|
| + bool IsDeviceEnabled(const EventConverterEvdev* converter);
|
| +
|
| + // Update observers on device changes.
|
| + void UpdateDirtyFlags(const EventConverterEvdev* converter);
|
| + void NotifyDevicesUpdated();
|
| + void NotifyKeyboardsUpdated();
|
| + void NotifyTouchscreensUpdated();
|
| + void NotifyMouseDevicesUpdated();
|
| + void NotifyTouchpadDevicesUpdated();
|
| +
|
| + void SetIntPropertyForOneType(const EventDeviceType type,
|
| + const std::string& name,
|
| + int value);
|
| + void SetBoolPropertyForOneType(const EventDeviceType type,
|
| + const std::string& name,
|
| + bool value);
|
| +
|
| + // Owned per-device event converters (by path).
|
| + std::map<base::FilePath, EventConverterEvdev*> converters_;
|
| +
|
| + // Task runner for our thread.
|
| + scoped_refptr<base::TaskRunner> task_runner_;
|
| +
|
| + // Cursor movement.
|
| + CursorDelegateEvdev* cursor_;
|
| +
|
| +#if defined(USE_EVDEV_GESTURES)
|
| + // Gesture library property provider (used by touchpads/mice).
|
| + scoped_ptr<GesturePropertyProvider> gesture_property_provider_;
|
| +#endif
|
| +
|
| + // Dispatcher for events.
|
| + scoped_ptr<DeviceEventDispatcherEvdev> dispatcher_;
|
| +
|
| + // Number of pending device additions & device classes.
|
| + int pending_device_changes_ = 0;
|
| + bool touchscreen_list_dirty_ = true;
|
| + bool keyboard_list_dirty_ = true;
|
| + bool mouse_list_dirty_ = true;
|
| + bool touchpad_list_dirty_ = true;
|
| +
|
| + // Whether we have a list of devices that were present at startup.
|
| + bool startup_devices_enumerated_ = false;
|
| +
|
| + // Whether devices that were present at startup are open.
|
| + bool startup_devices_opened_ = false;
|
| +
|
| + // LEDs.
|
| + bool caps_lock_led_enabled_ = false;
|
| +
|
| + // Device settings. These primarily affect libgestures behavior.
|
| + InputDeviceSettingsEvdev input_device_settings_;
|
| +
|
| + // Support weak pointers for attach & detach callbacks.
|
| + base::WeakPtrFactory<InputDeviceFactoryEvdev> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(InputDeviceFactoryEvdev);
|
| +};
|
| +
|
| +} // namespace ui
|
| +
|
| +#endif // UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
|
|
|