Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: telemetry/telemetry/internal/actions/repeatable_scroll.py

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import numbers
6
5 from telemetry.internal.actions import page_action 7 from telemetry.internal.actions import page_action
8 from telemetry.internal.actions import utils
6 from telemetry.web_perf import timeline_interaction_record 9 from telemetry.web_perf import timeline_interaction_record
7 10
8 11
9 class RepeatableScrollAction(page_action.PageAction): 12 class RepeatableScrollAction(page_action.PageAction):
10 13
11 def __init__(self, x_scroll_distance_ratio=0.0, y_scroll_distance_ratio=0.5, 14 def __init__(self, x_scroll_distance_ratio=0.0, y_scroll_distance_ratio=0.5,
12 repeat_count=0, repeat_delay_ms=250, timeout=60): 15 repeat_count=0, repeat_delay_ms=250, timeout=60,
16 prevent_fling=None, speed=None):
13 super(RepeatableScrollAction, self).__init__() 17 super(RepeatableScrollAction, self).__init__()
14 self._x_scroll_distance_ratio = x_scroll_distance_ratio 18 self._x_scroll_distance_ratio = x_scroll_distance_ratio
15 self._y_scroll_distance_ratio = y_scroll_distance_ratio 19 self._y_scroll_distance_ratio = y_scroll_distance_ratio
16 self._repeat_count = repeat_count 20 self._repeat_count = repeat_count
17 self._repeat_delay_ms = repeat_delay_ms 21 self._repeat_delay_ms = repeat_delay_ms
18 self._windowsize = [] 22 self._windowsize = []
19 self._timeout = timeout 23 self._timeout = timeout
24 self._prevent_fling = prevent_fling
25 self._speed = speed
20 26
21 def WillRunAction(self, tab): 27 def WillRunAction(self, tab):
28 utils.InjectJavaScript(tab, 'gesture_common.js')
22 # Get the dimensions of the screen. 29 # Get the dimensions of the screen.
23 window_info_js = 'window.innerWidth + "," + window.innerHeight' 30 self._windowsize = tab.EvaluateJavaScript(
24 js_result = tab.EvaluateJavaScript(window_info_js).split(',') 31 '[__GestureCommon_GetWindowWidth(),'
25 32 ' __GestureCommon_GetWindowHeight()]')
26 self._windowsize = [int(js_result[0]), int(js_result[1])] 33 assert len(self._windowsize) == 2
34 assert all(isinstance(d, numbers.Number) for d in self._windowsize)
27 35
28 def RunAction(self, tab): 36 def RunAction(self, tab):
29 # Set up a browser driven repeating scroll. The delay between the scrolls 37 # Set up a browser driven repeating scroll. The delay between the scrolls
30 # should be unaffected by render thread responsivness (or lack there of). 38 # should be unaffected by render thread responsivness (or lack there of).
31 tab.SynthesizeScrollGesture( 39 tab.SynthesizeScrollGesture(
32 x=int(self._windowsize[0] / 2), 40 x=int(self._windowsize[0] / 2),
33 y=int(self._windowsize[1] / 2), 41 y=int(self._windowsize[1] / 2),
34 xDistance=int(self._x_scroll_distance_ratio * self._windowsize[0]), 42 xDistance=int(self._x_scroll_distance_ratio * self._windowsize[0]),
35 yDistance=int(-self._y_scroll_distance_ratio * self._windowsize[1]), 43 yDistance=int(-self._y_scroll_distance_ratio * self._windowsize[1]),
44 preventFling=self._prevent_fling,
45 speed=self._speed,
36 repeatCount=self._repeat_count, 46 repeatCount=self._repeat_count,
37 repeatDelayMs=self._repeat_delay_ms, 47 repeatDelayMs=self._repeat_delay_ms,
38 interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker( 48 interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker(
39 'Gesture_ScrollAction', [timeline_interaction_record.REPEATABLE]), 49 'Gesture_ScrollAction', [timeline_interaction_record.REPEATABLE]),
40 timeout=self._timeout) 50 timeout=self._timeout)
OLDNEW
« no previous file with comments | « telemetry/telemetry/internal/actions/play.py ('k') | telemetry/telemetry/internal/actions/repeatable_scroll_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698