| // 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; |
| } |