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

Unified Diff: ui/events/test/event_generator.cc

Issue 2752903002: Make ui::test::EventGenerator work with PointerEvents in mash (Closed)
Patch Set: review comments Created 3 years, 9 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
« no previous file with comments | « ui/events/test/event_generator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/test/event_generator.cc
diff --git a/ui/events/test/event_generator.cc b/ui/events/test/event_generator.cc
index 77b709eb20629988c2d5184386070b9199e3dd16..713fd0f5322e716d984f73df9367b21ba29ca0ab 100644
--- a/ui/events/test/event_generator.cc
+++ b/ui/events/test/event_generator.cc
@@ -686,6 +686,7 @@ void EventGenerator::DoDispatchEvent(ui::Event* event, bool async) {
} else {
if (event->IsKeyEvent())
delegate()->DispatchKeyEventToIME(current_target_, event->AsKeyEvent());
+ MaybeDispatchToPointerWatchers(*event);
if (!event->handled()) {
ui::EventSource* event_source =
delegate()->GetEventSource(current_target_);
@@ -697,6 +698,27 @@ void EventGenerator::DoDispatchEvent(ui::Event* event, bool async) {
}
}
+void EventGenerator::MaybeDispatchToPointerWatchers(const Event& event) {
+ // Regular pointer events can be dispatched directly.
+ if (event.IsPointerEvent()) {
+ delegate()->DispatchEventToPointerWatchers(current_target_,
+ *event.AsPointerEvent());
+ return;
+ }
+
+ // PointerWatchers always use pointer events, so mouse and touch events
+ // need to be converted.
+ if (!PointerEvent::CanConvertFrom(event))
+ return;
+ if (event.IsMouseEvent()) {
+ delegate()->DispatchEventToPointerWatchers(
+ current_target_, PointerEvent(*event.AsMouseEvent()));
+ } else if (event.IsTouchEvent()) {
+ delegate()->DispatchEventToPointerWatchers(
+ current_target_, PointerEvent(*event.AsTouchEvent()));
+ }
+}
+
void EventGenerator::DispatchNextPendingEvent() {
DCHECK(!pending_events_.empty());
ui::Event* event = pending_events_.front().get();
« no previous file with comments | « ui/events/test/event_generator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698