1 # Copyright 2013 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.
4 import gpu_process_expectations
as expectations
7 from telemetry
import benchmark
8 from telemetry
.page
import page_set
9 from telemetry
.page
import page_test
11 test_harness_script
= r
"""
12 var domAutomationController = {};
13 domAutomationController._finished = false;
14 domAutomationController.setAutomationId = function(id) {}
15 domAutomationController.send = function(msg) {
16 domAutomationController._finished = true;
19 window.domAutomationController = domAutomationController;
22 class _GpuProcessValidator(page_test
.PageTest
):
24 super(_GpuProcessValidator
, self
).__init
__(
25 needs_browser_restart_after_each_page
=True)
27 def CustomizeBrowserOptions(self
, options
):
28 options
.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
30 def ValidateAndMeasurePage(self
, page
, tab
, results
):
31 has_gpu_process_js
= 'chrome.gpuBenchmarking.hasGpuProcess()'
32 has_gpu_process
= tab
.EvaluateJavaScript(has_gpu_process_js
)
33 if not has_gpu_process
:
34 raise page_test
.Failure('No GPU process detected')
36 class GpuProcess(benchmark
.Benchmark
):
37 """Tests that accelerated content triggers the creation of a GPU process"""
38 test
= _GpuProcessValidator
39 page_set
= page_sets
.GpuProcessTestsPageSet
41 def CreateExpectations(self
, page_set
):
42 return expectations
.GpuProcessExpectations()
44 def CreatePageSet(self
, options
):
45 page_set
= super(GpuProcess
, self
).CreatePageSet(options
)
46 for page
in page_set
.pages
:
47 page
.script_to_evaluate_on_commit
= test_harness_script