Index: telemetry/telemetry/internal/actions/repeatable_scroll.py |
diff --git a/telemetry/telemetry/internal/actions/repeatable_scroll.py b/telemetry/telemetry/internal/actions/repeatable_scroll.py |
index 79ba4c4f212576ba7c8a8f603915c30d93c3cec0..9ed09e061ec1e72de2f703b7c63f19be7b408c8e 100644 |
--- a/telemetry/telemetry/internal/actions/repeatable_scroll.py |
+++ b/telemetry/telemetry/internal/actions/repeatable_scroll.py |
@@ -2,14 +2,18 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import numbers |
+ |
from telemetry.internal.actions import page_action |
+from telemetry.internal.actions import utils |
from telemetry.web_perf import timeline_interaction_record |
class RepeatableScrollAction(page_action.PageAction): |
def __init__(self, x_scroll_distance_ratio=0.0, y_scroll_distance_ratio=0.5, |
- repeat_count=0, repeat_delay_ms=250, timeout=60): |
+ repeat_count=0, repeat_delay_ms=250, timeout=60, |
+ prevent_fling=None, speed=None): |
super(RepeatableScrollAction, self).__init__() |
self._x_scroll_distance_ratio = x_scroll_distance_ratio |
self._y_scroll_distance_ratio = y_scroll_distance_ratio |
@@ -17,13 +21,17 @@ class RepeatableScrollAction(page_action.PageAction): |
self._repeat_delay_ms = repeat_delay_ms |
self._windowsize = [] |
self._timeout = timeout |
+ self._prevent_fling = prevent_fling |
+ self._speed = speed |
def WillRunAction(self, tab): |
+ utils.InjectJavaScript(tab, 'gesture_common.js') |
# Get the dimensions of the screen. |
- window_info_js = 'window.innerWidth + "," + window.innerHeight' |
- js_result = tab.EvaluateJavaScript(window_info_js).split(',') |
- |
- self._windowsize = [int(js_result[0]), int(js_result[1])] |
+ self._windowsize = tab.EvaluateJavaScript( |
+ '[__GestureCommon_GetWindowWidth(),' |
+ ' __GestureCommon_GetWindowHeight()]') |
+ assert len(self._windowsize) == 2 |
+ assert all(isinstance(d, numbers.Number) for d in self._windowsize) |
def RunAction(self, tab): |
# Set up a browser driven repeating scroll. The delay between the scrolls |
@@ -33,6 +41,8 @@ class RepeatableScrollAction(page_action.PageAction): |
y=int(self._windowsize[1] / 2), |
xDistance=int(self._x_scroll_distance_ratio * self._windowsize[0]), |
yDistance=int(-self._y_scroll_distance_ratio * self._windowsize[1]), |
+ preventFling=self._prevent_fling, |
+ speed=self._speed, |
repeatCount=self._repeat_count, |
repeatDelayMs=self._repeat_delay_ms, |
interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker( |