146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file.
468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from metrics import power
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)from measurements import smoothness_controller
76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.page import page_test
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class Smoothness(page_test.PageTest):
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def __init__(self):
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    super(Smoothness, self).__init__('RunSmoothness')
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric = None
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    self._smoothness_controller = None
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  @classmethod
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def CustomizeBrowserOptions(cls, options):
188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    options.AppendExtraBrowserArgs('--touch-events=enabled')
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    options.AppendExtraBrowserArgs('--running-performance-benchmark')
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    power.PowerMetric.CustomizeBrowserOptions(options)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  def WillStartBrowser(self, platform):
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self._power_metric = power.PowerMetric(platform)
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def WillNavigateToPage(self, page, tab):
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.Start(page, tab)
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    self._smoothness_controller = smoothness_controller.SmoothnessController()
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self._smoothness_controller.SetUp(page, tab)
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def WillRunActions(self, page, tab):
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self._smoothness_controller.Start(tab)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  def DidRunActions(self, page, tab):
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.Stop(page, tab)
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    self._smoothness_controller.Stop(tab)
37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  def ValidateAndMeasurePage(self, page, tab, results):
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.AddResults(tab, results)
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    self._smoothness_controller.AddResults(tab, results)
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def CleanUpAfterPage(self, page, tab):
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if self._power_metric:
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      self._power_metric.Stop(page, tab)
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if self._smoothness_controller:
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      self._smoothness_controller.CleanUp(tab)
47