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