Index: content/browser/renderer_host/input/synthetic_gesture_target_aura.cc |
diff --git a/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc b/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc |
index facbede3840f69d9b254bb04ee62a24bb08c2e75..d03610ab725a2a4121d8a5d0d75d3c8f9ca144bb 100644 |
--- a/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc |
+++ b/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc |
@@ -26,11 +26,9 @@ SyntheticGestureTargetAura::SyntheticGestureTargetAura( |
void SyntheticGestureTargetAura::DispatchWebTouchEventToPlatform( |
const WebTouchEvent& web_touch, |
const ui::LatencyInfo& latency_info) { |
- aura::Window* window = render_widget_host()->GetView()->GetNativeView(); |
- aura::Window* root_window = window->GetRootWindow(); |
+ aura::Window* window = GetWindow(); |
aura::client::ScreenPositionClient* position_client = |
- aura::client::GetScreenPositionClient(root_window); |
- DCHECK(position_client); |
+ GetScreenPositionClient(); |
TouchEventWithLatencyInfo touch_with_latency(web_touch, latency_info); |
@@ -61,7 +59,12 @@ void SyntheticGestureTargetAura::DispatchWebTouchEventToPlatform( |
void SyntheticGestureTargetAura::DispatchWebMouseWheelEventToPlatform( |
const blink::WebMouseWheelEvent& web_wheel, |
const ui::LatencyInfo&) { |
+ aura::Window* window = GetWindow(); |
+ aura::client::ScreenPositionClient* position_client = |
+ GetScreenPositionClient(); |
gfx::Point location(web_wheel.x, web_wheel.y); |
+ position_client->ConvertPointToScreen(window, &location); |
+ |
ui::MouseEvent mouse_event( |
ui::ET_MOUSEWHEEL, location, location, ui::EF_NONE, ui::EF_NONE); |
ui::MouseWheelEvent wheel_event( |
@@ -124,11 +127,15 @@ int WebMouseEventButtonToFlags(blink::WebMouseEvent::Button button) { |
void SyntheticGestureTargetAura::DispatchWebMouseEventToPlatform( |
const blink::WebMouseEvent& web_mouse, |
const ui::LatencyInfo& latency_info) { |
+ aura::Window* window = GetWindow(); |
+ aura::client::ScreenPositionClient* position_client = |
+ GetScreenPositionClient(); |
gfx::Point location(web_mouse.x, web_mouse.y); |
+ position_client->ConvertPointToScreen(window, &location); |
+ |
ui::EventType event_type = WebMouseEventTypeToEventType(web_mouse.type); |
int flags = WebMouseEventButtonToFlags(web_mouse.button); |
- // TODO: last argument (changed_button_flags) likely isn't right. |
- ui::MouseEvent mouse_event(event_type, location, location, flags, 0); |
+ ui::MouseEvent mouse_event(event_type, location, location, flags, flags); |
GetRootWindowHostDelegate()->OnHostMouseEvent(&mouse_event); |
} |
@@ -150,15 +157,28 @@ int SyntheticGestureTargetAura::GetTouchSlopInDips() const { |
return ui::GestureConfiguration::max_touch_move_in_pixels_for_click() - 1; |
} |
+aura::Window* SyntheticGestureTargetAura::GetWindow() const { |
+ aura::Window* window = render_widget_host()->GetView()->GetNativeView(); |
+ DCHECK(window); |
+ return window; |
+} |
+ |
aura::RootWindowHostDelegate* |
SyntheticGestureTargetAura::GetRootWindowHostDelegate() const { |
- aura::Window* window = render_widget_host()->GetView()->GetNativeView(); |
- aura::Window* root_window = window->GetRootWindow(); |
+ aura::Window* root_window = GetWindow()->GetRootWindow(); |
aura::RootWindowHostDelegate* root_window_host_delegate = |
root_window->GetDispatcher()->AsRootWindowHostDelegate(); |
DCHECK(root_window_host_delegate); |
return root_window_host_delegate; |
} |
+aura::client::ScreenPositionClient* |
+SyntheticGestureTargetAura::GetScreenPositionClient() const { |
+ aura::Window* root_window = GetWindow()->GetRootWindow(); |
+ aura::client::ScreenPositionClient* position_client = |
+ aura::client::GetScreenPositionClient(root_window); |
+ DCHECK(position_client); |
+ return position_client; |
+} |
} // namespace content |