Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: tools/perf/measurements/decorators.py

Issue 230163004: Using decorator for power monitoring. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/perf/measurements/page_cycler.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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
OLDNEW
« no previous file with comments | « no previous file | tools/perf/measurements/page_cycler.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698