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

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

Issue 868043003: [PATCH 8/11] ozone: evdev: Plumb device changes to EventFactoryEvdev (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 11 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.cc
diff --git a/ui/events/ozone/evdev/input_device_factory_evdev.cc b/ui/events/ozone/evdev/input_device_factory_evdev.cc
index 3b9f3f8be5d1c9253d1360a5321ed1371d462f65..92eb8ef9359b72079066dad58c9c0d13e636b5b3 100644
--- a/ui/events/ozone/evdev/input_device_factory_evdev.cc
+++ b/ui/events/ozone/evdev/input_device_factory_evdev.cc
@@ -14,6 +14,7 @@
#include "base/time/time.h"
#include "ui/events/devices/device_data_manager.h"
#include "ui/events/devices/device_util_linux.h"
+#include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h"
#include "ui/events/ozone/evdev/event_converter_evdev_impl.h"
#include "ui/events/ozone/evdev/event_device_info.h"
#include "ui/events/ozone/evdev/tablet_event_converter_evdev.h"
@@ -125,13 +126,12 @@ std::string DumpGesturePropertyValue(GesturesProp* property) {
}
// Dump touch device property values to a string.
-void DumpTouchDeviceStatus(InputDeviceFactoryEvdev* device_factory,
- GesturePropertyProvider* provider,
+void DumpTouchDeviceStatus(GesturePropertyProvider* provider,
std::string* status) {
// We use DT_ALL since we want gesture property values for all devices that
// run with the gesture library, not just mice or touchpads.
std::vector<int> ids;
- device_factory->GetDeviceIdsByType(DT_ALL, &ids);
+ provider->GetDeviceIdsByType(DT_ALL, &ids);
// Dump the property names and values for each device.
for (size_t i = 0; i < ids.size(); ++i) {
@@ -374,14 +374,6 @@ void InputDeviceFactoryEvdev::EnableInternalKeyboard() {
}
}
-bool InputDeviceFactoryEvdev::HasMouse() {
- return GetDeviceIdsByType(DT_MOUSE, NULL);
-}
-
-bool InputDeviceFactoryEvdev::HasTouchpad() {
- return GetDeviceIdsByType(DT_TOUCHPAD, NULL);
-}
-
void InputDeviceFactoryEvdev::SetTouchpadSensitivity(int value) {
SetIntPropertyForOneType(DT_TOUCHPAD, "Pointer Sensitivity", value);
SetIntPropertyForOneType(DT_TOUCHPAD, "Scroll Sensitivity", value);
@@ -417,7 +409,7 @@ void InputDeviceFactoryEvdev::GetTouchDeviceStatus(
const GetTouchDeviceStatusReply& reply) {
scoped_ptr<std::string> status(new std::string);
#if defined(USE_EVDEV_GESTURES)
- DumpTouchDeviceStatus(this, gesture_property_provider_.get(), status.get());
+ DumpTouchDeviceStatus(gesture_property_provider_.get(), status.get());
#endif
reply.Run(status.Pass());
}
@@ -429,10 +421,15 @@ void InputDeviceFactoryEvdev::NotifyDeviceChange(
if (converter.HasKeyboard())
NotifyKeyboardsUpdated();
+
+ if (converter.HasMouse())
+ NotifyMouseDevicesUpdated();
+
+ if (converter.HasTouchpad())
+ NotifyMouseDevicesUpdated();
}
void InputDeviceFactoryEvdev::NotifyTouchscreensUpdated() {
- DeviceHotplugEventObserver* observer = DeviceDataManager::GetInstance();
std::vector<TouchscreenDevice> touchscreens;
for (auto it = converters_.begin(); it != converters_.end(); ++it) {
if (it->second->HasTouchscreen()) {
@@ -445,11 +442,10 @@ void InputDeviceFactoryEvdev::NotifyTouchscreensUpdated() {
}
}
- observer->OnTouchscreenDevicesUpdated(touchscreens);
+ dispatcher_->DispatchTouchscreenDevicesUpdated(touchscreens);
}
void InputDeviceFactoryEvdev::NotifyKeyboardsUpdated() {
- DeviceHotplugEventObserver* observer = DeviceDataManager::GetInstance();
std::vector<KeyboardDevice> keyboards;
for (auto it = converters_.begin(); it != converters_.end(); ++it) {
if (it->second->HasKeyboard()) {
@@ -458,24 +454,31 @@ void InputDeviceFactoryEvdev::NotifyKeyboardsUpdated() {
}
}
- observer->OnKeyboardDevicesUpdated(keyboards);
+ dispatcher_->DispatchKeyboardDevicesUpdated(keyboards);
}
-bool InputDeviceFactoryEvdev::GetDeviceIdsByType(const EventDeviceType type,
- std::vector<int>* device_ids) {
- if (device_ids)
- device_ids->clear();
- std::vector<int> ids;
+void InputDeviceFactoryEvdev::NotifyMouseDevicesUpdated() {
+ std::vector<InputDevice> mice;
+ for (auto it = converters_.begin(); it != converters_.end(); ++it) {
+ if (it->second->HasMouse()) {
+ mice.push_back(InputDevice(it->second->id(), it->second->type(),
+ std::string() /* Device name */));
+ }
+ }
-#if defined(USE_EVDEV_GESTURES)
- // Ask GesturePropertyProvider for matching devices.
- gesture_property_provider_->GetDeviceIdsByType(type, &ids);
-#endif
- // In the future we can add other device matching logics here.
+ dispatcher_->DispatchMouseDevicesUpdated(mice);
+}
+
+void InputDeviceFactoryEvdev::NotifyTouchpadDevicesUpdated() {
+ std::vector<InputDevice> touchpads;
+ for (auto it = converters_.begin(); it != converters_.end(); ++it) {
+ if (it->second->HasTouchpad()) {
+ touchpads.push_back(InputDevice(it->second->id(), it->second->type(),
+ std::string() /* Device name */));
+ }
+ }
- if (device_ids)
- device_ids->assign(ids.begin(), ids.end());
- return !ids.empty();
+ dispatcher_->DispatchTouchpadDevicesUpdated(touchpads);
}
void InputDeviceFactoryEvdev::SetIntPropertyForOneType(

Powered by Google App Engine
This is Rietveld 408576698