mirror of
https://github.com/servo/servo.git
synced 2025-09-19 11:20:09 +01:00
Add preference observer API for runtime webxr preference changes (#38649)
Adds a global preference observer that is notified whenever any preference value is updated. This is used to support runtime configuration of WebXR automated testing, which is a prerequisite for running multiple WPT tests in a single browser session. Testing: Ran `./mach test-wpt /webxr --product=servodriver` Fixes: #38647 --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
fc3feceee5
commit
f19b2f6e84
4 changed files with 63 additions and 6 deletions
|
@ -2,6 +2,7 @@
|
|||
* 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 std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::thread;
|
||||
|
||||
|
@ -19,8 +20,15 @@ use webxr_api::{
|
|||
|
||||
use crate::{SurfmanGL, SurfmanLayerManager};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct HeadlessMockDiscovery {}
|
||||
pub struct HeadlessMockDiscovery {
|
||||
enabled: Arc<AtomicBool>,
|
||||
}
|
||||
|
||||
impl HeadlessMockDiscovery {
|
||||
pub fn new(enabled: Arc<AtomicBool>) -> Self {
|
||||
Self { enabled }
|
||||
}
|
||||
}
|
||||
|
||||
struct HeadlessDiscovery {
|
||||
data: Arc<Mutex<HeadlessDeviceData>>,
|
||||
|
@ -76,6 +84,10 @@ impl MockDiscoveryAPI<SurfmanGL> for HeadlessMockDiscovery {
|
|||
init: MockDeviceInit,
|
||||
receiver: WebXrReceiver<MockDeviceMsg>,
|
||||
) -> Result<Box<dyn DiscoveryAPI<SurfmanGL>>, Error> {
|
||||
if !self.enabled.load(Ordering::Relaxed) {
|
||||
return Err(Error::NoMatchingDevice);
|
||||
}
|
||||
|
||||
let viewer_origin = init.viewer_origin;
|
||||
let floor_transform = init.floor_origin.map(|f| f.inverse());
|
||||
let views = init.views.clone();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue