diff options
author | Alan Jeffrey <ajeffrey@mozilla.com> | 2020-07-31 18:44:57 -0500 |
---|---|---|
committer | Alan Jeffrey <ajeffrey@mozilla.com> | 2020-08-03 12:37:01 -0500 |
commit | bf7f4eae31f0332b0ab8460132c937f8facbed47 (patch) | |
tree | 85ccb6a32b1ae33cada701ca96b47aff19bb477d /components/script/dom/xrwebglbinding.rs | |
parent | 092dcaf2e6ec2ed4bc197991b46addf0752214a7 (diff) | |
download | servo-bf7f4eae31f0332b0ab8460132c937f8facbed47.tar.gz servo-bf7f4eae31f0332b0ab8460132c937f8facbed47.zip |
Update WebXR Layer IDL, and matching changes to the Rust code.
Diffstat (limited to 'components/script/dom/xrwebglbinding.rs')
-rw-r--r-- | components/script/dom/xrwebglbinding.rs | 93 |
1 files changed, 13 insertions, 80 deletions
diff --git a/components/script/dom/xrwebglbinding.rs b/components/script/dom/xrwebglbinding.rs index 4f5efaa3cf7..a0c4846074b 100644 --- a/components/script/dom/xrwebglbinding.rs +++ b/components/script/dom/xrwebglbinding.rs @@ -2,105 +2,36 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::codegen::Bindings::XRWebGLBindingBinding::XRWebGLBindingBinding::XRWebGLBindingMethods; -use crate::dom::bindings::codegen::UnionTypes::WebGLRenderingContextOrWebGL2RenderingContext as RootedWebGLRenderingContextOrWebGL2RenderingContext; +use crate::dom::bindings::codegen::UnionTypes::WebGLRenderingContextOrWebGL2RenderingContext; use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::reflector::Reflector; use crate::dom::bindings::root::Dom; use crate::dom::bindings::root::DomRoot; -use crate::dom::webgl2renderingcontext::WebGL2RenderingContext; use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::dom::window::Window; -use crate::dom::xrframe::XRFrame; -use crate::dom::xrlayer::XRLayer; use crate::dom::xrsession::XRSession; -use crate::dom::xrview::XRView; -use crate::dom::xrwebglsubimage::XRWebGLSubImage; -use canvas_traits::webgl::WebGLContextId; use dom_struct::dom_struct; #[dom_struct] pub struct XRWebGLBinding { reflector: Reflector, session: Dom<XRSession>, - context: WebGLRenderingContextOrWebGL2RenderingContext, -} - -// TODO: Should this live somewhere else? -#[unrooted_must_root_lint::must_root] -#[derive(Clone, JSTraceable, MallocSizeOf)] -pub enum WebGLRenderingContextOrWebGL2RenderingContext { - WebGLRenderingContext(Dom<WebGLRenderingContext>), - WebGL2RenderingContext(Dom<WebGL2RenderingContext>), -} - -impl WebGLRenderingContextOrWebGL2RenderingContext { - #[allow(unrooted_must_root)] - fn from_ref( - context: &RootedWebGLRenderingContextOrWebGL2RenderingContext, - ) -> WebGLRenderingContextOrWebGL2RenderingContext { - match context { - RootedWebGLRenderingContextOrWebGL2RenderingContext::WebGLRenderingContext( - ref context, - ) => WebGLRenderingContextOrWebGL2RenderingContext::WebGLRenderingContext( - Dom::from_ref(context), - ), - RootedWebGLRenderingContextOrWebGL2RenderingContext::WebGL2RenderingContext( - ref context, - ) => WebGLRenderingContextOrWebGL2RenderingContext::WebGL2RenderingContext( - Dom::from_ref(context), - ), - } - } -} - -impl RootedWebGLRenderingContextOrWebGL2RenderingContext { - pub(crate) fn context_id(&self) -> WebGLContextId { - match self { - RootedWebGLRenderingContextOrWebGL2RenderingContext::WebGLRenderingContext( - ref context, - ) => context.context_id(), - RootedWebGLRenderingContextOrWebGL2RenderingContext::WebGL2RenderingContext( - ref context, - ) => context.base_context().context_id(), - } - } -} - -impl XRWebGLBindingMethods for XRWebGLBinding { - /// https://immersive-web.github.io/layers/#dom-xrwebglbinding-getsubimage - fn GetSubImage(&self, _layer: &XRLayer, _frame: &XRFrame) -> Option<DomRoot<XRWebGLSubImage>> { - // TODO: Implement this - None - } - - /// https://immersive-web.github.io/layers/#dom-xrwebglbinding-getviewsubimage - fn GetViewSubImage( - &self, - _layer: &XRLayer, - _view: &XRView, - ) -> Option<DomRoot<XRWebGLSubImage>> { - // TODO: Implement this - None - } + context: Dom<WebGLRenderingContext>, } impl XRWebGLBinding { - pub fn new_inherited( - session: &XRSession, - context: &WebGLRenderingContextOrWebGL2RenderingContext, - ) -> XRWebGLBinding { + pub fn new_inherited(session: &XRSession, context: &WebGLRenderingContext) -> XRWebGLBinding { XRWebGLBinding { reflector: Reflector::new(), session: Dom::from_ref(session), - context: context.clone(), + context: Dom::from_ref(context), } } pub fn new( global: &Window, session: &XRSession, - context: &WebGLRenderingContextOrWebGL2RenderingContext, + context: &WebGLRenderingContext, ) -> DomRoot<XRWebGLBinding> { reflect_dom_object( Box::new(XRWebGLBinding::new_inherited(session, context)), @@ -112,12 +43,14 @@ impl XRWebGLBinding { pub fn Constructor( global: &Window, session: &XRSession, - context: RootedWebGLRenderingContextOrWebGL2RenderingContext, + context: WebGLRenderingContextOrWebGL2RenderingContext, ) -> DomRoot<XRWebGLBinding> { - XRWebGLBinding::new( - global, - session, - &WebGLRenderingContextOrWebGL2RenderingContext::from_ref(&context), - ) + let context = match context { + WebGLRenderingContextOrWebGL2RenderingContext::WebGLRenderingContext(ctx) => ctx, + WebGLRenderingContextOrWebGL2RenderingContext::WebGL2RenderingContext(ctx) => { + ctx.base_context() + }, + }; + XRWebGLBinding::new(global, session, &context) } } |