1 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from metrics import power 6 from measurements import smoothness_controller 7 from telemetry.page import page_test 8 9 10 class Smoothness(page_test.PageTest): 11 def __init__(self): 12 super(Smoothness, self).__init__('RunSmoothness') 13 self._power_metric = None 14 self._smoothness_controller = None 15 16 @classmethod 17 def CustomizeBrowserOptions(cls, options): 18 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking') 19 options.AppendExtraBrowserArgs('--touch-events=enabled') 20 options.AppendExtraBrowserArgs('--running-performance-benchmark') 21 power.PowerMetric.CustomizeBrowserOptions(options) 22 23 def WillStartBrowser(self, platform): 24 self._power_metric = power.PowerMetric(platform) 25 26 def WillNavigateToPage(self, page, tab): 27 self._power_metric.Start(page, tab) 28 self._smoothness_controller = smoothness_controller.SmoothnessController() 29 self._smoothness_controller.SetUp(page, tab) 30 31 def WillRunActions(self, page, tab): 32 self._smoothness_controller.Start(tab) 33 34 def DidRunActions(self, page, tab): 35 self._power_metric.Stop(page, tab) 36 self._smoothness_controller.Stop(tab) 37 38 def ValidateAndMeasurePage(self, page, tab, results): 39 self._power_metric.AddResults(tab, results) 40 self._smoothness_controller.AddResults(tab, results) 41 42 def CleanUpAfterPage(self, page, tab): 43 if self._power_metric: 44 self._power_metric.Stop(page, tab) 45 if self._smoothness_controller: 46 self._smoothness_controller.CleanUp(tab) 47