1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class Metric(object): 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Base class for all the metrics that are used by telemetry measurements. 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) The Metric class represents a way of measuring something. Metrics are 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) helper classes used by PageMeasurements. Each PageMeasurement may use 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) multiple metrics; each metric should be focussed on collecting data 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) about one thing. 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """ 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @classmethod 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) def CustomizeBrowserOptions(cls, options): 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) """Add browser options that are required by this metric. 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Some metrics do not have any special browser options that need 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) to be added, and they do not need to override this method; by 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default, no browser options are added. 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) To add options here, call options.AppendExtraBrowserArgs(arg). 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) """ 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pass 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def Start(self, page, tab): 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Start collecting data for this metric.""" 288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) pass 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def Stop(self, page, tab): 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Stop collecting data for this metric (if applicable).""" 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) pass 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def AddResults(self, tab, results): 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Add the data collected into the results object for a measurement. 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) Metrics may implement AddResults to provide a common way to add results 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) to the PageMeasurementResults in PageMeasurement.AddMeasurement -- 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) results should be added with results.Add(trace_name, unit, value). 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """ 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) raise NotImplementedError() 42