| Index: tools/perf/measurements/decorators.py
|
| diff --git a/tools/perf/measurements/decorators.py b/tools/perf/measurements/decorators.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d878eb37e02b6f69c064148e6005c0f0767a555a
|
| --- /dev/null
|
| +++ b/tools/perf/measurements/decorators.py
|
| @@ -0,0 +1,54 @@
|
| +# Copyright 2014 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +from metrics import power
|
| +
|
| +
|
| +def Power(original_class):
|
| + """Decorator for adding power measurement to a measurement.
|
| +
|
| + Example usage (always returns the same Foo instance):
|
| + @Power
|
| + class PageCycler(page_measurement.PageMeasurement):
|
| +
|
| + Power measurement will then be added to this page measurement. Two separates
|
| + measurement will be done, one for page loading, and the other one for the
|
| + interaction with the page.
|
| + """
|
| +
|
| + original__init__ = original_class.__init__
|
| + def new__init__(self, *args, **kws):
|
| + original__init__(self, *args, **kws)
|
| + self._load_power_metric = power.PowerMetric()
|
| + self._page_power_metric = power.PowerMetric()
|
| + original_class.__init__ = new__init__
|
| +
|
| + originalCustomizeBrowserOptions = original_class.CustomizeBrowserOptions
|
| + def newCustomizeBrowserOptions(self, options):
|
| + originalCustomizeBrowserOptions(self, options)
|
| + power.PowerMetric.CustomizeBrowserOptions(options)
|
| + original_class.CustomizeBrowserOptions = newCustomizeBrowserOptions
|
| +
|
| + originalWillNavigateToPage = original_class.WillNavigateToPage
|
| + def newWillNavigateToPage(self, page, tab):
|
| + originalWillNavigateToPage(self, page, tab)
|
| + self._load_power_metric.Start(page, tab)
|
| + original_class.WillNavigateToPage = newWillNavigateToPage
|
| +
|
| + originalDidNavigateToPage = original_class.DidNavigateToPage
|
| + def newDidNavigateToPage(self, page, tab):
|
| + self._load_power_metric.Stop(page, tab)
|
| + originalDidNavigateToPage(self, page, tab)
|
| + self._page_power_metric.Start(page, tab)
|
| + original_class.DidNavigateToPage = newDidNavigateToPage
|
| +
|
| + originalMeasurePage = original_class.MeasurePage
|
| + def newMeasurePage(self, page, tab, results):
|
| + self._page_power_metric.Stop(page, tab)
|
| + originalMeasurePage(self, page, tab, results)
|
| + self._load_power_metric.AddResults(tab, results, 'load_')
|
| + self._page_power_metric.AddResults(tab, results)
|
| + original_class.MeasurePage = newMeasurePage
|
| +
|
| + return original_class
|
|
|