| OLD | NEW |
| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 # ranges from the first action to the last action. | 56 # ranges from the first action to the last action. |
| 57 | 57 |
| 58 renderer_thread = self._timeline_model.GetRendererThreadFromTabId( | 58 renderer_thread = self._timeline_model.GetRendererThreadFromTabId( |
| 59 tab.id) | 59 tab.id) |
| 60 run_smooth_actions_record = None | 60 run_smooth_actions_record = None |
| 61 smooth_records = [] | 61 smooth_records = [] |
| 62 for event in renderer_thread.async_slices: | 62 for event in renderer_thread.async_slices: |
| 63 if not tir_module.IsTimelineInteractionRecord(event.name): | 63 if not tir_module.IsTimelineInteractionRecord(event.name): |
| 64 continue | 64 continue |
| 65 r = tir_module.TimelineInteractionRecord.FromAsyncEvent(event) | 65 r = tir_module.TimelineInteractionRecord.FromAsyncEvent(event) |
| 66 if r.logical_name == RUN_SMOOTH_ACTIONS: | 66 if r.label == RUN_SMOOTH_ACTIONS: |
| 67 assert run_smooth_actions_record is None, ( | 67 assert run_smooth_actions_record is None, ( |
| 68 'SmoothnessController cannot issue more than 1 %s record' % | 68 'SmoothnessController cannot issue more than 1 %s record' % |
| 69 RUN_SMOOTH_ACTIONS) | 69 RUN_SMOOTH_ACTIONS) |
| 70 run_smooth_actions_record = r | 70 run_smooth_actions_record = r |
| 71 elif r.is_smooth: | 71 elif r.is_smooth: |
| 72 smooth_records.append( | 72 smooth_records.append( |
| 73 smooth_gesture_util.GetAdjustedInteractionIfContainGesture( | 73 smooth_gesture_util.GetAdjustedInteractionIfContainGesture( |
| 74 self._timeline_model, r)) | 74 self._timeline_model, r)) |
| 75 | 75 |
| 76 # If there is no other smooth records, we make measurements on time range | 76 # If there is no other smooth records, we make measurements on time range |
| 77 # marked smoothness_controller itself. | 77 # marked smoothness_controller itself. |
| 78 # TODO(nednguyen): when crbug.com/239179 is marked fixed, makes sure that | 78 # TODO(nednguyen): when crbug.com/239179 is marked fixed, makes sure that |
| 79 # page sets are responsible for issueing the markers themselves. | 79 # page sets are responsible for issueing the markers themselves. |
| 80 if len(smooth_records) == 0: | 80 if len(smooth_records) == 0: |
| 81 if run_smooth_actions_record is None: | 81 if run_smooth_actions_record is None: |
| 82 sys.stderr.write('Raw tracing data:\n') | 82 sys.stderr.write('Raw tracing data:\n') |
| 83 sys.stderr.write(repr(self._tracing_timeline_data.EventData())) | 83 sys.stderr.write(repr(self._tracing_timeline_data.EventData())) |
| 84 sys.stderr.write('\n') | 84 sys.stderr.write('\n') |
| 85 raise Exception('SmoothnessController failed to issue markers for the ' | 85 raise Exception('SmoothnessController failed to issue markers for the ' |
| 86 'whole interaction.') | 86 'whole interaction.') |
| 87 else: | 87 else: |
| 88 smooth_records = [run_smooth_actions_record] | 88 smooth_records = [run_smooth_actions_record] |
| 89 | 89 |
| 90 # Create an interaction_record for this legacy measurement. Since we don't | 90 # Create an interaction_record for this legacy measurement. Since we don't |
| 91 # wrap the results that is sent to smoothnes metric, the logical_name will | 91 # wrap the results that is sent to smoothnes metric, the label will |
| 92 # not be used. | 92 # not be used. |
| 93 smoothness_metric = smoothness.SmoothnessMetric() | 93 smoothness_metric = smoothness.SmoothnessMetric() |
| 94 smoothness_metric.AddResults( | 94 smoothness_metric.AddResults( |
| 95 self._timeline_model, renderer_thread, smooth_records, results) | 95 self._timeline_model, renderer_thread, smooth_records, results) |
| 96 if tab.browser.platform.IsRawDisplayFrameRateSupported(): | 96 if tab.browser.platform.IsRawDisplayFrameRateSupported(): |
| 97 for r in tab.browser.platform.GetRawDisplayFrameRateMeasurements(): | 97 for r in tab.browser.platform.GetRawDisplayFrameRateMeasurements(): |
| 98 if r.value is None: | 98 if r.value is None: |
| 99 raise MissingDisplayFrameRateError(r.name) | 99 raise MissingDisplayFrameRateError(r.name) |
| 100 if isinstance(r.value, list): | 100 if isinstance(r.value, list): |
| 101 results.AddValue(list_of_scalar_values.ListOfScalarValues( | 101 results.AddValue(list_of_scalar_values.ListOfScalarValues( |
| 102 results.current_page, r.name, r.unit, r.value)) | 102 results.current_page, r.name, r.unit, r.value)) |
| 103 else: | 103 else: |
| 104 results.AddValue(scalar.ScalarValue( | 104 results.AddValue(scalar.ScalarValue( |
| 105 results.current_page, r.name, r.unit, r.value)) | 105 results.current_page, r.name, r.unit, r.value)) |
| 106 | 106 |
| 107 def CleanUp(self, tab): | 107 def CleanUp(self, tab): |
| 108 if tab.browser.platform.IsRawDisplayFrameRateSupported(): | 108 if tab.browser.platform.IsRawDisplayFrameRateSupported(): |
| 109 tab.browser.platform.StopRawDisplayFrameRateMeasurement() | 109 tab.browser.platform.StopRawDisplayFrameRateMeasurement() |
| 110 if tab.browser.is_tracing_running: | 110 if tab.browser.is_tracing_running: |
| 111 tab.browser.StopTracing() | 111 tab.browser.StopTracing() |
| OLD | NEW |