[refactor] More post-NSS WebCrypto cleanups (utility functions).
[chromium-blink-merge.git] / tools / perf / page_sets / repaint_helpers.py
blobb67c8e0fa65bae403c3741b13b63914461816c7b
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
3 # found in the LICENSE file.
5 from telemetry.page import page_test
8 def Repaint(action_runner, mode='viewport', width=None, height=None):
9 action_runner.WaitForJavaScriptCondition(
10 'document.readyState == "complete"', 90)
11 # Rasterize only what's visible.
12 action_runner.ExecuteJavaScript(
13 'chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent();')
15 args = {}
16 args['mode'] = mode
17 if width:
18 args['width'] = width
19 if height:
20 args['height'] = height
22 # Enque benchmark
23 action_runner.ExecuteJavaScript("""
24 window.benchmark_results = {};
25 window.benchmark_results.id =
26 chrome.gpuBenchmarking.runMicroBenchmark(
27 "invalidation_benchmark",
28 function(value) {},
29 """ + str(args) + """
31 """)
33 micro_benchmark_id = action_runner.EvaluateJavaScript(
34 'window.benchmark_results.id')
35 if not micro_benchmark_id:
36 raise page_test.MeasurementFailure(
37 'Failed to schedule invalidation_benchmark.')
39 with action_runner.CreateInteraction('Repaint'):
40 action_runner.RepaintContinuously(seconds=5)
42 action_runner.ExecuteJavaScript("""
43 window.benchmark_results.message_handled =
44 chrome.gpuBenchmarking.sendMessageToMicroBenchmark(
45 """ + str(micro_benchmark_id) + """, {
46 "notify_done": true
47 });
48 """)