| Index: content/test/gpu/gpu_tests/webgl_robustness.py
|
| diff --git a/content/test/gpu/gpu_tests/webgl_robustness.py b/content/test/gpu/gpu_tests/webgl_robustness.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f3ea32f63b059d457ef5e7bc795f34b07a9eef06
|
| --- /dev/null
|
| +++ b/content/test/gpu/gpu_tests/webgl_robustness.py
|
| @@ -0,0 +1,64 @@
|
| +# Copyright (c) 2013 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 telemetry import test
|
| +from telemetry.page import page_set
|
| +from webgl_conformance import WebglConformanceValidator
|
| +from webgl_conformance import conformance_harness_script
|
| +from webgl_conformance import conformance_path
|
| +
|
| +
|
| +robustness_harness_script = conformance_harness_script + r"""
|
| + var robustnessTestHarness = {};
|
| + robustnessTestHarness._contextLost = false;
|
| + robustnessTestHarness.initialize = function() {
|
| + var canvas = document.getElementById('example');
|
| + canvas.addEventListener('webglcontextlost', function() {
|
| + robustnessTestHarness._contextLost = true;
|
| + });
|
| + }
|
| + robustnessTestHarness.runTestLoop = function() {
|
| + // Run the test in a loop until the context is lost.
|
| + main();
|
| + if (!robustnessTestHarness._contextLost)
|
| + window.requestAnimationFrame(robustnessTestHarness.runTestLoop);
|
| + else
|
| + robustnessTestHarness.notifyFinished();
|
| + }
|
| + robustnessTestHarness.notifyFinished = function() {
|
| + // The test may fail in unpredictable ways depending on when the context is
|
| + // lost. We ignore such errors and only require that the browser doesn't
|
| + // crash.
|
| + webglTestHarness._allTestSucceeded = true;
|
| + // Notify test completion after a delay to make sure the browser is able to
|
| + // recover from the lost context.
|
| + setTimeout(webglTestHarness.notifyFinished, 3000);
|
| + }
|
| +
|
| + window.confirm = function() {
|
| + robustnessTestHarness.initialize();
|
| + robustnessTestHarness.runTestLoop();
|
| + return false;
|
| + }
|
| + window.webglRobustnessTestHarness = robustnessTestHarness;
|
| +"""
|
| +
|
| +
|
| +class WebglRobustness(test.Test):
|
| + enabled = False
|
| + test = WebglConformanceValidator
|
| +
|
| + def CreatePageSet(self, options):
|
| + page_set_dict = {
|
| + 'description': 'Test cases for WebGL robustness',
|
| + 'user_agent_type': 'desktop',
|
| + 'serving_dirs': [''],
|
| + 'pages': [
|
| + {
|
| + 'url': 'file:///extra/lots-of-polys-example.html',
|
| + 'script_to_evaluate_on_commit': robustness_harness_script,
|
| + 'wait_for_javascript_expression': 'webglTestHarness._finished'
|
| + }
|
| + ]
|
| + }
|
| + return page_set.PageSet.FromDict(page_set_dict, conformance_path)
|
|
|