| 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 import os | 4 import os |
| 5 | 5 |
| 6 from chrome_remote_control import multi_page_benchmark | 6 from chrome_remote_control import multi_page_benchmark |
| 7 from chrome_remote_control import util | 7 from chrome_remote_control import util |
| 8 | 8 |
| 9 class DidNotScrollException(multi_page_benchmark.MeasurementFailure): | 9 class DidNotScrollException(multi_page_benchmark.MeasurementFailure): |
| 10 def __init__(self): | 10 def __init__(self): |
| 11 super(DidNotScrollException, self).__init__('Page did not scroll') | 11 super(DidNotScrollException, self).__init__('Page did not scroll') |
| 12 | 12 |
| 13 def CalcScrollResults(rendering_stats_deltas, results): | 13 def CalcScrollResults(rendering_stats_deltas, results): |
| 14 num_frames_sent_to_screen = rendering_stats_deltas['numFramesSentToScreen'] | 14 num_frames_sent_to_screen = rendering_stats_deltas['rendererFrameCount'] |
| 15 | 15 |
| 16 mean_frame_time_seconds = ( | 16 mean_frame_time_seconds = ( |
| 17 rendering_stats_deltas['totalTimeInSeconds'] / | 17 rendering_stats_deltas['totalTimeInSeconds'] / |
| 18 float(num_frames_sent_to_screen)) | 18 float(num_frames_sent_to_screen)) |
| 19 | 19 |
| 20 dropped_percent = ( | 20 dropped_percent = ( |
| 21 rendering_stats_deltas['droppedFrameCount'] / | 21 rendering_stats_deltas['droppedFrameCount'] / |
| 22 float(num_frames_sent_to_screen)) | 22 float(rendering_stats_deltas['vsyncCount'])) |
| 23 | 23 |
| 24 results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3)) | 24 results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3)) |
| 25 results.Add('dropped_percent', '%', round(dropped_percent * 100, 1)) | 25 results.Add('dropped_percent', '%', round(dropped_percent * 100, 1)) |
| 26 | 26 |
| 27 class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark): | 27 class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark): |
| 28 def __init__(self): | 28 def __init__(self): |
| 29 super(ScrollingBenchmark, self).__init__() | 29 super(ScrollingBenchmark, self).__init__() |
| 30 | 30 |
| 31 def AddOptions(self, parser): | 31 def AddOptions(self, parser): |
| 32 parser.add_option('--no-gpu-benchmarking-extension', action='store_true', | 32 parser.add_option('--no-gpu-benchmarking-extension', action='store_true', |
| (...skipping 29 matching lines...) Expand all Loading... |
| 62 tab.runtime.Execute('(function() { var element = document.body; %s})();' % | 62 tab.runtime.Execute('(function() { var element = document.body; %s})();' % |
| 63 start_scroll_js) | 63 start_scroll_js) |
| 64 | 64 |
| 65 # Poll for scroll benchmark completion. | 65 # Poll for scroll benchmark completion. |
| 66 util.WaitFor(lambda: tab.runtime.Evaluate( | 66 util.WaitFor(lambda: tab.runtime.Evaluate( |
| 67 'window.__renderingStatsDeltas'), 60) | 67 'window.__renderingStatsDeltas'), 60) |
| 68 | 68 |
| 69 rendering_stats_deltas = tab.runtime.Evaluate( | 69 rendering_stats_deltas = tab.runtime.Evaluate( |
| 70 'window.__renderingStatsDeltas') | 70 'window.__renderingStatsDeltas') |
| 71 | 71 |
| 72 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0): | 72 if not (rendering_stats_deltas['rendererFrameCount'] > 0): |
| 73 raise DidNotScrollException() | 73 raise DidNotScrollException() |
| 74 return rendering_stats_deltas | 74 return rendering_stats_deltas |
| 75 | 75 |
| 76 def CustomizeBrowserOptions(self, options): | 76 def CustomizeBrowserOptions(self, options): |
| 77 if not options.no_gpu_benchmarking_extension: | 77 if not options.no_gpu_benchmarking_extension: |
| 78 options.extra_browser_args.append('--enable-gpu-benchmarking') | 78 options.extra_browser_args.append('--enable-gpu-benchmarking') |
| 79 | 79 |
| 80 def MeasurePage(self, page, tab, results): | 80 def MeasurePage(self, page, tab, results): |
| 81 rendering_stats_deltas = self.ScrollPageFully(page, tab) | 81 rendering_stats_deltas = self.ScrollPageFully(page, tab) |
| 82 CalcScrollResults(rendering_stats_deltas, results) | 82 CalcScrollResults(rendering_stats_deltas, results) |
| 83 if self.options.report_all_results: | 83 if self.options.report_all_results: |
| 84 for k, v in rendering_stats_deltas.iteritems(): | 84 for k, v in rendering_stats_deltas.iteritems(): |
| 85 results.Add(k, '', v) | 85 results.Add(k, '', v) |
| OLD | NEW |