Index: tools/telemetry/telemetry/internal/browser/web_contents.py |
diff --git a/tools/telemetry/telemetry/internal/browser/web_contents.py b/tools/telemetry/telemetry/internal/browser/web_contents.py |
index a9731c802909314b63938a818cafb369ce83ada3..55a4ed2cb6c40789628445f7fe4c78b63e7a36e5 100644 |
--- a/tools/telemetry/telemetry/internal/browser/web_contents.py |
+++ b/tools/telemetry/telemetry/internal/browser/web_contents.py |
@@ -296,3 +296,55 @@ class WebContents(object): |
self.ExecuteJavaScript('window.chrome && chrome.benchmarking &&' |
'chrome.benchmarking.closeConnections()') |
+ def SynthesizeScrollGesture(self, x=100, y=800, xDistance=0, yDistance=-500, |
+ xOverscroll=None, yOverscroll=None, |
+ preventFling=True, speed=None, |
+ gestureSourceType=None, repeatCount=None, |
+ repeatDelayMs=None, interactionMarkerName=None): |
+ """Runs an inspector command that causes a repeatable browser driven scroll. |
+ |
+ Args: |
+ x: X coordinate of the start of the gesture in CSS pixels. |
+ y: Y coordinate of the start of the gesture in CSS pixels. |
+ xDistance: Distance to scroll along the X axis (positive to scroll left). |
+ yDistance: Ddistance to scroll along the Y axis (positive to scroll up). |
+ xOverscroll: Number of additional pixels to scroll back along the X axis. |
+ xOverscroll: Number of additional pixels to scroll back along the Y axis. |
+ preventFling: Prevents a fling gesture. |
+ speed: Swipe speed in pixels per second. |
+ gestureSourceType: Which type of input events to be generated. |
+ repeatCount: Number of additional repeats beyond the first scroll. |
+ repeatDelayMs: Number of milliseconds delay between each repeat. |
+ interactionMarkerName: The name of the interaction markers to generate. |
+ |
+ Raises: |
+ exceptions.TimeoutException |
+ exceptions.DevtoolsTargetCrashException |
+ """ |
+ params = { |
+ 'x': x, |
+ 'y': y, |
+ 'xDistance': xDistance, |
+ 'yDistance': yDistance, |
+ 'preventFling': preventFling, |
+ } |
+ |
+ if xOverscroll is not None: |
+ params['xOverscroll'] = xOverscroll |
+ |
+ if yOverscroll is not None: |
+ params['yOverscroll'] = yOverscroll |
+ |
+ if speed is not None: |
+ params['speed'] = speed |
+ |
+ if repeatCount is not None: |
+ params['repeatCount'] = repeatCount |
+ |
+ if repeatDelayMs is not None: |
+ params['repeatDelayMs'] = repeatDelayMs |
+ |
+ if interactionMarkerName is not None: |
+ params['interactionMarkerName'] = interactionMarkerName |
+ |
+ self._inspector_backend.SynthesizeScrollGesture(params) |