Add SimulateVisibilityChange()

This commit is contained in:
Manish Goregaokar 2020-01-08 15:50:57 +05:30
parent 6a21983e15
commit 9ecb13d83f
2 changed files with 14 additions and 9 deletions

View file

@ -5,6 +5,7 @@
use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::{ use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::{
self, FakeXRDeviceMethods, FakeXRRigidTransformInit, FakeXRViewInit, self, FakeXRDeviceMethods, FakeXRRigidTransformInit, FakeXRViewInit,
}; };
use crate::dom::bindings::codegen::Bindings::XRSessionBinding::XRVisibilityState;
use crate::dom::bindings::codegen::Bindings::XRViewBinding::XREye; use crate::dom::bindings::codegen::Bindings::XRViewBinding::XREye;
use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::error::{Error, Fallible};
use crate::dom::bindings::refcounted::TrustedPromise; use crate::dom::bindings::refcounted::TrustedPromise;
@ -20,7 +21,7 @@ use ipc_channel::ipc::IpcSender;
use ipc_channel::router::ROUTER; use ipc_channel::router::ROUTER;
use profile_traits::ipc; use profile_traits::ipc;
use std::rc::Rc; use std::rc::Rc;
use webxr_api::{MockDeviceMsg, MockViewInit, MockViewsInit}; use webxr_api::{MockDeviceMsg, MockViewInit, MockViewsInit, Visibility};
#[dom_struct] #[dom_struct]
pub struct FakeXRDevice { pub struct FakeXRDevice {
@ -163,7 +164,17 @@ impl FakeXRDeviceMethods for FakeXRDevice {
Ok(()) Ok(())
} }
/// https://github.com/immersive-web/webxr-test-api/blob/master/explainer.md /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulatevisibilitychange
fn SimulateVisibilityChange(&self, v: XRVisibilityState) {
let v = match v {
XRVisibilityState::Visible => Visibility::Visible,
XRVisibilityState::Visible_blurred => Visibility::VisibleBlurred,
XRVisibilityState::Hidden => Visibility::Hidden,
};
let _ = self.sender.send(MockDeviceMsg::VisibilityChange(v));
}
/// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-disconnect
fn Disconnect(&self) -> Rc<Promise> { fn Disconnect(&self) -> Rc<Promise> {
let global = self.global(); let global = self.global();
let p = Promise::new(&global); let p = Promise::new(&global);

View file

@ -10,9 +10,6 @@ interface FakeXRDevice {
// requestAnimationFrame() callbacks. // requestAnimationFrame() callbacks.
[Throws] void setViews(sequence<FakeXRViewInit> views); [Throws] void setViews(sequence<FakeXRViewInit> views);
// // behaves as if device was disconnected
// Promise<void> disconnect();
[Throws] void setViewerOrigin(FakeXRRigidTransformInit origin, optional boolean emulatedPosition = false); [Throws] void setViewerOrigin(FakeXRRigidTransformInit origin, optional boolean emulatedPosition = false);
void clearViewerOrigin(); void clearViewerOrigin();
@ -20,12 +17,9 @@ interface FakeXRDevice {
void clearFloorOrigin(); void clearFloorOrigin();
// // Simulates devices focusing and blurring sessions. // // Simulates devices focusing and blurring sessions.
// void simulateVisibilityChange(XRVisibilityState); void simulateVisibilityChange(XRVisibilityState state);
// void setBoundsGeometry(sequence<FakeXRBoundsPoint> boundsCoodinates); // void setBoundsGeometry(sequence<FakeXRBoundsPoint> boundsCoodinates);
// // Sets eye level used for calculating floor-level spaces
// void setEyeLevel(float eyeLevel);
// Promise<FakeXRInputController> // Promise<FakeXRInputController>
// simulateInputSourceConnection(FakeXRInputSourceInit); // simulateInputSourceConnection(FakeXRInputSourceInit);