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 import page_sets 6 7 from telemetry import test 8 from telemetry.page import page_set 9 from telemetry.page import page_test 10 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; 17 } 18 19 window.domAutomationController = domAutomationController; 20 """ 21 22 class _GpuProcessValidator(page_test.PageTest): 23 def __init__(self): 24 super(_GpuProcessValidator, self).__init__( 25 needs_browser_restart_after_each_page=True) 26 27 def CustomizeBrowserOptions(self, options): 28 options.AppendExtraBrowserArgs('--enable-gpu-benchmarking') 29 30 def ValidatePage(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') 35 36 class GpuProcess(test.Test): 37 """Tests that accelerated content triggers the creation of a GPU process""" 38 test = _GpuProcessValidator 39 page_set = page_sets.GpuProcessTestsPageSet 40 41 def CreateExpectations(self, page_set): 42 return expectations.GpuProcessExpectations() 43 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 48 return page_set 49