9c465c219c9f20175fe8126f9c35acba8988e29a
[platform/framework/web/crosswalk.git] / src / content / test / gpu / gpu_tests / gpu_process.py
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
5
6 from telemetry import test
7 from telemetry.page import page_set
8 from telemetry.page import page_test
9
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;
16   }
17
18   window.domAutomationController = domAutomationController;
19 """
20
21 class _GpuProcessValidator(page_test.PageTest):
22   def __init__(self):
23     super(_GpuProcessValidator, self).__init__('ValidatePage',
24         needs_browser_restart_after_each_page=True)
25
26   def CustomizeBrowserOptions(self, options):
27     options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
28
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')
34
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'
39
40   def CreateExpectations(self, page_set):
41     return expectations.GpuProcessExpectations()
42
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
47     return page_set