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

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

Issue 2876843002: Simulate interactivity boost for simulated user input events
Patch Set: Created 3 years, 7 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 5 import numbers
6 6
7 from telemetry.internal.actions import page_action 7 from telemetry.internal.actions import page_action
8 from telemetry.internal.actions import utils 8 from telemetry.internal.actions import utils
9 from telemetry.web_perf import timeline_interaction_record 9 from telemetry.web_perf import timeline_interaction_record
10 10
11 11
12 class RepeatableScrollAction(page_action.PageAction): 12 class RepeatableScrollAction(page_action.PageAction):
13 13
14 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,
15 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): 16 prevent_fling=None, speed=None):
17 super(RepeatableScrollAction, self).__init__() 17 super(RepeatableScrollAction, self).__init__()
18 self._x_scroll_distance_ratio = x_scroll_distance_ratio 18 self._x_scroll_distance_ratio = x_scroll_distance_ratio
19 self._y_scroll_distance_ratio = y_scroll_distance_ratio 19 self._y_scroll_distance_ratio = y_scroll_distance_ratio
20 self._repeat_count = repeat_count 20 self._repeat_count = repeat_count
21 self._repeat_delay_ms = repeat_delay_ms 21 self._repeat_delay_ms = repeat_delay_ms
22 self._windowsize = [] 22 self._windowsize = []
23 self._timeout = timeout 23 self._timeout = timeout
24 self._prevent_fling = prevent_fling 24 self._prevent_fling = prevent_fling
25 self._speed = speed 25 self._speed = speed
26 26
27 def SimulatesUserInput(self):
28 return True
29
27 def WillRunAction(self, tab): 30 def WillRunAction(self, tab):
28 utils.InjectJavaScript(tab, 'gesture_common.js') 31 utils.InjectJavaScript(tab, 'gesture_common.js')
29 # Get the dimensions of the screen. 32 # Get the dimensions of the screen.
30 self._windowsize = tab.EvaluateJavaScript( 33 self._windowsize = tab.EvaluateJavaScript(
31 '[__GestureCommon_GetWindowWidth(),' 34 '[__GestureCommon_GetWindowWidth(),'
32 ' __GestureCommon_GetWindowHeight()]') 35 ' __GestureCommon_GetWindowHeight()]')
33 assert len(self._windowsize) == 2 36 assert len(self._windowsize) == 2
34 assert all(isinstance(d, numbers.Number) for d in self._windowsize) 37 assert all(isinstance(d, numbers.Number) for d in self._windowsize)
35 38
36 def RunAction(self, tab): 39 def RunAction(self, tab):
37 # Set up a browser driven repeating scroll. The delay between the scrolls 40 # Set up a browser driven repeating scroll. The delay between the scrolls
38 # should be unaffected by render thread responsivness (or lack there of). 41 # should be unaffected by render thread responsivness (or lack there of).
39 tab.SynthesizeScrollGesture( 42 tab.SynthesizeScrollGesture(
40 x=int(self._windowsize[0] / 2), 43 x=int(self._windowsize[0] / 2),
41 y=int(self._windowsize[1] / 2), 44 y=int(self._windowsize[1] / 2),
42 xDistance=int(self._x_scroll_distance_ratio * self._windowsize[0]), 45 xDistance=int(self._x_scroll_distance_ratio * self._windowsize[0]),
43 yDistance=int(-self._y_scroll_distance_ratio * self._windowsize[1]), 46 yDistance=int(-self._y_scroll_distance_ratio * self._windowsize[1]),
44 preventFling=self._prevent_fling, 47 preventFling=self._prevent_fling,
45 speed=self._speed, 48 speed=self._speed,
46 repeatCount=self._repeat_count, 49 repeatCount=self._repeat_count,
47 repeatDelayMs=self._repeat_delay_ms, 50 repeatDelayMs=self._repeat_delay_ms,
48 interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker( 51 interactionMarkerName=timeline_interaction_record.GetJavaScriptMarker(
49 'Gesture_ScrollAction', [timeline_interaction_record.REPEATABLE]), 52 'Gesture_ScrollAction', [timeline_interaction_record.REPEATABLE]),
50 timeout=self._timeout) 53 timeout=self._timeout)
OLDNEW
« no previous file with comments | « telemetry/telemetry/internal/actions/pinch.py ('k') | telemetry/telemetry/internal/actions/scroll.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698