mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Validate spaces passed to getViewerPose()
This commit is contained in:
parent
e33896f3ec
commit
3d790278f1
3 changed files with 16 additions and 5 deletions
|
@ -4,6 +4,8 @@
|
|||
|
||||
use crate::dom::bindings::codegen::Bindings::XRFrameBinding;
|
||||
use crate::dom::bindings::codegen::Bindings::XRFrameBinding::XRFrameMethods;
|
||||
use crate::dom::bindings::error::Error;
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
|
||||
use crate::dom::bindings::root::{Dom, DomRoot};
|
||||
use crate::dom::globalscope::GlobalScope;
|
||||
|
@ -50,13 +52,19 @@ impl XRFrameMethods for XRFrame {
|
|||
}
|
||||
|
||||
/// https://immersive-web.github.io/webxr/#dom-xrframe-getviewerpose
|
||||
fn GetViewerPose(&self, reference: &XRReferenceSpace) -> Option<DomRoot<XRViewerPose>> {
|
||||
fn GetViewerPose(
|
||||
&self,
|
||||
reference: &XRReferenceSpace,
|
||||
) -> Result<Option<DomRoot<XRViewerPose>>, Error> {
|
||||
if self.session != reference.upcast::<XRSpace>().session() {
|
||||
return Err(Error::InvalidState);
|
||||
}
|
||||
let pose = reference.get_viewer_pose(&self.data);
|
||||
Some(XRViewerPose::new(
|
||||
Ok(Some(XRViewerPose::new(
|
||||
&self.global(),
|
||||
&self.session,
|
||||
pose,
|
||||
&self.data,
|
||||
))
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue