aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/webglrenderingcontext.rs33
-rw-r--r--components/script/dom/webidls/WebGLRenderingContext.webidl14
2 files changed, 40 insertions, 7 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 462c3859d17..4031c36f2c2 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -10,6 +10,7 @@ use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{
use dom::bindings::global::{GlobalRef, GlobalField};
use dom::bindings::js::{JS, JSRef, LayoutJS, Temporary};
use dom::bindings::utils::{Reflector, reflect_dom_object};
+use dom::bindings::conversions::ToJSValConvertible;
use dom::htmlcanvaselement::{HTMLCanvasElement};
use dom::webglbuffer::{WebGLBuffer, WebGLBufferHelpers};
use dom::webglshader::{WebGLShader, WebGLShaderHelpers};
@@ -73,6 +74,38 @@ impl Drop for WebGLRenderingContext {
}
impl<'a> WebGLRenderingContextMethods for JSRef<'a, WebGLRenderingContext> {
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.1
+ fn Canvas(self) -> Temporary<HTMLCanvasElement> {
+ Temporary::from_rooted(self.canvas)
+ }
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.1
+ fn DrawingBufferWidth(self) -> i32 {
+ let (sender, receiver) = channel();
+ self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferWidth(sender))).unwrap();
+ receiver.recv().unwrap()
+ }
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.1
+ fn DrawingBufferHeight(self) -> i32 {
+ let (sender, receiver) = channel();
+ self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferHeight(sender))).unwrap();
+ receiver.recv().unwrap()
+ }
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
+ fn GetParameter(self, cx: *mut JSContext, parameter: u32) -> JSVal {
+ // TODO(ecoal95): Implement the missing parameters from the spec
+ match parameter {
+ WebGLRenderingContextConstants::VERSION =>
+ DOMString::from_str("WebGL 1.0").to_jsval(cx),
+ WebGLRenderingContextConstants::RENDERER |
+ WebGLRenderingContextConstants::VENDOR =>
+ DOMString::from_str("Mozilla/Servo").to_jsval(cx),
+ _ => NullValue(),
+ }
+ }
+
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.2
fn GetContextAttributes(self) -> Option<WebGLContextAttributes> {
let (sender, receiver) = channel();
diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl
index 9409d1500d8..4f33f4e3159 100644
--- a/components/script/dom/webidls/WebGLRenderingContext.webidl
+++ b/components/script/dom/webidls/WebGLRenderingContext.webidl
@@ -307,9 +307,9 @@ interface WebGLRenderingContextBase
//const GLenum DECR_WRAP = 0x8508;
/* StringName */
- //const GLenum VENDOR = 0x1F00;
- //const GLenum RENDERER = 0x1F01;
- //const GLenum VERSION = 0x1F02;
+ const GLenum VENDOR = 0x1F00;
+ const GLenum RENDERER = 0x1F01;
+ const GLenum VERSION = 0x1F02;
/* TextureMagFilter */
//const GLenum NEAREST = 0x2600;
@@ -477,9 +477,9 @@ interface WebGLRenderingContextBase
//const GLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
//const GLenum BROWSER_DEFAULT_WEBGL = 0x9244;
- //readonly attribute HTMLCanvasElement canvas;
- //readonly attribute GLsizei drawingBufferWidth;
- //readonly attribute GLsizei drawingBufferHeight;
+ readonly attribute HTMLCanvasElement canvas;
+ readonly attribute GLsizei drawingBufferWidth;
+ readonly attribute GLsizei drawingBufferHeight;
[WebGLHandlesContextLoss] WebGLContextAttributes? getContextAttributes();
//[WebGLHandlesContextLoss] boolean isContextLost();
@@ -577,7 +577,7 @@ interface WebGLRenderingContextBase
[WebGLHandlesContextLoss] GLint getAttribLocation(WebGLProgram? program, DOMString name);
//any getBufferParameter(GLenum target, GLenum pname);
- //any getParameter(GLenum pname);
+ any getParameter(GLenum pname);
//[WebGLHandlesContextLoss] GLenum getError();