Index: content/renderer/gpu/gpu_benchmarking_extension.cc |
diff --git a/content/renderer/gpu/gpu_benchmarking_extension.cc b/content/renderer/gpu/gpu_benchmarking_extension.cc |
index 366d0a8b68aa219db1eab3446ce393848b4eefc8..27038d732042457f92bb8ef9693ad3bfb8a3848b 100644 |
--- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
+++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
@@ -289,6 +289,22 @@ bool BeginSmoothScroll(v8::Isolate* isolate, |
if (!context.Init(false)) |
return false; |
+ // Convert coordinates from CSS pixels to density independent pixels (DIPs). |
+ float page_scale_factor = context.web_view()->pageScaleFactor(); |
+ |
+ if (gesture_source_type == SyntheticGestureParams::MOUSE_INPUT) { |
+ // Ensure the mouse is centered and visible, in case it will |
+ // trigger any hover or mousemove effects. |
+ blink::WebRect contentRect = |
+ context.web_view()->mainFrame()->visibleContentRect(); |
+ blink::WebMouseEvent mouseMove; |
+ mouseMove.type = blink::WebInputEvent::MouseMove; |
+ mouseMove.x = (contentRect.x + contentRect.width / 2) * page_scale_factor; |
+ mouseMove.y = (contentRect.y + contentRect.height / 2) * page_scale_factor; |
+ context.web_view()->handleInputEvent(mouseMove); |
+ context.web_view()->setCursorVisibilityState(true); |
+ } |
+ |
scoped_refptr<CallbackAndContext> callback_and_context = |
new CallbackAndContext( |
isolate, callback, context.web_frame()->mainWorldScriptContext()); |
@@ -296,9 +312,6 @@ bool BeginSmoothScroll(v8::Isolate* isolate, |
scoped_ptr<SyntheticSmoothScrollGestureParams> gesture_params( |
new SyntheticSmoothScrollGestureParams); |
- // Convert coordinates from CSS pixels to density independent pixels (DIPs). |
- float page_scale_factor = context.web_view()->pageScaleFactor(); |
- |
if (gesture_source_type < 0 || |
gesture_source_type > SyntheticGestureParams::GESTURE_SOURCE_TYPE_MAX) { |
return false; |