| OLD | NEW |
| (Empty) | |
| 1 # Copyright 2014 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 |
| 5 from metrics import power |
| 6 |
| 7 |
| 8 def Power(original_class): |
| 9 """Decorator for adding power measurement to a measurement. |
| 10 |
| 11 Example usage (always returns the same Foo instance): |
| 12 @Power |
| 13 class PageCycler(page_measurement.PageMeasurement): |
| 14 |
| 15 Power measurement will then be added to this page measurement. Two separates |
| 16 measurement will be done, one for page loading, and the other one for the |
| 17 interaction with the page. |
| 18 """ |
| 19 |
| 20 original__init__ = original_class.__init__ |
| 21 def new__init__(self, *args, **kws): |
| 22 original__init__(self, *args, **kws) |
| 23 self._load_power_metric = power.PowerMetric() |
| 24 self._page_power_metric = power.PowerMetric() |
| 25 original_class.__init__ = new__init__ |
| 26 |
| 27 originalCustomizeBrowserOptions = original_class.CustomizeBrowserOptions |
| 28 def newCustomizeBrowserOptions(self, options): |
| 29 originalCustomizeBrowserOptions(self, options) |
| 30 power.PowerMetric.CustomizeBrowserOptions(options) |
| 31 original_class.CustomizeBrowserOptions = newCustomizeBrowserOptions |
| 32 |
| 33 originalWillNavigateToPage = original_class.WillNavigateToPage |
| 34 def newWillNavigateToPage(self, page, tab): |
| 35 originalWillNavigateToPage(self, page, tab) |
| 36 self._load_power_metric.Start(page, tab) |
| 37 original_class.WillNavigateToPage = newWillNavigateToPage |
| 38 |
| 39 originalDidNavigateToPage = original_class.DidNavigateToPage |
| 40 def newDidNavigateToPage(self, page, tab): |
| 41 self._load_power_metric.Stop(page, tab) |
| 42 originalDidNavigateToPage(self, page, tab) |
| 43 self._page_power_metric.Start(page, tab) |
| 44 original_class.DidNavigateToPage = newDidNavigateToPage |
| 45 |
| 46 originalMeasurePage = original_class.MeasurePage |
| 47 def newMeasurePage(self, page, tab, results): |
| 48 self._page_power_metric.Stop(page, tab) |
| 49 originalMeasurePage(self, page, tab, results) |
| 50 self._load_power_metric.AddResults(tab, results, 'load_') |
| 51 self._page_power_metric.AddResults(tab, results) |
| 52 original_class.MeasurePage = newMeasurePage |
| 53 |
| 54 return original_class |
| OLD | NEW |