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