| 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..1abe3a750924579419ef9f84d0bc8832a8951f8c 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(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();
|
|
|