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 page_test | 5 from telemetry.page import page_test |
6 | 6 |
7 from measurements import smoothness_controller | 7 from measurements import smoothness_controller |
8 | 8 |
9 | 9 |
10 class Repaint(page_test.PageTest): | 10 class Repaint(page_test.PageTest): |
11 def __init__(self, mode='viewport', width=None, height=None): | 11 def __init__(self): |
12 super(Repaint, self).__init__() | 12 super(Repaint, self).__init__() |
13 self._smoothness_controller = None | 13 self._smoothness_controller = None |
14 self._micro_benchmark_id = None | |
15 self._mode = mode | |
16 self._width = width | |
17 self._height = height | |
18 | 14 |
19 def CustomizeBrowserOptions(self, options): | 15 def CustomizeBrowserOptions(self, options): |
20 options.AppendExtraBrowserArgs([ | 16 options.AppendExtraBrowserArgs([ |
21 '--enable-impl-side-painting', | 17 '--enable-impl-side-painting', |
22 '--enable-threaded-compositing', | 18 '--enable-threaded-compositing', |
23 '--enable-gpu-benchmarking' | 19 '--enable-gpu-benchmarking' |
24 ]) | 20 ]) |
25 | 21 |
26 def WillRunActions(self, page, tab): | 22 def WillRunActions(self, page, tab): |
27 tab.WaitForDocumentReadyStateToBeComplete() | 23 tab.WaitForDocumentReadyStateToBeComplete() |
28 self._smoothness_controller = smoothness_controller.SmoothnessController( | 24 self._smoothness_controller = smoothness_controller.SmoothnessController( |
29 auto_issuing_marker=False) | 25 auto_issuing_marker=False) |
30 self._smoothness_controller.SetUp(page, tab) | 26 self._smoothness_controller.SetUp(page, tab) |
31 self._smoothness_controller.Start(tab) | 27 self._smoothness_controller.Start(tab) |
32 # Rasterize only what's visible. | |
33 tab.ExecuteJavaScript( | |
34 'chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent();') | |
35 | |
36 args = {} | |
37 args['mode'] = self._mode | |
38 if self._width: | |
39 args['width'] = self._width | |
40 if self._height: | |
41 args['height'] = self._height | |
42 | |
43 # Enque benchmark | |
44 tab.ExecuteJavaScript(""" | |
45 window.benchmark_results = {}; | |
46 window.benchmark_results.id = | |
47 chrome.gpuBenchmarking.runMicroBenchmark( | |
48 "invalidation_benchmark", | |
49 function(value) {}, | |
50 """ + str(args) + """ | |
51 ); | |
52 """) | |
53 | |
54 self._micro_benchmark_id = tab.EvaluateJavaScript( | |
55 'window.benchmark_results.id') | |
56 if (not self._micro_benchmark_id): | |
57 raise page_test.MeasurementFailure( | |
58 'Failed to schedule invalidation_benchmark.') | |
59 | 28 |
60 def DidRunActions(self, page, tab): | 29 def DidRunActions(self, page, tab): |
61 tab.ExecuteJavaScript(""" | |
62 window.benchmark_results.message_handled = | |
63 chrome.gpuBenchmarking.sendMessageToMicroBenchmark( | |
64 """ + str(self._micro_benchmark_id) + """, { | |
65 "notify_done": true | |
66 }); | |
67 """) | |
68 self._smoothness_controller.Stop(tab) | 30 self._smoothness_controller.Stop(tab) |
69 | 31 |
70 def ValidateAndMeasurePage(self, page, tab, results): | 32 def ValidateAndMeasurePage(self, page, tab, results): |
71 self._smoothness_controller.AddResults(tab, results) | 33 self._smoothness_controller.AddResults(tab, results) |
72 | 34 |
73 def CleanUpAfterPage(self, _, tab): | 35 def CleanUpAfterPage(self, _, tab): |
74 self._smoothness_controller.CleanUp(tab) | 36 self._smoothness_controller.CleanUp(tab) |
OLD | NEW |