| Index: tools/telemetry/telemetry/internal/actions/repeatable_scroll.py
|
| diff --git a/tools/telemetry/telemetry/internal/actions/repeatable_scroll.py b/tools/telemetry/telemetry/internal/actions/repeatable_scroll.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ef33399d3e41b132645bd625718b38f399a7bfdc
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/internal/actions/repeatable_scroll.py
|
| @@ -0,0 +1,38 @@
|
| +# Copyright 2015 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +from telemetry.internal.actions import page_action
|
| +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):
|
| + super(RepeatableScrollAction, self).__init__()
|
| + self._x_scroll_distance_ratio = x_scroll_distance_ratio
|
| + self._y_scroll_distance_ratio = y_scroll_distance_ratio
|
| + self._repeat_count = repeat_count
|
| + self._repeat_delay_ms = repeat_delay_ms
|
| + self._windowsize = []
|
| +
|
| + def WillRunAction(self, tab):
|
| + # 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])]
|
| +
|
| + def RunAction(self, tab):
|
| + # Set up a browser driven repeating scroll. The delay between the scrolls
|
| + # should be unaffected by render thread responsivness (or lack there of).
|
| + tab.SynthesizeScrollGesture(
|
| + x=int(self._windowsize[0] / 2),
|
| + 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]),
|
| + repeatCount=self._repeat_count,
|
| + repeatDelayMs=self._repeat_delay_ms,
|
| + interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker(
|
| + 'Gesture_ScrollAction', [timeline_interaction_record.REPEATABLE]))
|
|
|