summaryrefslogtreecommitdiffstats
path: root/devtools/shared/specs/webgl.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/specs/webgl.js')
-rw-r--r--devtools/shared/specs/webgl.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/devtools/shared/specs/webgl.js b/devtools/shared/specs/webgl.js
new file mode 100644
index 000000000..f97610f3c
--- /dev/null
+++ b/devtools/shared/specs/webgl.js
@@ -0,0 +1,101 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+const {Arg, Option, RetVal, generateActorSpec} = require("devtools/shared/protocol");
+
+const shaderSpec = generateActorSpec({
+ typeName: "gl-shader",
+
+ methods: {
+ getText: {
+ response: { text: RetVal("string") }
+ },
+ compile: {
+ request: { text: Arg(0, "string") },
+ response: { error: RetVal("nullable:json") }
+ },
+ },
+});
+
+exports.shaderSpec = shaderSpec;
+
+const programSpec = generateActorSpec({
+ typeName: "gl-program",
+
+ methods: {
+ getVertexShader: {
+ response: { shader: RetVal("gl-shader") }
+ },
+ getFragmentShader: {
+ response: { shader: RetVal("gl-shader") }
+ },
+ highlight: {
+ request: { tint: Arg(0, "array:number") },
+ oneway: true
+ },
+ unhighlight: {
+ oneway: true
+ },
+ blackbox: {
+ oneway: true
+ },
+ unblackbox: {
+ oneway: true
+ },
+ }
+});
+
+exports.programSpec = programSpec;
+
+const webGLSpec = generateActorSpec({
+ typeName: "webgl",
+
+ /**
+ * Events emitted by this actor. The "program-linked" event is fired every
+ * time a WebGL program was linked with its respective two shaders.
+ */
+ events: {
+ "program-linked": {
+ type: "programLinked",
+ program: Arg(0, "gl-program")
+ },
+ "global-destroyed": {
+ type: "globalDestroyed",
+ program: Arg(0, "number")
+ },
+ "global-created": {
+ type: "globalCreated",
+ program: Arg(0, "number")
+ }
+ },
+
+ methods: {
+ setup: {
+ request: { reload: Option(0, "boolean") },
+ oneway: true
+ },
+ finalize: {
+ oneway: true
+ },
+ getPrograms: {
+ response: { programs: RetVal("array:gl-program") }
+ },
+ waitForFrame: {
+ response: { success: RetVal("nullable:json") }
+ },
+ getPixel: {
+ request: {
+ selector: Option(0, "string"),
+ position: Option(0, "json")
+ },
+ response: { pixels: RetVal("json") }
+ },
+ _getAllPrograms: {
+ response: { programs: RetVal("array:gl-program") }
+ }
+ }
+});
+
+exports.webGLSpec = webGLSpec;