| 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 from perf_tools import smoothness_measurement | 4 from perf_tools import smoothness_measurement |
| 5 from telemetry.core import util | 5 from telemetry.core import util |
| 6 from telemetry.page import page_benchmark | 6 from telemetry.page import page_benchmark |
| 7 | 7 |
| 8 class DidNotScrollException(page_benchmark.MeasurementFailure): | 8 class DidNotScrollException(page_benchmark.MeasurementFailure): |
| 9 def __init__(self): | 9 def __init__(self): |
| 10 super(DidNotScrollException, self).__init__('Page did not scroll') | 10 super(DidNotScrollException, self).__init__('Page did not scroll') |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 def CustomizeBrowserOptions(self, options): | 157 def CustomizeBrowserOptions(self, options): |
| 158 if self.use_gpu_benchmarking_extension: | 158 if self.use_gpu_benchmarking_extension: |
| 159 options.extra_browser_args.append('--enable-gpu-benchmarking') | 159 options.extra_browser_args.append('--enable-gpu-benchmarking') |
| 160 if self.force_enable_threaded_compositing: | 160 if self.force_enable_threaded_compositing: |
| 161 options.extra_browser_args.append('--enable-threaded-compositing') | 161 options.extra_browser_args.append('--enable-threaded-compositing') |
| 162 | 162 |
| 163 def CanRunForPage(self, page): | 163 def CanRunForPage(self, page): |
| 164 return hasattr(page, 'smoothness') | 164 return hasattr(page, 'smoothness') |
| 165 | 165 |
| 166 def WillRunAction(self, page, tab, action): | 166 def WillRunAction(self, page, tab, action): |
| 167 if tab.browser.platform.IsRawDisplayFrameRateSupported(): |
| 168 tab.browser.platform.StartRawDisplayFrameRateMeasurement() |
| 167 self._measurement = smoothness_measurement.SmoothnessMeasurement(tab) | 169 self._measurement = smoothness_measurement.SmoothnessMeasurement(tab) |
| 168 if action.CanBeBound(): | 170 if action.CanBeBound(): |
| 169 self._measurement.BindToAction(action) | 171 self._measurement.BindToAction(action) |
| 170 else: | 172 else: |
| 171 self._measurement.Start() | 173 self._measurement.Start() |
| 172 | 174 |
| 173 def DidRunAction(self, page, tab, action): | 175 def DidRunAction(self, page, tab, action): |
| 176 if tab.browser.platform.IsRawDisplayFrameRateSupported(): |
| 177 tab.browser.platform.StopRawDisplayFrameRateMeasurement() |
| 174 if not action.CanBeBound(): | 178 if not action.CanBeBound(): |
| 175 self._measurement.Stop() | 179 self._measurement.Stop() |
| 176 | 180 |
| 177 def MeasurePage(self, page, tab, results): | 181 def MeasurePage(self, page, tab, results): |
| 178 rendering_stats_deltas = self._measurement.deltas | 182 rendering_stats_deltas = self._measurement.deltas |
| 179 | 183 |
| 180 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0): | 184 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0): |
| 181 raise DidNotScrollException() | 185 raise DidNotScrollException() |
| 182 | 186 |
| 183 load_timings = tab.EvaluateJavaScript("window.performance.timing") | 187 load_timings = tab.EvaluateJavaScript("window.performance.timing") |
| 184 load_time_seconds = ( | 188 load_time_seconds = ( |
| 185 float(load_timings['loadEventStart']) - | 189 float(load_timings['loadEventStart']) - |
| 186 load_timings['navigationStart']) / 1000 | 190 load_timings['navigationStart']) / 1000 |
| 187 dom_content_loaded_time_seconds = ( | 191 dom_content_loaded_time_seconds = ( |
| 188 float(load_timings['domContentLoadedEventStart']) - | 192 float(load_timings['domContentLoadedEventStart']) - |
| 189 load_timings['navigationStart']) / 1000 | 193 load_timings['navigationStart']) / 1000 |
| 190 results.Add('load_time', 'seconds', load_time_seconds) | 194 results.Add('load_time', 'seconds', load_time_seconds) |
| 191 results.Add('dom_content_loaded_time', 'seconds', | 195 results.Add('dom_content_loaded_time', 'seconds', |
| 192 dom_content_loaded_time_seconds) | 196 dom_content_loaded_time_seconds) |
| 193 | 197 |
| 194 CalcFirstPaintTimeResults(results, tab) | 198 CalcFirstPaintTimeResults(results, tab) |
| 195 CalcScrollResults(rendering_stats_deltas, results) | 199 CalcScrollResults(rendering_stats_deltas, results) |
| 196 CalcPaintingResults(rendering_stats_deltas, results) | 200 CalcPaintingResults(rendering_stats_deltas, results) |
| 197 CalcTextureUploadResults(rendering_stats_deltas, results) | 201 CalcTextureUploadResults(rendering_stats_deltas, results) |
| 198 CalcImageDecodingResults(rendering_stats_deltas, results) | 202 CalcImageDecodingResults(rendering_stats_deltas, results) |
| 199 | 203 |
| 200 if self.options.report_all_results: | 204 if self.options.report_all_results: |
| 201 for k, v in rendering_stats_deltas.iteritems(): | 205 for k, v in rendering_stats_deltas.iteritems(): |
| 202 results.Add(k, '', v) | 206 results.Add(k, '', v) |
| 207 |
| 208 if tab.browser.platform.IsRawDisplayFrameRateSupported(): |
| 209 for r in tab.browser.platform.GetRawDisplayFrameRateMeasurements(): |
| 210 results.Add(r.name, r.unit, r.value) |
| OLD | NEW |