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