mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Rewrite From/TryFrom conversions on generated types to avoid future orphan rule violations (#34554)
* script: Add traits to allow converting between types that are not defined in the script crate. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * script: Rewrite all From/TryFrom implementations on generated WebIDL types to use new Convert/TryConvert traits. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
e10e989abb
commit
e0cbab2fbb
40 changed files with 439 additions and 380 deletions
|
@ -15,6 +15,7 @@ use webxr_api::{
|
|||
MockViewInit, MockViewsInit, MockWorld, TargetRayMode, Triangle, Visibility,
|
||||
};
|
||||
|
||||
use crate::conversions::Convert;
|
||||
use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit;
|
||||
use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::{
|
||||
FakeXRBoundsPoint, FakeXRDeviceMethods, FakeXRRegionType, FakeXRRigidTransformInit,
|
||||
|
@ -147,7 +148,7 @@ pub fn get_world(world: &FakeXRWorldInit) -> Fallible<MockWorld> {
|
|||
.hitTestRegions
|
||||
.iter()
|
||||
.map(|region| {
|
||||
let ty = region.type_.into();
|
||||
let ty = region.type_.convert();
|
||||
let faces = region
|
||||
.faces
|
||||
.iter()
|
||||
|
@ -172,9 +173,9 @@ pub fn get_world(world: &FakeXRWorldInit) -> Fallible<MockWorld> {
|
|||
Ok(MockWorld { regions })
|
||||
}
|
||||
|
||||
impl From<FakeXRRegionType> for EntityType {
|
||||
fn from(x: FakeXRRegionType) -> Self {
|
||||
match x {
|
||||
impl Convert<EntityType> for FakeXRRegionType {
|
||||
fn convert(self) -> EntityType {
|
||||
match self {
|
||||
FakeXRRegionType::Point => EntityType::Point,
|
||||
FakeXRRegionType::Plane => EntityType::Plane,
|
||||
FakeXRRegionType::Mesh => EntityType::Mesh,
|
||||
|
@ -255,8 +256,8 @@ impl FakeXRDeviceMethods<crate::DomTypeHolder> for FakeXRDevice {
|
|||
let id = self.next_input_id.get();
|
||||
self.next_input_id.set(InputId(id.0 + 1));
|
||||
|
||||
let handedness = init.handedness.into();
|
||||
let target_ray_mode = init.targetRayMode.into();
|
||||
let handedness = init.handedness.convert();
|
||||
let target_ray_mode = init.targetRayMode.convert();
|
||||
|
||||
let pointer_origin = Some(get_origin(&init.pointerOrigin)?);
|
||||
|
||||
|
@ -346,9 +347,9 @@ impl FakeXRDeviceMethods<crate::DomTypeHolder> for FakeXRDevice {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<XRHandedness> for Handedness {
|
||||
fn from(h: XRHandedness) -> Self {
|
||||
match h {
|
||||
impl Convert<Handedness> for XRHandedness {
|
||||
fn convert(self) -> Handedness {
|
||||
match self {
|
||||
XRHandedness::None => Handedness::None,
|
||||
XRHandedness::Left => Handedness::Left,
|
||||
XRHandedness::Right => Handedness::Right,
|
||||
|
@ -356,9 +357,9 @@ impl From<XRHandedness> for Handedness {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<XRTargetRayMode> for TargetRayMode {
|
||||
fn from(t: XRTargetRayMode) -> Self {
|
||||
match t {
|
||||
impl Convert<TargetRayMode> for XRTargetRayMode {
|
||||
fn convert(self) -> TargetRayMode {
|
||||
match self {
|
||||
XRTargetRayMode::Gaze => TargetRayMode::Gaze,
|
||||
XRTargetRayMode::Tracked_pointer => TargetRayMode::TrackedPointer,
|
||||
XRTargetRayMode::Screen => TargetRayMode::Screen,
|
||||
|
|
|
@ -9,6 +9,7 @@ use webxr_api::{
|
|||
SelectKind, TargetRayMode,
|
||||
};
|
||||
|
||||
use crate::conversions::Convert;
|
||||
use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::FakeXRRigidTransformInit;
|
||||
use crate::dom::bindings::codegen::Bindings::FakeXRInputControllerBinding::{
|
||||
FakeXRButtonStateInit, FakeXRButtonType, FakeXRInputControllerMethods,
|
||||
|
@ -165,9 +166,9 @@ impl FakeXRInputControllerMethods<crate::DomTypeHolder> for FakeXRInputControlle
|
|||
}
|
||||
}
|
||||
|
||||
impl From<FakeXRButtonType> for MockButtonType {
|
||||
fn from(b: FakeXRButtonType) -> Self {
|
||||
match b {
|
||||
impl Convert<MockButtonType> for FakeXRButtonType {
|
||||
fn convert(self) -> MockButtonType {
|
||||
match self {
|
||||
FakeXRButtonType::Grip => MockButtonType::Grip,
|
||||
FakeXRButtonType::Touchpad => MockButtonType::Touchpad,
|
||||
FakeXRButtonType::Thumbstick => MockButtonType::Thumbstick,
|
||||
|
@ -182,7 +183,7 @@ pub fn init_to_mock_buttons(buttons: &[FakeXRButtonStateInit]) -> Vec<MockButton
|
|||
let supported: Vec<MockButton> = buttons
|
||||
.iter()
|
||||
.map(|b| MockButton {
|
||||
button_type: b.buttonType.into(),
|
||||
button_type: b.buttonType.convert(),
|
||||
pressed: b.pressed,
|
||||
touched: b.touched,
|
||||
pressed_value: *b.pressedValue,
|
||||
|
|
|
@ -24,6 +24,7 @@ use webxr_api::{
|
|||
SelectEvent, SelectKind, Session, SessionId, View, Viewer, Visibility,
|
||||
};
|
||||
|
||||
use crate::conversions::Convert;
|
||||
use crate::dom::bindings::trace::HashMapTracedValues;
|
||||
use crate::dom::bindings::buffer_source::create_buffer_source;
|
||||
use crate::dom::bindings::callback::ExceptionHandling;
|
||||
|
@ -124,7 +125,7 @@ impl XRSession {
|
|||
) -> XRSession {
|
||||
XRSession {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
blend_mode: session.environment_blend_mode().into(),
|
||||
blend_mode: session.environment_blend_mode().convert(),
|
||||
mode,
|
||||
visibility_state: Cell::new(XRVisibilityState::Visible),
|
||||
viewer_space: Default::default(),
|
||||
|
@ -1100,9 +1101,9 @@ pub fn cast_transform<T, U, V, W>(
|
|||
unsafe { mem::transmute(transform) }
|
||||
}
|
||||
|
||||
impl From<EnvironmentBlendMode> for XREnvironmentBlendMode {
|
||||
fn from(x: EnvironmentBlendMode) -> Self {
|
||||
match x {
|
||||
impl Convert<XREnvironmentBlendMode> for EnvironmentBlendMode {
|
||||
fn convert(self) -> XREnvironmentBlendMode {
|
||||
match self {
|
||||
EnvironmentBlendMode::Opaque => XREnvironmentBlendMode::Opaque,
|
||||
EnvironmentBlendMode::AlphaBlend => XREnvironmentBlendMode::Alpha_blend,
|
||||
EnvironmentBlendMode::Additive => XREnvironmentBlendMode::Additive,
|
||||
|
|
|
@ -13,6 +13,7 @@ use profile_traits::ipc;
|
|||
use servo_config::pref;
|
||||
use webxr_api::{Error as XRError, Frame, Session, SessionInit, SessionMode};
|
||||
|
||||
use crate::conversions::Convert;
|
||||
use crate::dom::bindings::cell::DomRefCell;
|
||||
use crate::dom::bindings::codegen::Bindings::XRSystemBinding::{
|
||||
XRSessionInit, XRSessionMode, XRSystemMethods,
|
||||
|
@ -100,9 +101,9 @@ impl XRSystem {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<XRSessionMode> for SessionMode {
|
||||
fn from(mode: XRSessionMode) -> SessionMode {
|
||||
match mode {
|
||||
impl Convert<SessionMode> for XRSessionMode {
|
||||
fn convert(self) -> SessionMode {
|
||||
match self {
|
||||
XRSessionMode::Immersive_vr => SessionMode::ImmersiveVR,
|
||||
XRSessionMode::Immersive_ar => SessionMode::ImmersiveAR,
|
||||
XRSessionMode::Inline => SessionMode::Inline,
|
||||
|
@ -148,7 +149,7 @@ impl XRSystemMethods<crate::DomTypeHolder> for XRSystem {
|
|||
}),
|
||||
);
|
||||
if let Some(mut r) = window.webxr_registry() {
|
||||
r.supports_session(mode.into(), sender);
|
||||
r.supports_session(mode.convert(), sender);
|
||||
}
|
||||
|
||||
promise
|
||||
|
@ -266,7 +267,7 @@ impl XRSystemMethods<crate::DomTypeHolder> for XRSystem {
|
|||
}),
|
||||
);
|
||||
if let Some(mut r) = window.webxr_registry() {
|
||||
r.request_session(mode.into(), init, sender, frame_sender);
|
||||
r.request_session(mode.convert(), init, sender, frame_sender);
|
||||
}
|
||||
promise
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue