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 |