| // Copyright 2023 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // Script meant to be evaluated on commit by suites such as pixel and | |
| // expected_color. Requires that websocket_heartbeat.js be prepended or | |
| // otherwise evaluated first. | |
| var test_iframe = undefined; | |
| function getIframe() { | |
| if (test_iframe === undefined) { | |
| test_iframe = document.getElementById('test_iframe'); | |
| } | |
| return test_iframe | |
| } | |
| function evalInIframe(statement) { | |
| return getIframe().contentWindow.eval(statement); | |
| } | |
| if (inIframe) { | |
| const wrappedFunctions = [ | |
| // These were originally copied from the WebGL conformance tests since | |
| // they implemented a similar heartbeat mechanism first, so some of these | |
| // are likely unnecessary. However, the tests are happy, so they are | |
| // kept as-is for now. | |
| 'getUniform', | |
| 'getUniformLocation', | |
| 'uniform1i', | |
| 'uniform1iv', | |
| 'clientWaitSync', | |
| 'getSyncParameter', | |
| ]; | |
| for (const funcName of wrappedFunctions) { | |
| wrapFunctionInHeartbeat(WebGLRenderingContext.prototype, funcName); | |
| wrapFunctionInHeartbeat(WebGL2RenderingContext.prototype, funcName); | |
| } | |
| } | |
| if (!inIframe) { | |
| var domAutomationController = {}; | |
| domAutomationController._originalLog = window.console.log; | |
| domAutomationController._messages = ''; | |
| domAutomationController.log = function(msg) { | |
| domAutomationController._messages += msg + "\n"; | |
| domAutomationController._originalLog.apply(window.console, [msg]); | |
| } | |
| domAutomationController.send = function(msg) { | |
| let lmsg = msg.toLowerCase(); | |
| if (lmsg == "ready") { | |
| wrapper.sendPerformPageAction(); | |
| } else if (lmsg == "continue") { | |
| wrapper.sendTestContinue(); | |
| } else { | |
| wrapper.sendTestFinishedWithSuccessValue(lmsg == "success"); | |
| } | |
| } | |
| window.domAutomationController = domAutomationController; | |
| } else { | |
| var domAutomationController = window.parent.domAutomationController; | |
| } |