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

Unified Diff: ui/events/ozone/evdev/input_device_factory_evdev.h

Issue 1287103004: Sync ui/events to chromium @ https://codereview.chromium.org/1210203002 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 4 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
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_
« no previous file with comments | « ui/events/ozone/evdev/input_controller_evdev.cc ('k') | ui/events/ozone/evdev/input_device_factory_evdev.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698