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

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

Issue 441873007: Move timeline and importers to use telemetry.value.TraceValue (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 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 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import sys 4 import sys
5 5
6 from measurements import smooth_gesture_util 6 from measurements import smooth_gesture_util
7 from telemetry.timeline.model import TimelineModel 7 from telemetry.timeline.model import TimelineModel
8 from telemetry.page import page_measurement 8 from telemetry.page import page_measurement
9 from telemetry.page.actions import action_runner 9 from telemetry.page.actions import action_runner
10 from telemetry.value import list_of_scalar_values 10 from telemetry.value import list_of_scalar_values
(...skipping 12 matching lines...) Expand all
23 23
24 24
25 class MissingDisplayFrameRateError(page_measurement.MeasurementFailure): 25 class MissingDisplayFrameRateError(page_measurement.MeasurementFailure):
26 def __init__(self, name): 26 def __init__(self, name):
27 super(MissingDisplayFrameRateError, self).__init__( 27 super(MissingDisplayFrameRateError, self).__init__(
28 'Missing display frame rate metrics: ' + name) 28 'Missing display frame rate metrics: ' + name)
29 29
30 class SmoothnessController(object): 30 class SmoothnessController(object):
31 def __init__(self): 31 def __init__(self):
32 self._timeline_model = None 32 self._timeline_model = None
33 self._tracing_timeline_data = None 33 self._trace_value = None
34 self._interaction = None 34 self._interaction = None
35 35
36 def SetUp(self, page, tab): 36 def SetUp(self, page, tab):
37 # FIXME: Remove webkit.console when blink.console lands in chromium and 37 # FIXME: Remove webkit.console when blink.console lands in chromium and
38 # the ref builds are updated. crbug.com/386847 38 # the ref builds are updated. crbug.com/386847
39 custom_categories = ['webkit.console', 'blink.console', 'benchmark'] 39 custom_categories = ['webkit.console', 'blink.console', 'benchmark']
40 custom_categories += page.GetSyntheticDelayCategories() 40 custom_categories += page.GetSyntheticDelayCategories()
41 tab.browser.StartTracing(','.join(custom_categories), 60) 41 tab.browser.StartTracing(','.join(custom_categories), 60)
42 if tab.browser.platform.IsRawDisplayFrameRateSupported(): 42 if tab.browser.platform.IsRawDisplayFrameRateSupported():
43 tab.browser.platform.StartRawDisplayFrameRateMeasurement() 43 tab.browser.platform.StartRawDisplayFrameRateMeasurement()
44 44
45 def Start(self, tab): 45 def Start(self, tab):
46 # Start the smooth marker for all smooth actions. 46 # Start the smooth marker for all smooth actions.
47 runner = action_runner.ActionRunner(tab) 47 runner = action_runner.ActionRunner(tab)
48 self._interaction = runner.BeginInteraction( 48 self._interaction = runner.BeginInteraction(
49 RUN_SMOOTH_ACTIONS, is_smooth=True) 49 RUN_SMOOTH_ACTIONS, is_smooth=True)
50 50
51 def Stop(self, tab): 51 def Stop(self, tab):
52 # End the smooth marker for all smooth actions. 52 # End the smooth marker for all smooth actions.
53 self._interaction.End() 53 self._interaction.End()
54 # Stop tracing for smoothness metric. 54 # Stop tracing for smoothness metric.
55 if tab.browser.platform.IsRawDisplayFrameRateSupported(): 55 if tab.browser.platform.IsRawDisplayFrameRateSupported():
56 tab.browser.platform.StopRawDisplayFrameRateMeasurement() 56 tab.browser.platform.StopRawDisplayFrameRateMeasurement()
57 self._tracing_timeline_data = tab.browser.StopTracing() 57 self._trace_value = tab.browser.StopTracing()
58 self._timeline_model = TimelineModel( 58 self._timeline_model = TimelineModel(self._trace_value)
59 timeline_data=self._tracing_timeline_data)
60 59
61 def AddResults(self, tab, results): 60 def AddResults(self, tab, results):
62 # Add results of smoothness metric. This computes the smoothness metric for 61 # Add results of smoothness metric. This computes the smoothness metric for
63 # the time ranges of gestures, if there is at least one, else the the time 62 # the time ranges of gestures, if there is at least one, else the the time
64 # ranges from the first action to the last action. 63 # ranges from the first action to the last action.
65 64
66 renderer_thread = self._timeline_model.GetRendererThreadFromTabId( 65 renderer_thread = self._timeline_model.GetRendererThreadFromTabId(
67 tab.id) 66 tab.id)
68 run_smooth_actions_record = None 67 run_smooth_actions_record = None
69 smooth_records = [] 68 smooth_records = []
(...skipping 11 matching lines...) Expand all
81 smooth_gesture_util.GetAdjustedInteractionIfContainGesture( 80 smooth_gesture_util.GetAdjustedInteractionIfContainGesture(
82 self._timeline_model, r)) 81 self._timeline_model, r))
83 82
84 # If there is no other smooth records, we make measurements on time range 83 # If there is no other smooth records, we make measurements on time range
85 # marked smoothness_controller itself. 84 # marked smoothness_controller itself.
86 # TODO(nednguyen): when crbug.com/239179 is marked fixed, makes sure that 85 # TODO(nednguyen): when crbug.com/239179 is marked fixed, makes sure that
87 # page sets are responsible for issueing the markers themselves. 86 # page sets are responsible for issueing the markers themselves.
88 if len(smooth_records) == 0: 87 if len(smooth_records) == 0:
89 if run_smooth_actions_record is None: 88 if run_smooth_actions_record is None:
90 sys.stderr.write('Raw tracing data:\n') 89 sys.stderr.write('Raw tracing data:\n')
91 sys.stderr.write(repr(self._tracing_timeline_data.EventData())) 90 self._trace_value.Serialize(sys.stderr)
92 sys.stderr.write('\n') 91 sys.stderr.write('\n')
93 raise Exception('SmoothnessController failed to issue markers for the ' 92 raise Exception('SmoothnessController failed to issue markers for the '
94 'whole interaction.') 93 'whole interaction.')
95 else: 94 else:
96 smooth_records = [run_smooth_actions_record] 95 smooth_records = [run_smooth_actions_record]
97 96
98 # Create an interaction_record for this legacy measurement. Since we don't 97 # Create an interaction_record for this legacy measurement. Since we don't
99 # wrap the results that are sent to smoothness metric, the label will 98 # wrap the results that are sent to smoothness metric, the label will
100 # not be used. 99 # not be used.
101 smoothness_metric = smoothness.SmoothnessMetric() 100 smoothness_metric = smoothness.SmoothnessMetric()
(...skipping 10 matching lines...) Expand all
112 else: 111 else:
113 results.AddValue(scalar.ScalarValue( 112 results.AddValue(scalar.ScalarValue(
114 results.current_page, r.name, r.unit, r.value, 113 results.current_page, r.name, r.unit, r.value,
115 description=DESCRIPTIONS.get(r.name))) 114 description=DESCRIPTIONS.get(r.name)))
116 115
117 def CleanUp(self, tab): 116 def CleanUp(self, tab):
118 if tab.browser.platform.IsRawDisplayFrameRateSupported(): 117 if tab.browser.platform.IsRawDisplayFrameRateSupported():
119 tab.browser.platform.StopRawDisplayFrameRateMeasurement() 118 tab.browser.platform.StopRawDisplayFrameRateMeasurement()
120 if tab.browser.is_tracing_running: 119 if tab.browser.is_tracing_running:
121 tab.browser.StopTracing() 120 tab.browser.StopTracing()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698