mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
style: Remove HasBoxFFI
HasBoxFFI and HasArcFFI aren't great, see bug 1831242 as for examples of why. HasArcFFI requires a bit more care, but HasBoxFFI doesn't give us much benefit. Instead use the same type in the FFI boundary. Differential Revision: https://phabricator.services.mozilla.com/D177252
This commit is contained in:
parent
1a49d8c79f
commit
19e037d921
9 changed files with 10 additions and 180 deletions
|
@ -1,31 +0,0 @@
|
|||
/* 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/. */
|
||||
|
||||
//! FFI implementations for types listed in ServoBoxedTypeList.h.
|
||||
|
||||
use crate::gecko_bindings::sugar::ownership::{HasBoxFFI, HasFFI, HasSimpleFFI};
|
||||
use crate::properties::animated_properties::AnimationValueMap;
|
||||
use to_shmem::SharedMemoryBuilder;
|
||||
|
||||
// TODO(heycam): The FFI impls for most of the types in ServoBoxedTypeList.h are spread across
|
||||
// various files at the moment, but should probably all move here, and use macros to define
|
||||
// them more succinctly, like we do in arc_types.rs.
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasFFI for AnimationValueMap {
|
||||
type FFIType = crate::gecko_bindings::bindings::RawServoAnimationValueMap;
|
||||
}
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasSimpleFFI for AnimationValueMap {}
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasBoxFFI for AnimationValueMap {}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasFFI for SharedMemoryBuilder {
|
||||
type FFIType = crate::gecko_bindings::bindings::RawServoSharedMemoryBuilder;
|
||||
}
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasSimpleFFI for SharedMemoryBuilder {}
|
||||
#[cfg(feature = "gecko")]
|
||||
unsafe impl HasBoxFFI for SharedMemoryBuilder {}
|
|
@ -6,9 +6,8 @@
|
|||
|
||||
use crate::dom::TElement;
|
||||
use crate::gecko_bindings::bindings;
|
||||
use crate::gecko_bindings::structs::{self, RawServoStyleSet, ServoStyleSetSizes};
|
||||
use crate::gecko_bindings::structs::{StyleSheet as DomStyleSheet, StyleSheetInfo};
|
||||
use crate::gecko_bindings::sugar::ownership::{HasArcFFI, HasBoxFFI, HasFFI, HasSimpleFFI};
|
||||
use crate::gecko_bindings::structs::{self, ServoStyleSetSizes, StyleSheet as DomStyleSheet, StyleSheetInfo};
|
||||
use crate::gecko_bindings::sugar::ownership::HasArcFFI;
|
||||
use crate::invalidation::media_queries::{MediaListKey, ToMediaListKey};
|
||||
use crate::media_queries::{Device, MediaList};
|
||||
use crate::properties::ComputedValues;
|
||||
|
@ -201,8 +200,5 @@ impl PerDocumentStyleDataImpl {
|
|||
}
|
||||
}
|
||||
|
||||
unsafe impl HasFFI for PerDocumentStyleData {
|
||||
type FFIType = RawServoStyleSet;
|
||||
}
|
||||
unsafe impl HasSimpleFFI for PerDocumentStyleData {}
|
||||
unsafe impl HasBoxFFI for PerDocumentStyleData {}
|
||||
/// The gecko-specific AuthorStyles instantiation.
|
||||
pub type AuthorStyles = crate::author_styles::AuthorStyles<GeckoStyleSheet>;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
mod non_ts_pseudo_class_list;
|
||||
|
||||
pub mod arc_types;
|
||||
pub mod boxed_types;
|
||||
pub mod conversions;
|
||||
pub mod data;
|
||||
pub mod media_features;
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
//! Gecko-specific bits for selector-parsing.
|
||||
|
||||
use crate::computed_value_flags::ComputedValueFlags;
|
||||
use crate::gecko_bindings::structs::RawServoSelectorList;
|
||||
use crate::gecko_bindings::sugar::ownership::{HasBoxFFI, HasFFI, HasSimpleFFI};
|
||||
use crate::invalidation::element::document_state::InvalidationMatchingData;
|
||||
use crate::properties::ComputedValues;
|
||||
use crate::selector_parser::{Direction, HorizontalDirection, SelectorParser};
|
||||
|
@ -17,7 +15,6 @@ use cssparser::{BasicParseError, BasicParseErrorKind, Parser};
|
|||
use cssparser::{CowRcStr, SourceLocation, ToCss, Token};
|
||||
use dom::{DocumentState, ElementState};
|
||||
use selectors::parser::SelectorParseErrorKind;
|
||||
use selectors::SelectorList;
|
||||
use std::fmt;
|
||||
use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_};
|
||||
use thin_vec::ThinVec;
|
||||
|
@ -489,12 +486,6 @@ impl SelectorImpl {
|
|||
}
|
||||
}
|
||||
|
||||
unsafe impl HasFFI for SelectorList<SelectorImpl> {
|
||||
type FFIType = RawServoSelectorList;
|
||||
}
|
||||
unsafe impl HasSimpleFFI for SelectorList<SelectorImpl> {}
|
||||
unsafe impl HasBoxFFI for SelectorList<SelectorImpl> {}
|
||||
|
||||
// Selector and component sizes are important for matching performance.
|
||||
size_of_test!(selectors::parser::Selector<SelectorImpl>, 8);
|
||||
size_of_test!(selectors::parser::Component<SelectorImpl>, 24);
|
||||
|
|
|
@ -15,11 +15,9 @@
|
|||
//! the separation between the style system implementation and everything else.
|
||||
|
||||
use crate::applicable_declarations::ApplicableDeclarationBlock;
|
||||
use crate::author_styles::AuthorStyles;
|
||||
use crate::context::{PostAnimationTasks, QuirksMode, SharedStyleContext, UpdateAnimationsTasks};
|
||||
use crate::data::ElementData;
|
||||
use crate::dom::{LayoutIterator, NodeInfo, OpaqueNode, TDocument, TElement, TNode, TShadowRoot};
|
||||
use crate::gecko::data::GeckoStyleSheet;
|
||||
use crate::gecko::selector_parser::{NonTSPseudoClass, PseudoElement, SelectorImpl};
|
||||
use crate::gecko::snapshot_helpers;
|
||||
use crate::gecko_bindings::bindings;
|
||||
|
@ -50,7 +48,7 @@ use crate::gecko_bindings::structs::NODE_DESCENDANTS_NEED_FRAMES;
|
|||
use crate::gecko_bindings::structs::NODE_NEEDS_FRAME;
|
||||
use crate::gecko_bindings::structs::{nsAtom, nsIContent, nsINode_BooleanFlag};
|
||||
use crate::gecko_bindings::structs::{nsINode as RawGeckoNode, Element as RawGeckoElement};
|
||||
use crate::gecko_bindings::sugar::ownership::{HasArcFFI, HasSimpleFFI};
|
||||
use crate::gecko_bindings::sugar::ownership::HasArcFFI;
|
||||
use crate::global_style_data::GLOBAL_STYLE_DATA;
|
||||
use crate::invalidation::element::restyle_hints::RestyleHint;
|
||||
use crate::media_queries::Device;
|
||||
|
@ -180,7 +178,6 @@ impl<'lr> TShadowRoot for GeckoShadowRoot<'lr> {
|
|||
Self: 'a,
|
||||
{
|
||||
let author_styles = unsafe { self.0.mServoStyles.mPtr.as_ref()? };
|
||||
let author_styles = AuthorStyles::<GeckoStyleSheet>::from_ffi(author_styles);
|
||||
Some(&author_styles.data)
|
||||
}
|
||||
|
||||
|
@ -925,7 +922,7 @@ fn get_animation_rule(
|
|||
Gecko_GetAnimationRule(
|
||||
element.0,
|
||||
cascade_level,
|
||||
AnimationValueMap::as_ffi_mut(&mut animation_values),
|
||||
&mut animation_values,
|
||||
)
|
||||
} {
|
||||
let shared_lock = &GLOBAL_STYLE_DATA.shared_lock;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue