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
)
21 self
._start
_values
[page
.url
+ self
.name
] = data
23 def GetValue(self
, page
, tab
, results
):
24 data
= self
._GetHistogramFromDomAutomation
(tab
)
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')
33 def histogram_function(self
):
34 if self
.histogram_type
== BROWSER_HISTOGRAM
:
35 return 'getBrowserHistogram'
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
)