Separate Simple Backend creation from initialization.
[chromium-blink-merge.git] / tools / perf / perf_tools / histogram_measurement.py
blob267329a0445e23a895e29ac6758880782d4a411d
1 # Copyright (c) 2013 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 from perf_tools import histogram as histogram_module
6 BROWSER_HISTOGRAM = 'browser_histogram'
7 RENDERER_HISTOGRAM = 'renderer_histogram'
9 class HistogramMeasurement(object):
10 def __init__(self, histogram, histogram_type):
11 self.name = histogram['name']
12 self.units = histogram['units']
13 self.histogram_type = histogram_type
14 self._start_values = dict()
16 def Start(self, page, tab):
17 """Get the starting value for the histogram. This value will then be
18 subtracted from the actual measurement."""
19 data = self._GetHistogramFromDomAutomation(tab)
20 if data:
21 self._start_values[page.url + self.name] = data
23 def GetValue(self, page, tab, results):
24 data = self._GetHistogramFromDomAutomation(tab)
25 if not data:
26 return
27 new_histogram = histogram_module.SubtractHistogram(
28 data, self._start_values[page.url + self.name])
29 results.Add(self.name, self.units, new_histogram,
30 data_type='unimportant-histogram')
32 @property
33 def histogram_function(self):
34 if self.histogram_type == BROWSER_HISTOGRAM:
35 return 'getBrowserHistogram'
36 return 'getHistogram'
38 def _GetHistogramFromDomAutomation(self, tab):
39 js = ('window.domAutomationController.%s ? '
40 'window.domAutomationController.%s("%s") : ""' %
41 (self.histogram_function, self.histogram_function, self.name))
42 return tab.EvaluateJavaScript(js)