From d90317cfe4a8472391933152218c443b3f4c9548 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 11 Oct 2019 13:18:09 -0700 Subject: [PATCH] Fire visibilitychange event appropriately --- components/atoms/static_atoms.txt | 1 + components/script/dom/xrsession.rs | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/components/atoms/static_atoms.txt b/components/atoms/static_atoms.txt index c6873dfc171..43b1dbe169a 100644 --- a/components/atoms/static_atoms.txt +++ b/components/atoms/static_atoms.txt @@ -123,6 +123,7 @@ transitionend unhandledrejection unload url +visibilitychange volumechange waiting webglcontextcreationerror diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs index 906b7c0cbe5..ba133ed1d7c 100644 --- a/components/script/dom/xrsession.rs +++ b/components/script/dom/xrsession.rs @@ -49,7 +49,7 @@ use profile_traits::ipc; use std::cell::Cell; use std::mem; use std::rc::Rc; -use webxr_api::{self, EnvironmentBlendMode, Event as XREvent, Frame, SelectEvent, Session}; +use webxr_api::{self, EnvironmentBlendMode, Event as XREvent, Frame, SelectEvent, Session, Visibility}; #[dom_struct] pub struct XRSession { @@ -214,6 +214,22 @@ impl XRSession { frame.set_active(false); } }, + XREvent::VisibilityChange(v) => { + let v = match v { + Visibility::Visible => XRVisibilityState::Visible, + Visibility::VisibleBlurred => XRVisibilityState::Visible_blurred, + Visibility::Hidden => XRVisibilityState::Hidden, + }; + self.visibility_state.set(v); + let event = XRSessionEvent::new( + &self.global(), + atom!("visibilitychange"), + false, + false, + self, + ); + event.upcast::().fire(self.upcast()); + }, _ => (), // XXXManishearth TBD } }