| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 from telemetry.page import legacy_page_test | 5 from telemetry.page import legacy_page_test |
| 6 | 6 |
| 7 | 7 |
| 8 def Repaint(action_runner, mode='viewport', width=None, height=None): | 8 def Repaint(action_runner, mode='viewport', width=None, height=None): |
| 9 action_runner.WaitForJavaScriptCondition( | 9 action_runner.WaitForJavaScriptCondition( |
| 10 'document.readyState == "complete"', timeout_in_seconds=90) | 10 'document.readyState == "complete"', timeout_in_seconds=90) |
| 11 # Rasterize only what's visible. | 11 # Rasterize only what's visible. |
| 12 action_runner.ExecuteJavaScript( | 12 action_runner.ExecuteJavaScript( |
| 13 'chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent();') | 13 'chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent();') |
| 14 | 14 |
| 15 args = {} | 15 args = {} |
| 16 args['mode'] = mode | 16 args['mode'] = mode |
| 17 if width: | 17 if width: |
| 18 args['width'] = width | 18 args['width'] = width |
| 19 if height: | 19 if height: |
| 20 args['height'] = height | 20 args['height'] = height |
| 21 | 21 |
| 22 # Enqueue benchmark | 22 # Enqueue benchmark |
| 23 action_runner.ExecuteJavaScript(""" | 23 action_runner.ExecuteJavaScript(""" |
| 24 window.benchmark_results = {}; | 24 window.benchmark_results = {}; |
| 25 window.benchmark_results.id = | 25 window.benchmark_results.id = |
| 26 chrome.gpuBenchmarking.runMicroBenchmark( | 26 chrome.gpuBenchmarking.runMicroBenchmark( |
| 27 "invalidation_benchmark", | 27 "invalidation_benchmark", |
| 28 function(value) {}, | 28 function(value) {}, |
| 29 """ + str(args) + """ | 29 {{ args }} |
| 30 ); | 30 ); |
| 31 """) | 31 """, |
| 32 args=args) |
| 32 | 33 |
| 33 micro_benchmark_id = action_runner.EvaluateJavaScript( | 34 micro_benchmark_id = action_runner.EvaluateJavaScript( |
| 34 'window.benchmark_results.id') | 35 'window.benchmark_results.id') |
| 35 if not micro_benchmark_id: | 36 if not micro_benchmark_id: |
| 36 raise legacy_page_test.MeasurementFailure( | 37 raise legacy_page_test.MeasurementFailure( |
| 37 'Failed to schedule invalidation_benchmark.') | 38 'Failed to schedule invalidation_benchmark.') |
| 38 | 39 |
| 39 with action_runner.CreateInteraction('Repaint'): | 40 with action_runner.CreateInteraction('Repaint'): |
| 40 action_runner.RepaintContinuously(seconds=5) | 41 action_runner.RepaintContinuously(seconds=5) |
| 41 | 42 |
| 42 # TODO(catapult:#3028): Fix interpolation of JavaScript values. | |
| 43 action_runner.ExecuteJavaScript(""" | 43 action_runner.ExecuteJavaScript(""" |
| 44 window.benchmark_results.message_handled = | 44 window.benchmark_results.message_handled = |
| 45 chrome.gpuBenchmarking.sendMessageToMicroBenchmark( | 45 chrome.gpuBenchmarking.sendMessageToMicroBenchmark( |
| 46 """ + str(micro_benchmark_id) + """, { | 46 {{ micro_benchmark_id }}, { |
| 47 "notify_done": true | 47 "notify_done": true |
| 48 }); | 48 }); |
| 49 """) | 49 """, |
| 50 micro_benchmark_id=micro_benchmark_id) |
| 50 | 51 |
| 51 | 52 |
| 52 def WaitThenRepaint(action_runner): | 53 def WaitThenRepaint(action_runner): |
| 53 action_runner.Wait(2) | 54 action_runner.Wait(2) |
| 54 Repaint(action_runner) | 55 Repaint(action_runner) |
| OLD | NEW |