aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrwebglbinding.rs
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2020-07-31 18:44:57 -0500
committerAlan Jeffrey <ajeffrey@mozilla.com>2020-08-03 12:37:01 -0500
commitbf7f4eae31f0332b0ab8460132c937f8facbed47 (patch)
tree85ccb6a32b1ae33cada701ca96b47aff19bb477d /components/script/dom/xrwebglbinding.rs
parent092dcaf2e6ec2ed4bc197991b46addf0752214a7 (diff)
downloadservo-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.rs93
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)
}
}