1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
content / test / gpu / gpu_tests / javascript / dom_automation_controller.js [blame]
// 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;
}