Filter out webidl files based on special comments, and feature-gate webxr interfaces. (#34348)

* Filter out webidl files based on skip-if directives.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* script: Don't build XR functionality without webxr feature.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Fix tidy.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* script: Adjust imports for file movement.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Fix clippy.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Formatting.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Clean up webxr module import.

Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
Signed-off-by: Josh Matthews <josh@joshmatthews.net>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Josh Matthews 2024-11-24 13:01:35 -05:00 committed by GitHub
parent e956f3124c
commit 3faed9b921
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
94 changed files with 206 additions and 53 deletions

View file

@ -0,0 +1,77 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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 dom_struct::dom_struct;
use js::rust::HandleObject;
use servo_atoms::Atom;
use crate::dom::bindings::codegen::Bindings::EventBinding::Event_Binding::EventMethods;
use crate::dom::bindings::codegen::Bindings::XRLayerEventBinding::{
XRLayerEventInit, XRLayerEventMethods,
};
use crate::dom::bindings::reflector::reflect_dom_object_with_proto;
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::DOMString;
use crate::dom::event::Event;
use crate::dom::window::Window;
use crate::dom::xrlayer::XRLayer;
use crate::script_runtime::CanGc;
// https://w3c.github.io/uievents/#interface-uievent
#[dom_struct]
pub struct XRLayerEvent {
event: Event,
layer: Dom<XRLayer>,
}
impl XRLayerEvent {
pub fn new_inherited(layer: &XRLayer) -> XRLayerEvent {
XRLayerEvent {
event: Event::new_inherited(),
layer: Dom::from_ref(layer),
}
}
fn new(
window: &Window,
proto: Option<HandleObject>,
layer: &XRLayer,
can_gc: CanGc,
) -> DomRoot<XRLayerEvent> {
reflect_dom_object_with_proto(
Box::new(XRLayerEvent::new_inherited(layer)),
window,
proto,
can_gc,
)
}
}
impl XRLayerEventMethods<crate::DomTypeHolder> for XRLayerEvent {
// https://immersive-web.github.io/layers/#dom-xrlayerevent-xrlayerevent
fn Constructor(
window: &Window,
proto: Option<HandleObject>,
can_gc: CanGc,
type_: DOMString,
init: &XRLayerEventInit,
) -> DomRoot<XRLayerEvent> {
let event = XRLayerEvent::new(window, proto, &init.layer, can_gc);
let type_ = Atom::from(type_);
let bubbles = init.parent.bubbles;
let cancelable = init.parent.cancelable;
event.event.init_event(type_, bubbles, cancelable);
event
}
// https://immersive-web.github.io/layers/#dom-xrlayerevent-layer
fn Layer(&self) -> DomRoot<XRLayer> {
DomRoot::from_ref(&self.layer)
}
// https://dom.spec.whatwg.org/#dom-event-istrusted
fn IsTrusted(&self) -> bool {
self.event.IsTrusted()
}
}