| 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();
|
|
|