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. 4import gpu_process_expectations as expectations 5import page_sets 6 7from telemetry import benchmark 8from telemetry.page import page_set 9from telemetry.page import page_test 10 11test_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 22class _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 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') 35 36class GpuProcess(benchmark.Benchmark): 37 """Tests that accelerated content triggers the creation of a GPU process""" 38 test = _GpuProcessValidator 39 40 def CreateExpectations(self, page_set): 41 return expectations.GpuProcessExpectations() 42 43 def CreatePageSet(self, options): 44 page_set = page_sets.GpuProcessTestsPageSet() 45 for page in page_set.pages: 46 page.script_to_evaluate_on_commit = test_harness_script 47 return page_set 48