mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Auto merge of #17818 - Manishearth:stylo-fixup, r=heycam
stylo: Various ComputedValues fixes r=heycam https://bugzilla.mozilla.org/show_bug.cgi?id=1382017 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17818) <!-- Reviewable:end -->
This commit is contained in:
commit
992c647f76
8 changed files with 244 additions and 240 deletions
|
@ -889,6 +889,12 @@ impl<'a, T> ArcBorrow<'a, T> {
|
|||
arc
|
||||
}
|
||||
|
||||
/// For constructing from a reference known to be Arc-backed,
|
||||
/// e.g. if we obtain such a reference over FFI
|
||||
pub unsafe fn from_ref(r: &'a T) -> Self {
|
||||
ArcBorrow(r)
|
||||
}
|
||||
|
||||
pub fn with_arc<F, U>(&self, f: F) -> U where F: FnOnce(&Arc<T>) -> U, T: 'static {
|
||||
// Synthesize transient Arc, which never touches the refcount.
|
||||
let transient = unsafe { NoDrop::new(Arc::from_raw(self.0)) };
|
||||
|
|
|
@ -13,13 +13,14 @@ use gecko_bindings::bindings::{RawServoKeyframe, RawServoKeyframesRule};
|
|||
use gecko_bindings::bindings::{RawServoMediaRule, RawServoNamespaceRule, RawServoPageRule};
|
||||
use gecko_bindings::bindings::{RawServoRuleNode, RawServoRuleNodeStrong, RawServoDocumentRule};
|
||||
use gecko_bindings::bindings::ServoCssRules;
|
||||
use gecko_bindings::structs::{RawServoAnimationValue, RawServoDeclarationBlock, RawServoStyleRule, RawServoMediaList};
|
||||
use gecko_bindings::structs::{RawServoStyleSheetContents, ServoStyleContext};
|
||||
use gecko_bindings::sugar::ownership::{HasArcFFI, HasFFI};
|
||||
use gecko_bindings::structs::{RawServoAnimationValue, RawServoDeclarationBlock, RawServoStyleRule};
|
||||
use gecko_bindings::structs::{RawServoMediaList, RawServoStyleSheetContents};
|
||||
use gecko_bindings::sugar::ownership::{HasArcFFI, HasFFI, Strong};
|
||||
use media_queries::MediaList;
|
||||
use properties::{ComputedValues, PropertyDeclarationBlock};
|
||||
use properties::animated_properties::AnimationValue;
|
||||
use rule_tree::StrongRuleNode;
|
||||
use servo_arc::{Arc, ArcBorrow};
|
||||
use shared_lock::Locked;
|
||||
use std::{mem, ptr};
|
||||
use stylesheets::{CssRules, StylesheetContents, StyleRule, ImportRule, KeyframesRule, MediaRule};
|
||||
|
@ -51,9 +52,6 @@ impl_arc_ffi!(Locked<CssRules> => ServoCssRules
|
|||
impl_arc_ffi!(StylesheetContents => RawServoStyleSheetContents
|
||||
[Servo_StyleSheetContents_AddRef, Servo_StyleSheetContents_Release]);
|
||||
|
||||
impl_arc_ffi!(ComputedValues => ServoStyleContext
|
||||
[Servo_StyleContext_AddRef, Servo_StyleContext_Release]);
|
||||
|
||||
impl_arc_ffi!(Locked<PropertyDeclarationBlock> => RawServoDeclarationBlock
|
||||
[Servo_DeclarationBlock_AddRef, Servo_DeclarationBlock_Release]);
|
||||
|
||||
|
@ -114,3 +112,28 @@ pub unsafe extern "C" fn Servo_RuleNode_Release(obj: &RawServoRuleNode) {
|
|||
let ptr = StrongRuleNode::from_ffi(&obj);
|
||||
ptr::read(ptr as *const StrongRuleNode);
|
||||
}
|
||||
|
||||
// ServoStyleContext is not an opaque type on any side of FFI.
|
||||
// This means that doing the HasArcFFI type trick is actually unsound,
|
||||
// since it gives us a way to construct an Arc<ServoStyleContext> from
|
||||
// an &ServoStyleContext, which in general is not allowed. So we
|
||||
// implement the restricted set of arc type functionality we need.
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Servo_StyleContext_AddRef(obj: &ComputedValues) {
|
||||
mem::forget(ArcBorrow::from_ref(obj).clone_arc());
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Servo_StyleContext_Release(obj: &ComputedValues) {
|
||||
ArcBorrow::from_ref(obj).with_arc(|a: &Arc<ComputedValues>| {
|
||||
let _: Arc<ComputedValues> = ptr::read(a);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
impl From<Arc<ComputedValues>> for Strong<ComputedValues> {
|
||||
fn from(arc: Arc<ComputedValues>) -> Self {
|
||||
unsafe { mem::transmute(Arc::into_raw_offset(arc)) }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,10 +5,9 @@ use gecko_bindings::structs::nsStyleTransformMatrix;
|
|||
use gecko_bindings::structs::nsTArray;
|
||||
type nsACString_internal = nsACString;
|
||||
type nsAString_internal = nsAString;
|
||||
pub type ServoStyleContextBorrowed<'a> = &'a ServoStyleContext;
|
||||
pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues;
|
||||
pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;
|
||||
pub type ServoComputedValuesBorrowed<'a> = &'a ServoComputedValues;
|
||||
pub type ServoComputedValuesBorrowedOrNull<'a> = Option<&'a ServoComputedValues>;
|
||||
pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;
|
||||
use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue;
|
||||
use gecko_bindings::structs::mozilla::css::ErrorReporter;
|
||||
use gecko_bindings::structs::mozilla::css::ImageValue;
|
||||
|
@ -221,7 +220,7 @@ use gecko_bindings::structs::nsresult;
|
|||
use gecko_bindings::structs::Loader;
|
||||
use gecko_bindings::structs::LoaderReusableStyleSheets;
|
||||
use gecko_bindings::structs::ServoStyleSheet;
|
||||
use gecko_bindings::structs::ServoComputedValues;
|
||||
use gecko_bindings::structs::ServoComputedData;
|
||||
use gecko_bindings::structs::ServoStyleContext;
|
||||
use gecko_bindings::structs::ServoStyleContextStrong;
|
||||
use gecko_bindings::structs::EffectCompositor_CascadeLevel;
|
||||
|
@ -536,7 +535,7 @@ extern "C" {
|
|||
ServoStyleContextBorrowedOrNull,
|
||||
pres_context:
|
||||
RawGeckoPresContextBorrowed,
|
||||
values: ServoComputedValuesBorrowed,
|
||||
values: ServoComputedDataBorrowed,
|
||||
pseudo_type: CSSPseudoElementType,
|
||||
pseudo_tag: *mut nsIAtom);
|
||||
}
|
||||
|
@ -1047,8 +1046,8 @@ extern "C" {
|
|||
-> CSSPseudoElementType;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Gecko_CalcStyleDifference(old_style: *const ServoStyleContext,
|
||||
new_style: *const ServoStyleContext,
|
||||
pub fn Gecko_CalcStyleDifference(old_style: ServoStyleContextBorrowed,
|
||||
new_style: ServoStyleContextBorrowed,
|
||||
old_style_bits: u64,
|
||||
any_style_changed: *mut bool)
|
||||
-> nsChangeHint;
|
||||
|
@ -1985,10 +1984,10 @@ extern "C" {
|
|||
-> ServoStyleContextStrong;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_StyleContext_AddRef(ctx: &ServoStyleContext);
|
||||
pub fn Servo_StyleContext_AddRef(ctx: ServoStyleContextBorrowed);
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_StyleContext_Release(ctx: &ServoStyleContext);
|
||||
pub fn Servo_StyleContext_Release(ctx: ServoStyleContextBorrowed);
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_StyleSet_MightHaveAttributeDependency(set:
|
||||
|
@ -2322,7 +2321,7 @@ extern "C" {
|
|||
}
|
||||
extern "C" {
|
||||
pub fn Servo_ComputedValues_SpecifiesAnimationsOrTransitions(computed_values:
|
||||
ServoComputedValuesBorrowed)
|
||||
ServoStyleContextBorrowed)
|
||||
-> bool;
|
||||
}
|
||||
extern "C" {
|
||||
|
@ -2705,19 +2704,19 @@ extern "C" {
|
|||
}
|
||||
extern "C" {
|
||||
pub fn Servo_ComputedValues_GetStyleBits(values:
|
||||
ServoComputedValuesBorrowed)
|
||||
ServoStyleContextBorrowed)
|
||||
-> u64;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_ComputedValues_EqualCustomProperties(first:
|
||||
ServoComputedValuesBorrowed,
|
||||
ServoComputedDataBorrowed,
|
||||
second:
|
||||
ServoComputedValuesBorrowed)
|
||||
ServoComputedDataBorrowed)
|
||||
-> bool;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_ComputedValues_GetStyleRuleList(values:
|
||||
ServoComputedValuesBorrowed,
|
||||
ServoStyleContextBorrowed,
|
||||
rules:
|
||||
RawGeckoServoStyleRuleListBorrowedMut);
|
||||
}
|
||||
|
@ -2804,17 +2803,17 @@ extern "C" {
|
|||
}
|
||||
extern "C" {
|
||||
pub fn Servo_GetCustomPropertyValue(computed_values:
|
||||
ServoComputedValuesBorrowed,
|
||||
ServoStyleContextBorrowed,
|
||||
name: *const nsAString,
|
||||
value: *mut nsAString) -> bool;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_GetCustomPropertiesCount(computed_values:
|
||||
ServoComputedValuesBorrowed)
|
||||
ServoStyleContextBorrowed)
|
||||
-> u32;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Servo_GetCustomPropertyNameAt(arg1: ServoComputedValuesBorrowed,
|
||||
pub fn Servo_GetCustomPropertyNameAt(arg1: ServoStyleContextBorrowed,
|
||||
index: u32, name: *mut nsAString)
|
||||
-> bool;
|
||||
}
|
||||
|
|
|
@ -11,12 +11,12 @@ pub type ServoCell<T> = ::std::cell::Cell<T>;
|
|||
pub type ServoNodeData = AtomicRefCell<ElementData>;
|
||||
pub type ServoWritingMode = ::logical_geometry::WritingMode;
|
||||
pub type ServoFontComputationData = ::properties::FontComputationData;
|
||||
pub type ServoCustomPropertiesMap = Option<::stylearc::Arc<::custom_properties::CustomPropertiesMap>>;
|
||||
pub type ServoCustomPropertiesMap = Option<::servo_arc::Arc<::custom_properties::CustomPropertiesMap>>;
|
||||
pub type ServoRuleNode = Option<::rule_tree::StrongRuleNode>;
|
||||
pub type ServoVisitedStyle = Option<::stylearc::RawOffsetArc<::properties::ComputedValues>>;
|
||||
pub type ServoVisitedStyle = Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>;
|
||||
pub type ServoComputedValueFlags = ::properties::computed_value_flags::ComputedValueFlags;
|
||||
pub type ServoRawOffsetArc<T> = ::stylearc::RawOffsetArc<T>;
|
||||
pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<ServoStyleContext>;
|
||||
pub type ServoRawOffsetArc<T> = ::servo_arc::RawOffsetArc<T>;
|
||||
pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>;
|
||||
|
||||
#[allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
|
||||
pub mod root {
|
||||
|
@ -7590,7 +7590,7 @@ pub mod root {
|
|||
pub struct ServoStyleContext {
|
||||
pub _base: root::nsStyleContext,
|
||||
pub mPresContext: *mut root::nsPresContext,
|
||||
pub mSource: root::ServoComputedValues,
|
||||
pub mSource: root::ServoComputedData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoStyleContext() {
|
||||
|
@ -20993,7 +20993,7 @@ pub mod root {
|
|||
*/
|
||||
#[repr(C)]
|
||||
#[derive(Debug)]
|
||||
pub struct ServoComputedValues {
|
||||
pub struct ServoComputedData {
|
||||
pub Font: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoFont>,
|
||||
pub Color: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoColor>,
|
||||
pub List: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoList>,
|
||||
|
@ -21031,187 +21031,187 @@ pub mod root {
|
|||
pub font_computation_data: ::gecko_bindings::structs::ServoFontComputationData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoComputedValues() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedValues>() , 224usize ,
|
||||
fn bindgen_test_layout_ServoComputedData() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedData>() , 224usize ,
|
||||
concat ! (
|
||||
"Size of: " , stringify ! ( ServoComputedValues ) ));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedValues>() , 8usize ,
|
||||
"Size of: " , stringify ! ( ServoComputedData ) ));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedData>() , 8usize ,
|
||||
concat ! (
|
||||
"Alignment of " , stringify ! ( ServoComputedValues ) ));
|
||||
"Alignment of " , stringify ! ( ServoComputedData ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Font as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Font as *
|
||||
const _ as usize } , 0usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Font ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Color as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Color as *
|
||||
const _ as usize } , 8usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Color ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . List as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . List as *
|
||||
const _ as usize } , 16usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( List ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Text as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Text as *
|
||||
const _ as usize } , 24usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Text ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Visibility
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Visibility
|
||||
as * const _ as usize } , 32usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Visibility ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
UserInterface as * const _ as usize } , 40usize , concat !
|
||||
(
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( UserInterface ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . TableBorder
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . TableBorder
|
||||
as * const _ as usize } , 48usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( TableBorder ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . SVG as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . SVG as *
|
||||
const _ as usize } , 56usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( SVG ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Background
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Background
|
||||
as * const _ as usize } , 64usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Background ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Position as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Position as
|
||||
* const _ as usize } , 72usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Position ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . TextReset
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . TextReset
|
||||
as * const _ as usize } , 80usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( TextReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Display as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Display as
|
||||
* const _ as usize } , 88usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Display ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Content as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Content as
|
||||
* const _ as usize } , 96usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Content ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . UIReset as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . UIReset as
|
||||
* const _ as usize } , 104usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( UIReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Table as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Table as *
|
||||
const _ as usize } , 112usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Table ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Margin as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Margin as *
|
||||
const _ as usize } , 120usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Margin ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Padding as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Padding as
|
||||
* const _ as usize } , 128usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Padding ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Border as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Border as *
|
||||
const _ as usize } , 136usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Border ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Outline as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Outline as
|
||||
* const _ as usize } , 144usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Outline ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . XUL as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . XUL as *
|
||||
const _ as usize } , 152usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( XUL ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . SVGReset as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . SVGReset as
|
||||
* const _ as usize } , 160usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( SVGReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Column as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Column as *
|
||||
const _ as usize } , 168usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Column ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Effects as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Effects as
|
||||
* const _ as usize } , 176usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Effects ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
custom_properties as * const _ as usize } , 184usize ,
|
||||
concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( custom_properties ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
writing_mode as * const _ as usize } , 192usize , concat !
|
||||
(
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( writing_mode ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . flags as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . flags as *
|
||||
const _ as usize } , 193usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( flags ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . rules as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . rules as *
|
||||
const _ as usize } , 200usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( rules ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
visited_style as * const _ as usize } , 208usize , concat
|
||||
! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( visited_style ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
font_computation_data as * const _ as usize } , 216usize ,
|
||||
concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( font_computation_data ) ));
|
||||
}
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Copy)]
|
||||
pub struct ServoComputedValuesForgotten {
|
||||
pub mPtr: *const root::ServoComputedValues,
|
||||
pub struct ServoComputedDataForgotten {
|
||||
pub mPtr: *const root::ServoComputedData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoComputedValuesForgotten() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedValuesForgotten>() ,
|
||||
fn bindgen_test_layout_ServoComputedDataForgotten() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedDataForgotten>() ,
|
||||
8usize , concat ! (
|
||||
"Size of: " , stringify ! ( ServoComputedValuesForgotten )
|
||||
"Size of: " , stringify ! ( ServoComputedDataForgotten )
|
||||
));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedValuesForgotten>() ,
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedDataForgotten>() ,
|
||||
8usize , concat ! (
|
||||
"Alignment of " , stringify ! (
|
||||
ServoComputedValuesForgotten ) ));
|
||||
ServoComputedDataForgotten ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValuesForgotten ) ) .
|
||||
& ( * ( 0 as * const ServoComputedDataForgotten ) ) .
|
||||
mPtr as * const _ as usize } , 0usize , concat ! (
|
||||
"Alignment of field: " , stringify ! (
|
||||
ServoComputedValuesForgotten ) , "::" , stringify ! ( mPtr
|
||||
ServoComputedDataForgotten ) , "::" , stringify ! ( mPtr
|
||||
) ));
|
||||
}
|
||||
impl Clone for ServoComputedValuesForgotten {
|
||||
impl Clone for ServoComputedDataForgotten {
|
||||
fn clone(&self) -> Self { *self }
|
||||
}
|
||||
#[repr(u32)]
|
||||
|
@ -38455,9 +38455,7 @@ pub mod root {
|
|||
*const root::mozilla::ServoStyleContext;
|
||||
pub type ServoStyleContextBorrowedOrNull =
|
||||
*const root::mozilla::ServoStyleContext;
|
||||
pub type ServoComputedValuesBorrowed = *const root::ServoComputedValues;
|
||||
pub type ServoComputedValuesBorrowedOrNull =
|
||||
*const root::ServoComputedValues;
|
||||
pub type ServoComputedDataBorrowed = *const root::ServoComputedData;
|
||||
pub type RawServoAnimationValueMapBorrowedMut =
|
||||
*mut root::RawServoAnimationValueMap;
|
||||
pub type RawGeckoNodeBorrowed = *const root::RawGeckoNode;
|
||||
|
|
|
@ -11,12 +11,12 @@ pub type ServoCell<T> = ::std::cell::Cell<T>;
|
|||
pub type ServoNodeData = AtomicRefCell<ElementData>;
|
||||
pub type ServoWritingMode = ::logical_geometry::WritingMode;
|
||||
pub type ServoFontComputationData = ::properties::FontComputationData;
|
||||
pub type ServoCustomPropertiesMap = Option<::stylearc::Arc<::custom_properties::CustomPropertiesMap>>;
|
||||
pub type ServoCustomPropertiesMap = Option<::servo_arc::Arc<::custom_properties::CustomPropertiesMap>>;
|
||||
pub type ServoRuleNode = Option<::rule_tree::StrongRuleNode>;
|
||||
pub type ServoVisitedStyle = Option<::stylearc::RawOffsetArc<::properties::ComputedValues>>;
|
||||
pub type ServoVisitedStyle = Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>;
|
||||
pub type ServoComputedValueFlags = ::properties::computed_value_flags::ComputedValueFlags;
|
||||
pub type ServoRawOffsetArc<T> = ::stylearc::RawOffsetArc<T>;
|
||||
pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<ServoStyleContext>;
|
||||
pub type ServoRawOffsetArc<T> = ::servo_arc::RawOffsetArc<T>;
|
||||
pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>;
|
||||
|
||||
#[allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
|
||||
pub mod root {
|
||||
|
@ -7438,7 +7438,7 @@ pub mod root {
|
|||
pub struct ServoStyleContext {
|
||||
pub _base: root::nsStyleContext,
|
||||
pub mPresContext: *mut root::nsPresContext,
|
||||
pub mSource: root::ServoComputedValues,
|
||||
pub mSource: root::ServoComputedData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoStyleContext() {
|
||||
|
@ -20609,7 +20609,7 @@ pub mod root {
|
|||
*/
|
||||
#[repr(C)]
|
||||
#[derive(Debug)]
|
||||
pub struct ServoComputedValues {
|
||||
pub struct ServoComputedData {
|
||||
pub Font: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoFont>,
|
||||
pub Color: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoColor>,
|
||||
pub List: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoList>,
|
||||
|
@ -20647,187 +20647,187 @@ pub mod root {
|
|||
pub font_computation_data: ::gecko_bindings::structs::ServoFontComputationData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoComputedValues() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedValues>() , 224usize ,
|
||||
fn bindgen_test_layout_ServoComputedData() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedData>() , 224usize ,
|
||||
concat ! (
|
||||
"Size of: " , stringify ! ( ServoComputedValues ) ));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedValues>() , 8usize ,
|
||||
"Size of: " , stringify ! ( ServoComputedData ) ));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedData>() , 8usize ,
|
||||
concat ! (
|
||||
"Alignment of " , stringify ! ( ServoComputedValues ) ));
|
||||
"Alignment of " , stringify ! ( ServoComputedData ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Font as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Font as *
|
||||
const _ as usize } , 0usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Font ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Color as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Color as *
|
||||
const _ as usize } , 8usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Color ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . List as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . List as *
|
||||
const _ as usize } , 16usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( List ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Text as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Text as *
|
||||
const _ as usize } , 24usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Text ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Visibility
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Visibility
|
||||
as * const _ as usize } , 32usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Visibility ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
UserInterface as * const _ as usize } , 40usize , concat !
|
||||
(
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( UserInterface ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . TableBorder
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . TableBorder
|
||||
as * const _ as usize } , 48usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( TableBorder ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . SVG as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . SVG as *
|
||||
const _ as usize } , 56usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( SVG ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Background
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Background
|
||||
as * const _ as usize } , 64usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Background ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Position as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Position as
|
||||
* const _ as usize } , 72usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Position ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . TextReset
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . TextReset
|
||||
as * const _ as usize } , 80usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( TextReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Display as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Display as
|
||||
* const _ as usize } , 88usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Display ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Content as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Content as
|
||||
* const _ as usize } , 96usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Content ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . UIReset as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . UIReset as
|
||||
* const _ as usize } , 104usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( UIReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Table as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Table as *
|
||||
const _ as usize } , 112usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Table ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Margin as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Margin as *
|
||||
const _ as usize } , 120usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Margin ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Padding as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Padding as
|
||||
* const _ as usize } , 128usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Padding ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Border as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Border as *
|
||||
const _ as usize } , 136usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Border ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Outline as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Outline as
|
||||
* const _ as usize } , 144usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Outline ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . XUL as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . XUL as *
|
||||
const _ as usize } , 152usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( XUL ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . SVGReset as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . SVGReset as
|
||||
* const _ as usize } , 160usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( SVGReset ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Column as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Column as *
|
||||
const _ as usize } , 168usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Column ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . Effects as
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . Effects as
|
||||
* const _ as usize } , 176usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( Effects ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
custom_properties as * const _ as usize } , 184usize ,
|
||||
concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( custom_properties ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
writing_mode as * const _ as usize } , 192usize , concat !
|
||||
(
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( writing_mode ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . flags as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . flags as *
|
||||
const _ as usize } , 193usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( flags ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) . rules as *
|
||||
& ( * ( 0 as * const ServoComputedData ) ) . rules as *
|
||||
const _ as usize } , 200usize , concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( rules ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
visited_style as * const _ as usize } , 208usize , concat
|
||||
! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( visited_style ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValues ) ) .
|
||||
& ( * ( 0 as * const ServoComputedData ) ) .
|
||||
font_computation_data as * const _ as usize } , 216usize ,
|
||||
concat ! (
|
||||
"Alignment of field: " , stringify ! ( ServoComputedValues
|
||||
"Alignment of field: " , stringify ! ( ServoComputedData
|
||||
) , "::" , stringify ! ( font_computation_data ) ));
|
||||
}
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Copy)]
|
||||
pub struct ServoComputedValuesForgotten {
|
||||
pub mPtr: *const root::ServoComputedValues,
|
||||
pub struct ServoComputedDataForgotten {
|
||||
pub mPtr: *const root::ServoComputedData,
|
||||
}
|
||||
#[test]
|
||||
fn bindgen_test_layout_ServoComputedValuesForgotten() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedValuesForgotten>() ,
|
||||
fn bindgen_test_layout_ServoComputedDataForgotten() {
|
||||
assert_eq!(::std::mem::size_of::<ServoComputedDataForgotten>() ,
|
||||
8usize , concat ! (
|
||||
"Size of: " , stringify ! ( ServoComputedValuesForgotten )
|
||||
"Size of: " , stringify ! ( ServoComputedDataForgotten )
|
||||
));
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedValuesForgotten>() ,
|
||||
assert_eq! (::std::mem::align_of::<ServoComputedDataForgotten>() ,
|
||||
8usize , concat ! (
|
||||
"Alignment of " , stringify ! (
|
||||
ServoComputedValuesForgotten ) ));
|
||||
ServoComputedDataForgotten ) ));
|
||||
assert_eq! (unsafe {
|
||||
& ( * ( 0 as * const ServoComputedValuesForgotten ) ) .
|
||||
& ( * ( 0 as * const ServoComputedDataForgotten ) ) .
|
||||
mPtr as * const _ as usize } , 0usize , concat ! (
|
||||
"Alignment of field: " , stringify ! (
|
||||
ServoComputedValuesForgotten ) , "::" , stringify ! ( mPtr
|
||||
ServoComputedDataForgotten ) , "::" , stringify ! ( mPtr
|
||||
) ));
|
||||
}
|
||||
impl Clone for ServoComputedValuesForgotten {
|
||||
impl Clone for ServoComputedDataForgotten {
|
||||
fn clone(&self) -> Self { *self }
|
||||
}
|
||||
#[repr(u32)]
|
||||
|
@ -37764,9 +37764,7 @@ pub mod root {
|
|||
*const root::mozilla::ServoStyleContext;
|
||||
pub type ServoStyleContextBorrowedOrNull =
|
||||
*const root::mozilla::ServoStyleContext;
|
||||
pub type ServoComputedValuesBorrowed = *const root::ServoComputedValues;
|
||||
pub type ServoComputedValuesBorrowedOrNull =
|
||||
*const root::ServoComputedValues;
|
||||
pub type ServoComputedDataBorrowed = *const root::ServoComputedData;
|
||||
pub type RawServoAnimationValueMapBorrowedMut =
|
||||
*mut root::RawServoAnimationValueMap;
|
||||
pub type RawGeckoNodeBorrowed = *const root::RawGeckoNode;
|
||||
|
|
|
@ -53,8 +53,8 @@ impl GeckoRestyleDamage {
|
|||
) -> StyleDifference {
|
||||
let mut any_style_changed: bool = false;
|
||||
let hint = unsafe {
|
||||
bindings::Gecko_CalcStyleDifference(old_style.as_style_context(),
|
||||
new_style.as_style_context(),
|
||||
bindings::Gecko_CalcStyleDifference(old_style,
|
||||
new_style,
|
||||
source.mBits,
|
||||
&mut any_style_changed)
|
||||
};
|
||||
|
|
|
@ -39,7 +39,6 @@ use gecko_bindings::bindings::Gecko_nsStyleFont_CopyLangFrom;
|
|||
use gecko_bindings::bindings::Gecko_SetListStyleImageNone;
|
||||
use gecko_bindings::bindings::Gecko_SetListStyleImageImageValue;
|
||||
use gecko_bindings::bindings::Gecko_SetNullImageValue;
|
||||
use gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull;
|
||||
use gecko_bindings::bindings::{Gecko_ResetFilters, Gecko_CopyFiltersFrom};
|
||||
use gecko_bindings::bindings::RawGeckoPresContextBorrowed;
|
||||
use gecko_bindings::structs;
|
||||
|
@ -74,7 +73,7 @@ pub mod style_structs {
|
|||
}
|
||||
|
||||
/// FIXME(emilio): This is completely duplicated with the other properties code.
|
||||
pub type ComputedValuesInner = ::gecko_bindings::structs::ServoComputedValues;
|
||||
pub type ComputedValuesInner = ::gecko_bindings::structs::ServoComputedData;
|
||||
|
||||
#[derive(Debug)]
|
||||
#[repr(C)]
|
||||
|
@ -137,10 +136,6 @@ impl ComputedValues {
|
|||
let atom = Atom::from(atom);
|
||||
PseudoElement::from_atom(&atom)
|
||||
}
|
||||
|
||||
pub fn as_style_context(&self) -> &::gecko_bindings::structs::mozilla::ServoStyleContext {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for ComputedValues {
|
||||
|
@ -227,7 +222,8 @@ impl ComputedValuesInner {
|
|||
) -> Arc<ComputedValues> {
|
||||
let arc = unsafe {
|
||||
let arc: Arc<ComputedValues> = Arc::new(uninitialized());
|
||||
bindings::Gecko_ServoStyleContext_Init(&arc.0 as *const _ as *mut _, parent, pres_context,
|
||||
bindings::Gecko_ServoStyleContext_Init(&arc.0 as *const _ as *mut _,
|
||||
parent, pres_context,
|
||||
&self, pseudo_ty, pseudo_tag);
|
||||
// We're simulating a move by having C++ do a memcpy and then forgetting
|
||||
// it on this end.
|
||||
|
@ -4973,23 +4969,12 @@ clip-path
|
|||
}
|
||||
</%self:impl_trait>
|
||||
|
||||
<%def name="define_ffi_struct_accessor(style_struct)">
|
||||
#[no_mangle]
|
||||
#[allow(non_snake_case, unused_variables)]
|
||||
pub unsafe extern "C" fn Servo_GetStyle${style_struct.gecko_name}(computed_values:
|
||||
ServoComputedValuesBorrowedOrNull) -> *const ${style_struct.gecko_ffi_name} {
|
||||
computed_values.unwrap().get_${style_struct.name_lower}().get_gecko()
|
||||
as *const ${style_struct.gecko_ffi_name}
|
||||
}
|
||||
</%def>
|
||||
|
||||
% for style_struct in data.style_structs:
|
||||
${declare_style_struct(style_struct)}
|
||||
${impl_style_struct(style_struct)}
|
||||
% if not style_struct.name in data.manual_style_structs:
|
||||
<%self:raw_impl_trait style_struct="${style_struct}"></%self:raw_impl_trait>
|
||||
% endif
|
||||
${define_ffi_struct_accessor(style_struct)}
|
||||
% endfor
|
||||
|
||||
// This is only accessed from the Gecko main thread.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue