| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 | 4 |
| 5 import logging | 5 import logging |
| 6 import sys | 6 import sys |
| 7 import time | 7 import time |
| 8 | 8 |
| 9 from metrics import rendering_stats | 9 from metrics import rendering_stats |
| 10 from telemetry.page import page_measurement | 10 from telemetry.page import page_measurement |
| 11 from telemetry.core.timeline.model import MarkerMismatchError | 11 from telemetry.core.timeline.model import MarkerMismatchError |
| 12 from telemetry.core.timeline.model import MarkerOverlapError | 12 from telemetry.core.timeline.model import MarkerOverlapError |
| 13 | 13 |
| 14 TIMELINE_MARKER = 'RasterizeAndRecord' | |
| 15 | |
| 16 | 14 |
| 17 class RasterizeAndRecord(page_measurement.PageMeasurement): | 15 class RasterizeAndRecord(page_measurement.PageMeasurement): |
| 18 def __init__(self): | 16 def __init__(self): |
| 19 super(RasterizeAndRecord, self).__init__('', True) | 17 super(RasterizeAndRecord, self).__init__('', True) |
| 20 self._metrics = None | 18 self._metrics = None |
| 21 self._compositing_features_enabled = False | 19 self._compositing_features_enabled = False |
| 22 | 20 |
| 23 def AddCommandLineOptions(self, parser): | 21 def AddCommandLineOptions(self, parser): |
| 24 parser.add_option('--raster-record-repeat', dest='raster_record_repeat', | 22 parser.add_option('--raster-record-repeat', dest='raster_record_repeat', |
| 25 default=20, | 23 default=20, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 'window.__rafFired = true;' | 90 'window.__rafFired = true;' |
| 93 '});') | 91 '});') |
| 94 | 92 |
| 95 time.sleep(float(self.options.stop_wait_time)) | 93 time.sleep(float(self.options.stop_wait_time)) |
| 96 tab.browser.StartTracing('webkit.console,benchmark', 60) | 94 tab.browser.StartTracing('webkit.console,benchmark', 60) |
| 97 | 95 |
| 98 tab.ExecuteJavaScript( | 96 tab.ExecuteJavaScript( |
| 99 'window.__rafFired = false;' | 97 'window.__rafFired = false;' |
| 100 'window.webkitRequestAnimationFrame(function() {' | 98 'window.webkitRequestAnimationFrame(function() {' |
| 101 'chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers();' | 99 'chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers();' |
| 102 'console.time("' + TIMELINE_MARKER + '");' | 100 'console.time("' + rendering_stats.RENDER_PROCESS_MARKER + '");' |
| 103 'window.__rafFired = true;' | 101 'window.__rafFired = true;' |
| 104 '});') | 102 '});') |
| 105 # Wait until the frame was drawn. | 103 # Wait until the frame was drawn. |
| 106 # Needs to be adjusted for every device and for different | 104 # Needs to be adjusted for every device and for different |
| 107 # raster_record_repeat counts. | 105 # raster_record_repeat counts. |
| 108 # TODO(ernstm): replace by call-back. | 106 # TODO(ernstm): replace by call-back. |
| 109 time.sleep(float(self.options.stop_wait_time)) | 107 time.sleep(float(self.options.stop_wait_time)) |
| 110 tab.ExecuteJavaScript( | 108 tab.ExecuteJavaScript( |
| 111 'console.timeEnd("' + TIMELINE_MARKER + '")') | 109 'console.timeEnd("' + rendering_stats.RENDER_PROCESS_MARKER + '")') |
| 112 | 110 |
| 113 timeline = tab.browser.StopTracing().AsTimelineModel() | 111 timeline = tab.browser.StopTracing().AsTimelineModel() |
| 114 try: | 112 try: |
| 115 timeline_markers = timeline.FindTimelineMarkers(TIMELINE_MARKER) | 113 timeline_markers = timeline.FindTimelineMarkers( |
| 114 rendering_stats.RENDER_PROCESS_MARKER) |
| 116 except (MarkerMismatchError, MarkerOverlapError) as e: | 115 except (MarkerMismatchError, MarkerOverlapError) as e: |
| 117 raise page_measurement.MeasurementFailure(str(e)) | 116 raise page_measurement.MeasurementFailure(str(e)) |
| 118 renderer_process = timeline.GetRendererProcessFromTab(tab) | 117 stats = rendering_stats.RenderingStats(timeline_markers, timeline_markers) |
| 119 stats = rendering_stats.RenderingStats(renderer_process, timeline_markers) | |
| 120 | 118 |
| 121 results.Add('rasterize_time', 'ms', | 119 results.Add('rasterize_time', 'ms', |
| 122 max(stats.rasterize_time)) | 120 max(stats.rasterize_time)) |
| 123 results.Add('record_time', 'ms', | 121 results.Add('record_time', 'ms', |
| 124 max(stats.record_time)) | 122 max(stats.record_time)) |
| 125 results.Add('rasterized_pixels', 'pixels', | 123 results.Add('rasterized_pixels', 'pixels', |
| 126 max(stats.rasterized_pixel_count)) | 124 max(stats.rasterized_pixel_count)) |
| 127 results.Add('recorded_pixels', 'pixels', | 125 results.Add('recorded_pixels', 'pixels', |
| 128 max(stats.recorded_pixel_count)) | 126 max(stats.recorded_pixel_count)) |
| OLD | NEW |