gecko-dev/layout/style/ServoBindings.toml

622 строки
20 KiB
TOML

[structs]
headers = [
"nsStyleStruct.h",
"mozilla/StyleAnimationValue.h",
"gfxFontConstants.h",
"gfxFontFeatures.h",
"nsStyleConsts.h",
"mozilla/css/Loader.h",
"mozilla/css/SheetLoadData.h",
"mozilla/DeclarationBlock.h",
"mozilla/dom/AnimationEffectBinding.h",
"mozilla/dom/HTMLSlotElement.h",
"mozilla/dom/KeyframeEffectBinding.h",
"mozilla/dom/MediaList.h",
"mozilla/dom/ShadowRoot.h",
"mozilla/AnimationPropertySegment.h",
"mozilla/ComputedTiming.h",
"mozilla/ComputedTimingFunction.h",
"mozilla/CORSMode.h",
"mozilla/Keyframe.h",
"mozilla/ServoElementSnapshot.h",
"mozilla/ServoElementSnapshotTable.h",
"mozilla/dom/Element.h",
"mozilla/dom/ChildIterator.h",
"mozilla/dom/NameSpaceConstants.h",
"mozilla/LookAndFeel.h",
"mozilla/StaticPrefs.h",
"mozilla/GeckoBindings.h",
"mozilla/ComputedStyle.h",
"mozilla/ServoTraversalStatistics.h",
"mozilla/SizeOfState.h",
"nsCSSProps.h",
"nsContentUtils.h",
"nsNameSpaceManager.h",
"nsMediaFeatures.h",
"nsXBLBinding.h",
]
raw-lines = [
# FIXME(emilio): Incrementally remove these "pub use"s. Probably
# mozilla::css and mozilla::dom are easier.
"pub use self::root::*;",
"pub use self::root::mozilla::*;",
"pub use self::root::mozilla::css::*;",
"pub use self::root::mozilla::dom::*;",
"use atomic_refcell::AtomicRefCell;",
"use data::ElementData;",
]
hide-types = [
"nsString",
".*char_traits",
".*incompatible_char_type",
# JS::Value uses alignas(8) which bindgen can't represent correctly on Linux
# 32-bit. See https://github.com/rust-lang-nursery/rust-bindgen/issues/917.
# It's also not used by Stylo. The following types are also hidden for
# making use of it and being similarly unused by Stylo.
"JS::Value",
"mozilla::binding_danger::TErrorResult.*",
"mozilla::ErrorResult.*", # Causes JSWhyMagic to be included & handled incorrectly.
"mozilla::dom::CallbackFunction",
"mozilla::dom::CallbackObject.*",
"nsINode_ErrorResult",
"nsDOMAttributeMap_ErrorResult",
# End of JS::Value related types
# This is generated by cbindgen, and we map it to its original rust type.
# Note: This could also avoid some rust-bindgen issues on complex template
# structs. i.e. We may use incorrect template parameters for nested structs.
# https://github.com/rust-lang-nursery/rust-bindgen/issues/1429
"mozilla::StyleTimingFunction.*",
]
bitfield-enums = [
"nsChangeHint",
"nsRestyleHint",
"mozilla::OriginFlags",
]
rusty-enums = [
"nsCompatibility",
"mozilla::EffectCompositor_CascadeLevel",
"mozilla::SheetType",
"mozilla::dom::CallerType",
"mozilla::dom::IterationCompositeOperation",
"mozilla::dom::CompositeOperation",
"mozilla::InheritTarget",
"mozilla::FontFamilyType",
"mozilla::css::DocumentMatchingFunction",
"mozilla::css::SheetParsingMode",
"mozilla::StyleContentType",
"nsStyleSVGOpacitySource",
"nsStyleUnit",
"nsCSSKeyword",
"nsIDocument_DocumentTheme",
"nsIDocument_Type",
"nsCSSUnit",
"nsCSSFontDesc",
"nsCSSPropertyID",
"nsCSSCounterDesc",
"nsMediaFeature_RangeType",
"nsMediaFeature_ValueType",
"nsresult",
"nsAtom_AtomKind",
"nsStyleImageLayers_LayerType",
"mozilla::ServoElementSnapshotFlags",
"mozilla::Side",
"mozilla::dom::PlaybackDirection",
"mozilla::dom::FillMode",
"mozilla::HalfCorner",
"mozilla::StyleFloatEdge",
"mozilla::StyleShapeRadius",
"mozilla::StyleWindowDragging",
"mozilla::StyleAnimationPlayState",
"mozilla::StyleOrient",
"mozilla::StyleBoxSizing",
"mozilla::StyleClear",
"mozilla::StyleColumnFill",
"mozilla::StyleColumnSpan",
"mozilla::StyleComplexColor_Tag",
"mozilla::StyleFloat",
"mozilla::StyleImageOrientation",
"mozilla::StyleUserModify",
"mozilla::StyleUserInput",
"mozilla::StyleBoxDirection",
"mozilla::StyleTextJustify",
"mozilla::StyleHyphens",
"mozilla::StyleShapeSourceType",
"mozilla::StyleBasicShapeType",
"nsStyleImageLayers_Size_DimensionType",
"mozilla::StyleStackSizing",
"mozilla::StyleBorderImageRepeat",
"mozilla::StyleBoxPack",
"mozilla::StyleBoxOrient",
"mozilla::StyleBoxAlign",
"mozilla::StyleUserFocus",
"mozilla::StyleUserSelect",
"mozilla::StyleImageLayerRepeat",
"mozilla::StyleImageLayerAttachment",
"mozilla::StyleBoxDecorationBreak",
"mozilla::StyleRuleInclusion",
"mozilla::StyleGridTrackBreadth",
"mozilla::StyleOverscrollBehavior",
"mozilla::StyleScrollbarWidth",
"mozilla::StyleWhiteSpace",
"nsStyleImageType",
"nsStyleSVGPaintType",
"nsStyleSVGFallbackType",
"nsINode_BooleanFlag",
"mozilla::CSSPseudoElementType",
"mozilla::LookAndFeel_ColorID",
"mozilla::LookAndFeel_FontID",
"nsStyleTransformMatrix::MatrixTransformOperator",
"mozilla::StyleGeometryBox",
"mozilla::SystemColor",
]
whitelist-vars = [
"NS_AUTHOR_SPECIFIED_.*",
"NS_THEME_.*",
"NS_ATTRVALUE_.*",
"NODE_.*",
"ELEMENT_.*",
"NS_FONT_.*",
"NS_STYLE_.*",
"NS_MATHML_.*",
"NS_RADIUS_.*",
"BORDER_COLOR_.*",
"BORDER_STYLE_.*",
"CSS_PSEUDO_ELEMENT_.*",
"SERVO_CSS_PSEUDO_ELEMENT_FLAGS_.*",
"kNameSpaceID_.*",
"kGenericFont_.*",
"kPresContext_.*",
"nsContentUtils_.*",
"GECKO_IS_NIGHTLY",
]
whitelist-types = [
"RawGecko.*",
"RawServoAnimationValueMap", # TODO(heycam): Handle this elsewhere.
"mozilla::DeclarationBlockMutationClosure",
"mozilla::AnimationPropertySegment",
"mozilla::AnonymousCounterStyle",
"mozilla::AtomArray",
"mozilla::ComputedTiming",
"mozilla::ComputedTimingFunction",
"mozilla::ComputedTimingFunction::BeforeFlag",
"mozilla::SeenPtrs",
"mozilla::ServoElementSnapshot.*",
"mozilla::ComputedStyle",
"mozilla::StyleSheet",
"mozilla::ServoStyleSheetInner",
"mozilla::ServoStyleSetSizes",
"mozilla::ServoTraversalStatistics",
"mozilla::css::LoaderReusableStyleSheets",
"mozilla::css::SheetLoadData",
"mozilla::css::SheetLoadDataHolder",
"mozilla::css::SheetParsingMode",
"mozilla::css::DocumentMatchingFunction",
"mozilla::dom::IterationCompositeOperation",
"mozilla::dom::StyleChildrenIterator",
"mozilla::HalfCorner",
"mozilla::MallocSizeOf",
"mozilla::OriginFlags",
"mozilla::PropertyStyleAnimationValuePair",
"mozilla::ServoTraversalFlags",
"mozilla::StaticPrefs",
"mozilla::StyleShapeRadius",
"mozilla::StyleGrid.*",
"mozilla::UpdateAnimationsTasks",
"mozilla::PointerCapabilities",
"mozilla::LookAndFeel",
"mozilla::gfx::Float",
"mozilla::gfx::FontVariation",
"mozilla::StyleImageLayerAttachment",
"gfxFontFeature",
"gfxFontVariation",
".*ThreadSafe.*Holder",
"AnonymousContent",
"AudioContext",
"CapturingContentInfo",
"DefaultDelete",
"DOMIntersectionObserverEntry",
"Element",
"FontFamilyList",
"FontFamilyName",
"mozilla::FontSizePrefs",
"FragmentOrURL",
"FrameRequestCallback",
"GeckoParserExtraData",
"GeckoFontMetrics",
"gfxAlternateValue",
"gfxFontFeatureValueSet",
"GridNamedArea",
"mozilla::HalfCorner",
"Image",
"ImageURL",
"Keyframe",
"mozilla::MediumFeaturesChangedResult",
"nsAttrName",
"nsAttrValue",
"nscolor",
"nsChangeHint",
"nsCSSCounterDesc",
"nsCSSFontDesc",
"nsCSSKTableEntry",
"nsCSSKeyword",
"nsCSSKeywordAndBoolTableEntry",
"nsCSSPropertyID",
"nsCSSPropertyIDSet",
"nsCSSProps",
"nsCSSShadowArray",
"nsCSSValue",
"nsCSSValueList",
"nsCSSValueList_heap",
"nsCSSValuePair_heap",
"nsCSSValuePairList",
"nsCSSValuePairList_heap",
"nsCSSValueTriplet_heap",
"nsCursorImage",
"nsFont",
"nsAtom",
"nsDynamicAtom",
"nsMargin",
"nsMediaFeature",
"nsMediaFeatures",
"nsRect",
"nsRestyleHint",
"nsresult",
"nsSimpleContentList",
"nsSize",
"nsStyleBackground",
"nsStyleBorder",
"nsStyleColor",
"nsStyleColumn",
"nsStyleContent",
"nsStyleContentData",
"ComputedStyle",
"nsStyleCoord",
"nsStyleCounterData",
"nsStyleDisplay",
"nsStyleEffects",
"nsStyleFilter",
"nsStyleFont",
"nsStyleGradient",
"nsStyleGradientStop",
"nsStyleGridTemplate",
"nsStyleImage",
"nsStyleImageLayers",
"nsStyleList",
"nsStyleMargin",
"nsStyleOutline",
"nsStylePadding",
"nsStylePosition",
"nsStyleSides",
"nsStyleSVG",
"nsStyleSVGOpacitySource",
"nsStyleSVGPaint",
"nsStyleSVGReset",
"nsStyleTable",
"nsStyleTableBorder",
"nsStyleText",
"nsStyleTextReset",
"nsStyleUIReset",
"nsStyleUnion",
"nsStyleUnit",
"nsStyleUI",
"nsStyleVisibility",
"nsStyleXUL",
"nsTArrayHeader",
"Position",
"PropertyValuePair",
"Runnable",
"ServoAttrSnapshot",
"ServoComputedData",
"ServoComputedDataBorrowed",
"ServoElementSnapshot",
"ComputedStyleStrong",
"ComputedStyleBorrowed",
"ComputedStyleBorrowedOrNull",
"SheetParsingMode",
"StaticRefPtr",
"StyleAnimation",
"StyleBasicShapeType",
"StyleGeometryBox",
"StyleShapeSource",
"StyleTransition",
"ThemeWidgetType",
"mozilla::UniquePtr",
"mozilla::DeclarationBlock",
"mozilla::DefaultDelete",
"mozilla::Side",
"mozilla::binding_danger::AssertAndSuppressCleanupPolicy",
"mozilla::ParsingMode",
"mozilla::InheritTarget",
"mozilla::dom::MediaList",
"mozilla::StyleRuleInclusion",
"nsStyleTransformMatrix::MatrixTransformOperator",
]
opaque-types = [
"std::pair__PCCP",
"std::namespace::atomic___base", "std::atomic__My_base",
"std::atomic",
"std::atomic___base",
# We want everything but FontVariation and Float to be opaque but we don't
# have negative regexes.
"mozilla::gfx::(.{0,4}|.{6,12}|.{14,}|([^F][^o][^n][^t][^V][^a][^r][^i][^a][^t][^i][^o][^n])|([^F][^l][^o][^a][^t]))",
"mozilla::dom::Sequence",
"mozilla::SmallPointerArray",
"mozilla::dom::Optional",
"mozilla::dom::OwningNodeOrString_Value",
"mozilla::dom::Nullable",
"mozilla::external::AtomicRefCounted",
"RefPtr_Proxy",
"RefPtr_Proxy_member_function",
"nsAutoPtr_Proxy",
"nsAutoPtr_Proxy_member_function",
"mozilla::detail::PointerType",
"mozilla::Pair",
"mozilla::Pair_Base",
"mozilla::SeenPtrs",
"mozilla::SupportsWeakPtr",
"SupportsWeakPtr",
"mozilla::detail::WeakReference",
"mozilla::WeakPtr",
"nsWritingIterator_reference", "nsReadingIterator_reference",
"nsTObserverArray", # <- Inherits from nsAutoTObserverArray<T, 0>
"nsTHashtable", # <- Inheriting from inner typedefs that clang
# doesn't expose properly.
"nsBaseHashtable", "nsRefPtrHashtable", "nsDataHashtable", "nsClassHashtable", # <- Ditto
"nsInterfaceHashtable", # <- Ditto
"nsIDocument_SelectorCache", # <- Inherits from nsExpirationTracker<.., 4>
"nsIPresShell_ScrollAxis", # <- For some reason the alignment of this is 4
# for clang.
"nsPIDOMWindow", # <- Takes the vtable from a template parameter, and we can't
# generate it conditionally.
"JS::Rooted",
"mozilla::Maybe",
"gfxSize", # <- union { struct { T width; T height; }; T components[2] };
"gfxSize_Super", # Ditto.
"mozilla::StyleAnimationValue",
"StyleAnimationValue", # pulls in a whole bunch of stuff we don't need in the bindings
"mozilla::dom::.*Callback", # Pulls in ErrorResult and other things that
# don't align properly on Linux 32-bit
"mozilla::SchedulerGroup", # Non-standard-layout packing of field into superclass
]
# All cbindgen-types are in mod "structs::root::mozilla".
cbindgen-types = [
{ gecko = "StyleAppearance", servo = "values::specified::Appearance" },
{ gecko = "StyleComputedFontStretchRange", servo = "font_face::ComputedFontStretchRange" },
{ gecko = "StyleComputedFontStyleDescriptor", servo = "font_face::ComputedFontStyleDescriptor" },
{ gecko = "StyleComputedFontWeightRange", servo = "font_face::ComputedFontWeightRange" },
{ gecko = "StyleComputedTimingFunction", servo = "values::computed::easing::TimingFunction" },
{ gecko = "StyleDisplay", servo = "values::specified::Display" },
{ gecko = "StyleDisplayMode", servo = "gecko::media_features::DisplayMode" },
{ gecko = "StyleFillRule", servo = "values::generics::basic_shape::FillRule" },
{ gecko = "StyleFontDisplay", servo = "font_face::FontDisplay" },
{ gecko = "StyleFontFaceSourceListComponent", servo = "font_face::FontFaceSourceListComponent" },
{ gecko = "StyleFontLanguageOverride", servo = "values::computed::font::FontLanguageOverride" },
{ gecko = "StylePathCommand", servo = "values::specified::svg_path::PathCommand" },
{ gecko = "StyleUnicodeRange", servo = "cssparser::UnicodeRange" },
]
mapped-generic-types = [
{ generic = true, gecko = "mozilla::RustCell", servo = "::std::cell::Cell" },
{ generic = false, gecko = "ServoNodeData", servo = "AtomicRefCell<ElementData>" },
{ generic = false, gecko = "mozilla::ServoWritingMode", servo = "::logical_geometry::WritingMode" },
{ generic = false, gecko = "mozilla::ServoCustomPropertiesMap", servo = "Option<::servo_arc::Arc<::custom_properties::CustomPropertiesMap>>" },
{ generic = false, gecko = "mozilla::ServoRuleNode", servo = "Option<::rule_tree::StrongRuleNode>" },
{ generic = false, gecko = "mozilla::ServoVisitedStyle", servo = "Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>" },
{ generic = false, gecko = "mozilla::ServoComputedValueFlags", servo = "::properties::computed_value_flags::ComputedValueFlags" },
{ generic = true, gecko = "mozilla::ServoRawOffsetArc", servo = "::servo_arc::RawOffsetArc" },
{ generic = false, gecko = "ComputedStyleStrong", servo = "::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>" },
]
fixups = [
{ pat = "\\broot\\s*::\\s*nsString\\b", rep = "::nsstring::nsStringRepr" },
{ pat = "\\broot\\s*::\\s*nsTString\\s*<\\s*u16\\s*>", rep = "::nsstring::nsStringRepr" },
]
[bindings]
headers = [
"mozilla/GeckoBindings.h",
# We include ServoBindings.h so we can type check the C function declarations
# in there against the function definitions in servo/ports/gecko/glue.rs.
"mozilla/ServoBindings.h",
]
hide-types = [
"nsACString_internal",
"nsAString_internal",
"ComputedStyleBorrowed",
"ComputedStyleBorrowedOrNull",
]
raw-lines = [
"pub use nsstring::{nsACString, nsAString, nsCString, nsString, nsStringRepr};",
"use gecko_bindings::structs::nsStyleTransformMatrix;",
"use gecko_bindings::structs::nsTArray;",
"type nsACString_internal = nsACString;",
"type nsAString_internal = nsAString;",
"pub type ComputedStyleBorrowed<'a> = &'a ::properties::ComputedValues;",
"pub type ComputedStyleBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;",
"pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;",
"pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();"
]
whitelist-functions = ["Servo_.*", "Gecko_.*"]
structs-types = [
"mozilla::css::GridTemplateAreasValue",
"mozilla::css::URLValue",
"mozilla::dom::CallerType",
"mozilla::dom::ShadowRoot",
"mozilla::AnonymousCounterStyle",
"mozilla::AtomArray",
"mozilla::CORSMode",
"mozilla::FontStretch",
"mozilla::FontSlantStyle",
"mozilla::FontWeight",
"mozilla::MallocSizeOf",
"mozilla::OriginFlags",
"mozilla::StyleMotion",
"mozilla::UniquePtr",
"mozilla::StyleDisplayMode",
"mozilla::StyleComputedFontStretchRange",
"mozilla::StyleComputedFontStyleDescriptor",
"mozilla::StyleComputedFontWeightRange",
"mozilla::StyleFontDisplay",
"mozilla::StyleUnicodeRange",
"mozilla::StyleFontLanguageOverride",
"mozilla::StyleFontFaceSourceListComponent",
"gfxFontFeature",
"mozilla::gfx::FontVariation",
"mozilla::DeclarationBlockMutationClosure",
"nsAttrValue",
"nsIContent",
"nsINode",
"nsIDocument",
"nsIDocument_DocumentTheme",
"nsSimpleContentList",
"mozilla::MediumFeaturesChangedResult",
"RawGeckoAnimationPropertySegment",
"RawGeckoComputedTiming",
"RawGeckoCSSPropertyIDList",
"RawGeckoDocument",
"RawGeckoElement",
"Element",
"RawGeckoKeyframeList",
"RawGeckoPropertyValuePairList",
"RawGeckoComputedKeyframeValuesList",
"RawGeckoFontFaceRuleList",
"RawGeckoNode",
"RawServoAnimationValue",
"RawServoFontFaceRule",
"RawGeckoServoAnimationValueList",
"RawServoMediaList",
"RawServoStyleSheetContents",
"RawServoDeclarationBlock",
"RawServoStyleRule",
"RawGeckoPresContext",
"RawGeckoStyleAnimationList",
"RawGeckoStyleChildrenIterator",
"RawGeckoServoStyleRuleList",
"RawGeckoURLExtraData",
"RawGeckoXBLBinding",
"RawServoSelectorList",
"RawServoSourceSizeList",
"RefPtr",
"StyleUseCounters",
"CSSPseudoElementType",
"ServoTraversalFlags",
"ComputedTimingFunction_BeforeFlag",
"CounterStylePtr",
"FontFamilyType",
"mozilla::FontSizePrefs",
"GeckoFontMetrics",
"IterationCompositeOperation",
"Keyframe",
"PropertyValuePair",
"SeenPtrs",
"ServoElementSnapshot",
"ServoElementSnapshotTable",
"ServoStyleSetSizes",
"SheetParsingMode",
"StyleBasicShapeType",
"StyleShapeSource",
"StyleTransition",
"gfxFontFeatureValueSet",
"nsCSSCounterDesc",
"nsCSSFontDesc",
"nsCSSKeyword",
"nsCSSPropertyID",
"nsCSSPropertyIDSet",
"nsCSSShadowArray",
"nsCSSUnit",
"nsCSSValue",
"nsCSSValueSharedList",
"nsChangeHint",
"nsCursorImage",
"nsFont",
"nsAtom",
"nsIURI",
"nsCompatibility",
"nsRestyleHint",
"nsStyleBackground",
"nsStyleBorder",
"nsStyleColor",
"nsStyleColumn",
"nsStyleContent",
"nsStyleContentData",
"nsStyleContentData_CounterFunction",
"mozilla::StyleContentType",
"ComputedStyle",
"nsStyleCoord",
"nsStyleCoord_Calc",
"nsStyleCoord_CalcValue",
"nsStyleDisplay",
"nsStyleEffects",
"nsStyleFilter",
"nsStyleFont",
"nsStyleGradient",
"nsStyleGradientStop",
"nsStyleGridTemplate",
"nsStyleImage",
"nsStyleImageLayers",
"nsStyleImageLayers_Layer",
"nsStyleImageLayers_LayerType",
"nsStyleImageRequest",
"nsStyleList",
"nsStyleMargin",
"nsStyleOutline",
"nsStylePadding",
"nsStylePosition",
"nsStyleQuoteValues",
"nsStyleSVG",
"nsStyleSVGOpacitySource",
"nsStyleSVGPaint",
"nsStyleSVGReset",
"nsStyleSides",
"nsStyleTable",
"nsStyleTableBorder",
"nsStyleText",
"nsStyleTextReset",
"nsStyleUIReset",
"nsStyleUnion",
"nsStyleUnit",
"nsStyleUI",
"nsStyleVisibility",
"nsStyleXUL",
"nsTimingFunction",
"nscolor",
"nscoord",
"nsresult",
"Loader",
"LoaderReusableStyleSheets",
"SheetLoadData",
"SheetLoadDataHolder",
"StyleSheet",
"ServoComputedData",
"ComputedStyleStrong",
"EffectCompositor_CascadeLevel",
"UpdateAnimationsTasks",
"PointerCapabilities",
"ParsingMode",
"InheritTarget",
"DocumentMatchingFunction",
"StyleAnimation",
"StyleRuleInclusion",
"nsStyleTransformMatrix::MatrixTransformOperator",
"RawGeckoGfxMatrix4x4",
"FontFamilyName",
"mozilla::SharedFontList",
"RawServoAnimationValueMap",
"RawServoCssUrlData",
]
array-types = [
{ cpp-type = "uintptr_t", rust-type = "usize" },
]
servo-immutable-borrow-types = [
"RawServoDeclarationBlockStrong",
]
servo-borrow-types = [
"RawServoAnimationValueMap", # FIXME(heycam): Try to get rid of this.
]
fixups = [
# Remap the templated string type to the helper type
{ pat = "\\bnsTString\\s*<\\s*u16\\s*>", rep = "nsString" },
# hack for gecko-owned string
{ pat = "<\\s*nsString\\s*", rep = "<nsStringRepr" },
]