| Index: tools/perf/page_sets/top_pages.py
|
| diff --git a/tools/perf/page_sets/top_pages.py b/tools/perf/page_sets/top_pages.py
|
| index 5ecfe4b735385dc68c9a5d13cd421e3af16997d3..69b06ac552ca52f552e6759b286a2ad60eeffb32 100644
|
| --- a/tools/perf/page_sets/top_pages.py
|
| +++ b/tools/perf/page_sets/top_pages.py
|
| @@ -59,6 +59,47 @@ class GmailPage(TopPages):
|
| 'document.readyState == "complete"')
|
|
|
|
|
| +class GmailMouseScrollPage(GmailPage):
|
| +
|
| + """ Why: productivity, top google properties """
|
| +
|
| + def RunPageInteractions(self, action_runner):
|
| + action_runner.ExecuteJavaScript('''
|
| + gmonkey.load('2.0', function(api) {
|
| + window.__scrollableElementForTelemetry = api.getScrollableElement();
|
| + });''')
|
| + action_runner.WaitForJavaScriptCondition(
|
| + 'window.__scrollableElementForTelemetry != null')
|
| + scrollbar_x, start_y, end_y = self._CalculateScrollBarRatios(action_runner)
|
| +
|
| + interaction = action_runner.BeginGestureInteraction(
|
| + 'DragAction')
|
| + action_runner.DragPage(left_start_ratio=scrollbar_x,
|
| + top_start_ratio=start_y, left_end_ratio=scrollbar_x,
|
| + top_end_ratio=end_y, speed_in_pixels_per_second=100,
|
| + element_function='window.__scrollableElementForTelemetry')
|
| + interaction.End()
|
| +
|
| + def _CalculateScrollBarRatios(self, action_runner):
|
| + viewport_height = float(action_runner.EvaluateJavaScript(
|
| + 'window.__scrollableElementForTelemetry.clientHeight'))
|
| + content_height = float(action_runner.EvaluateJavaScript(
|
| + 'window.__scrollableElementForTelemetry.scrollHeight'))
|
| + viewport_width = float(action_runner.EvaluateJavaScript(
|
| + 'window.__scrollableElementForTelemetry.offsetWidth'))
|
| + scrollbar_width = float(action_runner.EvaluateJavaScript('''
|
| + window.__scrollableElementForTelemetry.offsetWidth -
|
| + window.__scrollableElementForTelemetry.scrollWidth'''))
|
| +
|
| + # This calculation is correct only when the element doesn't have border or
|
| + # padding or scroll buttons (eg: gmail mail element).
|
| + scrollbar_start_mid_y = viewport_height / (2 * content_height)
|
| + scrollbar_end_mid_y = 1 - scrollbar_start_mid_y
|
| + scrollbar_mid_x_offset = scrollbar_width / (2 * viewport_width)
|
| + scrollbar_mid_x = 1 - scrollbar_mid_x_offset
|
| + return scrollbar_mid_x, scrollbar_start_mid_y, scrollbar_end_mid_y
|
| +
|
| +
|
| class GoogleCalendarPage(TopPages):
|
|
|
| """ Why: productivity, top google properties """
|
| @@ -117,12 +158,6 @@ class GoogleMapsPage(TopPages):
|
| action_runner.WaitForElement(selector='.widget-zoom-in')
|
| action_runner.WaitForElement(selector='.widget-zoom-out')
|
|
|
| - # Disabled on android since desktop record of maps doesn't load in android.
|
| - def CanRunOnBrowser(self, browser_info):
|
| - return (browser_info._browser._platform_backend.platform.GetOSName() !=
|
| - 'android')
|
| -
|
| -
|
| class GooglePlusPage(TopPages):
|
|
|
| """ Why: social; top google property; Public profile; infinite scrolls """
|
|
|