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
6 from telemetry import test
7 from telemetry.page import page_set
8 from telemetry.page import page_test
10 test_harness_script = r"""
11 var domAutomationController = {};
12 domAutomationController._finished = false;
13 domAutomationController.setAutomationId = function(id) {}
14 domAutomationController.send = function(msg) {
15 domAutomationController._finished = true;
18 window.domAutomationController = domAutomationController;
21 class _GpuProcessValidator(page_test.PageTest):
23 super(_GpuProcessValidator, self).__init__('ValidatePage',
24 needs_browser_restart_after_each_page=True)
26 def CustomizeBrowserOptions(self, options):
27 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
29 def ValidatePage(self, page, tab, results):
30 has_gpu_process_js = 'chrome.gpuBenchmarking.hasGpuProcess()'
31 has_gpu_process = tab.EvaluateJavaScript(has_gpu_process_js)
32 if not has_gpu_process:
33 raise page_test.Failure('No GPU process detected')
35 class GpuProcess(test.Test):
36 """Tests that accelerated content triggers the creation of a GPU process"""
37 test = _GpuProcessValidator
38 page_set = 'page_sets/gpu_process_tests.json'
40 def CreateExpectations(self, page_set):
41 return expectations.GpuProcessExpectations()
43 def CreatePageSet(self, options):
44 page_set = super(GpuProcess, self).CreatePageSet(options)
45 for page in page_set.pages:
46 page.script_to_evaluate_on_commit = test_harness_script