smoothness.py revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch# Copyright (c) 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
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)from metrics import smoothness
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)from telemetry.page import page_measurement
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Smoothness(page_measurement.PageMeasurement):
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def __init__(self):
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    super(Smoothness, self).__init__('smoothness')
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric = None
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric = None
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def CustomizeBrowserOptions(self, options):
178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    power.PowerMetric.CustomizeBrowserOptions(options)
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def CanRunForPage(self, page):
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return hasattr(page, 'smoothness')
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  def WillRunActions(self, page, tab):
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric = power.PowerMetric()
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.Start(page, tab)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric = smoothness.SmoothnessMetric()
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric.Start(page, tab)
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def DidRunAction(self, page, tab, action):
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric.AddActionToIncludeInMetric(action)
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  def DidRunActions(self, page, tab):
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.Stop(page, tab)
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric.Stop(page, tab)
35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  def MeasurePage(self, page, tab, results):
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._power_metric.AddResults(tab, results)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    self._smoothness_metric.AddResults(tab, results)
39