Fix patch for getAttachedShaders (#24446)

* Fix patch for getAttachedShaders
* Add browsertest for getAttachedShaders
This commit is contained in:
Shivan Kaul Sahib
2024-07-01 17:50:17 -07:00
committed by GitHub
parent 334f959c74
commit ef99f8df6d
4 changed files with 44 additions and 3 deletions
@@ -222,3 +222,15 @@ IN_PROC_BROWSER_TEST_F(BraveWebGLFarblingBrowserTest, GetExtension) {
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
EXPECT_EQ(EvalJs(contents(), kTitleScript).ExtractString(), actual);
}
IN_PROC_BROWSER_TEST_F(BraveWebGLFarblingBrowserTest, GetAttachedShaders) {
std::string domain = "a.com";
GURL url = embedded_test_server()->GetURL(domain, "/getAttachedShaders.html");
// In default fingerprinting mode...
SetFingerprintingDefault(domain);
ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
//... getAttachedShaders() should not be null:
// https://github.com/brave/brave-browser/issues/37044
EXPECT_EQ(EvalJs(contents(), kTitleScript).ExtractString(),
"[object WebGLShader]");
}
@@ -22,8 +22,8 @@ index 801c6e3fc15714071ab325593c0ff40602450a87..6338179111fe0804d684e6c269e04977
std::optional<HeapVector<Member<WebGLShader>>>
WebGLRenderingContextBase::getAttachedShaders(WebGLProgram* program) {
if (!ValidateWebGLProgramOrShader("getAttachedShaders", program))
+ BRAVE_WEBGL_RENDERING_CONTEXT_BASE_NULLOPT
return std::nullopt;
+ BRAVE_WEBGL_RENDERING_CONTEXT_BASE_NULLOPT
HeapVector<Member<WebGLShader>> shader_objects;
@@ -3260,6 +3263,7 @@ GLint WebGLRenderingContextBase::getAttribLocation(WebGLProgram* program,
+31
View File
@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<title>WebGL getAttachedShaders() test</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="test" width="8" height="8"></canvas>
<script>
const canvas = document.getElementById("test");
const gl = canvas.getContext("webgl");
const vsSource = `
attribute vec4 aVertexPosition;
void main(void) {
gl_Position = aVertexPosition;
}
`;
// Create a vertex shader
const vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vsSource);
gl.compileShader(vertexShader);
const shaderProgram = gl.createProgram();
gl.attachShader(shaderProgram, vertexShader);
// Link the shader program
gl.linkProgram(shaderProgram);
// Get the attached shaders
const attachedShaders = gl.getAttachedShaders(shaderProgram);
document.title = attachedShaders;
</script>
</body>
</html>
-2
View File
@@ -17,5 +17,3 @@
</script>
</body>
</html>
}