Mojo C++ bindings: better log message for serialization warnings.
[chromium-blink-merge.git] / tools / perf / measurements / repaint.py
bloba56ccb84051cc2514a45096f1112b828b3949cd4
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 measurements import smoothness_controller
6 from telemetry.page import page_test
9 class Repaint(page_test.PageTest):
10 def __init__(self):
11 super(Repaint, self).__init__('RunRepaint', False)
12 self._smoothness_controller = None
13 self._micro_benchmark_id = None
15 @classmethod
16 def AddCommandLineArgs(cls, parser):
17 parser.add_option('--mode', type='string',
18 default='viewport',
19 help='Invalidation mode. '
20 'Supported values: fixed_size, layer, random, viewport.')
21 parser.add_option('--width', type='int',
22 default=None,
23 help='Width of invalidations for fixed_size mode.')
24 parser.add_option('--height', type='int',
25 default=None,
26 help='Height of invalidations for fixed_size mode.')
28 def CustomizeBrowserOptions(self, options):
29 options.AppendExtraBrowserArgs([
30 '--enable-impl-side-painting',
31 '--enable-threaded-compositing',
32 '--enable-gpu-benchmarking'
35 def WillRunActions(self, page, tab):
36 tab.WaitForDocumentReadyStateToBeComplete()
37 self._smoothness_controller = smoothness_controller.SmoothnessController()
38 self._smoothness_controller.SetUp(page, tab)
39 self._smoothness_controller.Start(tab)
40 # Rasterize only what's visible.
41 tab.ExecuteJavaScript(
42 'chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent();')
44 args = {}
45 args['mode'] = self.options.mode
46 if self.options.width:
47 args['width'] = self.options.width
48 if self.options.height:
49 args['height'] = self.options.height
51 # Enque benchmark
52 tab.ExecuteJavaScript("""
53 window.benchmark_results = {};
54 window.benchmark_results.id =
55 chrome.gpuBenchmarking.runMicroBenchmark(
56 "invalidation_benchmark",
57 function(value) {},
58 """ + str(args) + """
60 """)
62 self._micro_benchmark_id = tab.EvaluateJavaScript(
63 'window.benchmark_results.id')
64 if (not self._micro_benchmark_id):
65 raise page_test.MeasurementFailure(
66 'Failed to schedule invalidation_benchmark.')
68 def DidRunActions(self, page, tab):
69 tab.ExecuteJavaScript("""
70 window.benchmark_results.message_handled =
71 chrome.gpuBenchmarking.sendMessageToMicroBenchmark(
72 """ + str(self._micro_benchmark_id) + """, {
73 "notify_done": true
74 });
75 """)
76 self._smoothness_controller.Stop(tab)
78 def ValidateAndMeasurePage(self, page, tab, results):
79 self._smoothness_controller.AddResults(tab, results)
81 def CleanUpAfterPage(self, _, tab):
82 self._smoothness_controller.CleanUp(tab)