# Copyright 2013 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
class Metric(object):
"""Base class for all the metrics that are used by telemetry measurements.
The Metric class represents a way of measuring something. Metrics are
helper classes used by PageTests. Each PageTest may use
multiple metrics; each metric should be focused on collecting data
about one thing.
"""
def Start(self, page, tab):
"""Start collecting data for this metric."""
def Stop(self, page, tab):
"""Stop collecting data for this metric (if applicable)."""
def AddResults(self, tab, results):
"""Add the data collected into the results object for a measurement.
Metrics may implement AddResults to provide a common way to add results
to the PageTestResults in PageTest.ValidateOrMeasurePage --
results should be added with results.AddMeasurement(...).
"""
raise NotImplementedError()