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
5from metrics import power
6from measurements import smoothness_controller
7from telemetry.page import page_test
8
9
10class 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