| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from __future__ import print_function |
| |
| import os |
| import sys |
| |
| from gpu_tests import common_browser_args as cba |
| from gpu_tests import gpu_integration_test |
| from gpu_tests import path_util |
| |
| data_path = os.path.join(path_util.GetChromiumSrcDir(), 'content', 'test', |
| 'data', 'media') |
| |
| wait_timeout = 60 # seconds |
| |
| harness_script = r""" |
| var domAutomationController = {}; |
| |
| domAutomationController._succeeded = false; |
| domAutomationController._finished = false; |
| domAutomationController._error_msg = ""; |
| |
| domAutomationController.send = function(msg) { |
| if (msg == "OK") { |
| if (!domAutomationController._finished) { |
| domAutomationController._succeeded = true; |
| } |
| domAutomationController._finished = true; |
| } else { |
| domAutomationController._succeeded = false; |
| domAutomationController._finished = true; |
| domAutomationController._error_msg = msg; |
| } |
| } |
| |
| domAutomationController.reset = function() { |
| domAutomationController._succeeded = false; |
| domAutomationController._finished = false; |
| } |
| |
| window.domAutomationController = domAutomationController; |
| console.log("Harness injected."); |
| """ |
| |
| |
| class DepthCaptureIntegrationTest(gpu_integration_test.GpuIntegrationTest): |
| @classmethod |
| def Name(cls): |
| return 'depth_capture' |
| |
| @classmethod |
| def GenerateGpuTests(cls, options): |
| tests = (('DepthCapture_depthStreamToRGBAUint8Texture', |
| 'getusermedia-depth-capture.html?query=RGBAUint8'), |
| ('DepthCapture_depthStreamToRGBAFloatTexture', |
| 'getusermedia-depth-capture.html?query=RGBAFloat'), |
| ('DepthCapture_depthStreamToR32FloatTexture', |
| 'getusermedia-depth-capture.html?query=R32Float')) |
| for t in tests: |
| yield (t[0], t[1], ('_' + t[0])) |
| |
| def RunActualGpuTest(self, test_path, *args): |
| url = self.UrlOfStaticFilePath(test_path) |
| tab = self.tab |
| tab.Navigate(url, script_to_evaluate_on_commit=harness_script) |
| tab.action_runner.WaitForJavaScriptCondition( |
| 'domAutomationController._finished', timeout=60) |
| if not tab.EvaluateJavaScript('domAutomationController._succeeded'): |
| self.fail('page indicated test failure:' + |
| tab.EvaluateJavaScript('domAutomationController._error_msg')) |
| |
| @classmethod |
| def SetUpProcess(cls): |
| super(DepthCaptureIntegrationTest, cls).SetUpProcess() |
| cls.CustomizeBrowserArgs([ |
| cba.DISABLE_DOMAIN_BLOCKING_FOR_3D_APIS, |
| '--enable-es3-apis', |
| '--use-fake-ui-for-media-stream', |
| '--use-fake-device-for-media-stream=device-count=2', |
| # Required for about:gpucrash handling from Telemetry. |
| cba.ENABLE_GPU_BENCHMARKING, |
| ]) |
| cls.StartBrowser() |
| cls.SetStaticServerDirs([data_path]) |
| |
| @classmethod |
| def ExpectationsFiles(cls): |
| return [ |
| os.path.join( |
| os.path.dirname(os.path.abspath(__file__)), 'test_expectations', |
| 'depth_capture_expectations.txt') |
| ] |
| |
| |
| def load_tests(loader, tests, pattern): |
| del loader, tests, pattern # Unused. |
| return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__]) |