[build] args = [ "-x", "c++", "-std=c++14", "-DTRACING=1", "-DIMPL_LIBXUL", "-DMOZ_STYLO_BINDINGS=1", "-DMOZILLA_INTERNAL_API", "-DRUST_BINDGEN", "-DMOZ_STYLO" ] "family=unix" = ["-DOS_POSIX=1"] "os=solaris" = ["-DOS_SOLARIS=1"] "os=dragonfly" = ["-DOS_BSD=1", "-DOS_DRAGONFLY=1"] "os=freebsd" = ["-DOS_BSD=1", "-DOS_FREEBSD=1"] "os=netbsd" = ["-DOS_BSD=1", "-DOS_NETBSD=1"] "os=openbsd" = ["-DOS_BSD=1", "-DOS_OPENBSD=1"] "os=macos" = [ "-DOS_MACOSX=1", "-stdlib=libc++", # To disable the fixup bindgen applies which adds search # paths from clang command line in order to avoid potential # conflict with -stdlib=libc++. "--target=x86_64-apple-darwin", ] [build."os=linux"] args = ["-DOS_LINUX=1"] "arch=x86" = ["-m32"] "arch=x86_64" = ["-m64"] [build."os=windows"."env=msvc"] args = [ "-DOS_WIN=1", "-DWIN32=1", # For compatibility with MSVC 2015 "-fms-compatibility-version=19", # To enable the builtin __builtin_offsetof so that CRT wouldn't # use reinterpret_cast in offsetof() which is not allowed inside # static_assert(). "-D_CRT_USE_BUILTIN_OFFSETOF", # Enable hidden attribute (which is not supported by MSVC and # thus not enabled by default with a MSVC-compatibile build) # to exclude hidden symbols from the generated file. "-DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1", ] "arch=x86" = ["--target=i686-pc-win32"] "arch=x86_64" = ["--target=x86_64-pc-win32"] [structs] headers = [ "nsStyleStruct.h", "mozilla/ServoPropPrefList.h", "mozilla/StyleAnimationValue.h", "gfxFontConstants.h", "nsThemeConstants.h", "mozilla/css/Loader.h", "mozilla/dom/AnimationEffectReadOnlyBinding.h", "mozilla/dom/KeyframeEffectBinding.h", "mozilla/AnimationPropertySegment.h", "mozilla/ComputedTiming.h", "mozilla/ComputedTimingFunction.h", "mozilla/Keyframe.h", "mozilla/ServoElementSnapshot.h", "mozilla/ServoElementSnapshotTable.h", "mozilla/dom/Element.h", "mozilla/dom/NameSpaceConstants.h", "mozilla/LookAndFeel.h", "mozilla/ServoBindings.h", "nsCSSCounterStyleRule.h", "nsCSSFontFaceRule.h", "nsMediaFeatures.h", "nsMediaList.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", ] bitfield-enums = [ "nsChangeHint", "nsRestyleHint", ] constified-enums = [ "UpdateAnimationsTasks", "ParsingMode", "ThemeWidgetType", ] constified-enum-variants = [ { enum = "nsCSSPropertyID", variants = ["eCSSProperty_COUNT.*"] }, ] whitelist-vars = [ "NS_AUTHOR_SPECIFIED_.*", "NS_THEME_.*", "NODE_.*", "ELEMENT_.*", "NS_FONT_.*", "NS_STYLE_.*", "NS_MATHML_.*", "NS_RADIUS_.*", "BORDER_COLOR_.*", "BORDER_STYLE_.*", "mozilla::SERVO_PREF_.*", "CSS_PSEUDO_ELEMENT_.*", "SERVO_CSS_PSEUDO_ELEMENT_FLAGS_.*", "kNameSpaceID_.*", "kGenericFont_.*", "kPresContext_.*", ] whitelist-types = [ "RawGecko.*", "mozilla::AnimationPropertySegment", "mozilla::ComputedTiming", "mozilla::ComputedTimingFunction", "mozilla::ComputedTimingFunction::BeforeFlag", "mozilla::ServoStyleSheet", "mozilla::ServoElementSnapshot.*", "mozilla::CSSPseudoClassType", "mozilla::css::SheetParsingMode", "mozilla::css::URLMatchingFunction", "mozilla::dom::IterationCompositeOperation", "mozilla::HalfCorner", "mozilla::PropertyStyleAnimationValuePair", "mozilla::TraversalRestyleBehavior", "mozilla::TraversalRootBehavior", "mozilla::StyleShapeRadius", "mozilla::StyleGrid.*", "mozilla::UpdateAnimationsTasks", "mozilla::LookAndFeel", "mozilla::gfx::Float", "mozilla::gfx::FontVariation", ".*ThreadSafe.*Holder", "AnonymousContent", "AudioContext", "CapturingContentInfo", "DefaultDelete", "DOMIntersectionObserverEntry", "Element", "FontFamilyList", "FontFamilyListRefCnt", "FontFamilyName", "FontFamilyType", "FontSizePrefs", "FragmentOrURL", "FrameRequestCallback", "GeckoParserExtraData", "GeckoFontMetrics", "gfxAlternateValue", "gfxFontFeature", "gfxFontVariation", "GridNamedArea", "HalfCorner", "Image", "ImageURL", "Keyframe", "nsAttrName", "nsAttrValue", "nsBorderColors", "nscolor", "nsChangeHint", "nsCSSCounterStyleRule", "nsCSSFontFaceRule", "nsCSSKeyword", "nsCSSPropertyID", "nsCSSPropertyIDSet", "nsCSSProps", "nsCSSRect", "nsCSSRect_heap", "nsCSSShadowArray", "nsCSSValue", "nsCSSValueFloatColor", "nsCSSValueGradient", "nsCSSValueGradientStop", "nsCSSValueList", "nsCSSValueList_heap", "nsCSSValuePair_heap", "nsCSSValuePairList", "nsCSSValuePairList_heap", "nsCSSValueTokenStream", "nsCSSValueTriplet_heap", "nsCursorImage", "nsFont", "nsIAtom", "nsMainThreadPtrHandle", "nsMainThreadPtrHolder", "nsMargin", "nsMediaExpression", "nsMediaFeature", "nsMediaFeatures", "nsMediaList", "nsRect", "nsRestyleHint", "nsresult", "nsSize", "nsStyleBackground", "nsStyleBorder", "nsStyleColor", "nsStyleColumn", "nsStyleContent", "nsStyleContentData", "nsStyleContext", "nsStyleCoord", "nsStyleCounterData", "nsStyleDisplay", "nsStyleEffects", "nsStyleFilter", "nsStyleFont", "nsStyleGradient", "nsStyleGradientStop", "nsStyleGridTemplate", "nsStyleImage", "nsStyleImageLayers", "nsStyleList", "nsStyleMargin", "nsStyleOutline", "nsStylePadding", "nsStylePosition", "nsStyleSVG", "nsStyleSVGPaint", "nsStyleSVGReset", "nsStyleTable", "nsStyleTableBorder", "nsStyleText", "nsStyleTextReset", "nsStyleUIReset", "nsStyleUnion", "nsStyleUnit", "nsStyleUserInterface", "nsStyleVariables", "nsStyleVisibility", "nsStyleXUL", "nsTArray", "nsTArrayHeader", "Position", "PropertyValuePair", "Runnable", "ServoAttrSnapshot", "ServoBundledURI", "ServoElementSnapshot", "SheetParsingMode", "StaticRefPtr", "StyleAnimation", "StyleBasicShape", "StyleBasicShapeType", "StyleGeometryBox", "StyleShapeSource", "StyleTransition", "ThemeWidgetType", "mozilla::UniquePtr", "mozilla::DefaultDelete", "mozilla::Side", "mozilla::binding_danger::AssertAndSuppressCleanupPolicy", "mozilla::ParsingMode", "mozilla::InheritTarget", "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]))", "FallibleTArray", "mozilla::dom::Sequence", "mozilla::dom::Optional", "mozilla::dom::Nullable", "RefPtr_Proxy", "RefPtr_Proxy_member_function", "nsAutoPtr_Proxy", "nsAutoPtr_Proxy_member_function", "mozilla::detail::PointerType", "mozilla::Pair_Base", "mozilla::SupportsWeakPtr", "SupportsWeakPtr", "mozilla::detail::WeakReference", "mozilla::WeakPtr", "nsWritingIterator_reference", "nsReadingIterator_reference", "nsTObserverArray", # <- Inherits from nsAutoTObserverArray "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::ErrorResult", # Causes JSWhyMagic to be included & handled incorrectly. "mozilla::StyleAnimationValue", "StyleAnimationValue", # pulls in a whole bunch of stuff we don't need in the bindings ] mapped-generic-types = [ { generic = true, gecko = "mozilla::ServoUnsafeCell", servo = "::std::cell::UnsafeCell" }, { generic = true, gecko = "mozilla::ServoCell", servo = "::std::cell::Cell" }, { generic = false, gecko = "ServoNodeData", servo = "AtomicRefCell" }, ] fixups = [ { pat = "root::nsString", rep = "::nsstring::nsStringRepr" }, ] [bindings] headers = ["mozilla/ServoBindings.h"] hide-types = [ "nsACString_internal", "nsAString_internal", ] raw-lines = [ "pub use nsstring::{nsACString, nsAString, nsString, nsStringRepr};", "use gecko_bindings::structs::nsStyleTransformMatrix;", "use gecko_bindings::structs::nsTArray;", "type nsACString_internal = nsACString;", "type nsAString_internal = nsAString;", ] whitelist-functions = ["Servo_.*", "Gecko_.*"] structs-types = [ "mozilla::css::GridTemplateAreasValue", "mozilla::css::ImageValue", "mozilla::css::URLValue", "mozilla::MallocSizeOf", "mozilla::Side", "nsIContent", "RawGeckoAnimationPropertySegment", "RawGeckoComputedTiming", "RawGeckoCSSPropertyIDList", "RawGeckoDocument", "RawGeckoElement", "RawGeckoKeyframeList", "RawGeckoComputedKeyframeValuesList", "RawGeckoFontFaceRuleList", "RawGeckoNode", "RawServoAnimationValue", "RawGeckoServoAnimationValueList", "RawServoDeclarationBlock", "RawServoStyleRule", "RawGeckoPresContext", "RawGeckoPresContextOwned", "RawGeckoStyleAnimationList", "RawGeckoServoStyleRuleList", "RawGeckoURLExtraData", "RawGeckoXBLBinding", "RefPtr", "CSSPseudoClassType", "CSSPseudoElementType", "TraversalRestyleBehavior", "TraversalRootBehavior", "ComputedTimingFunction_BeforeFlag", "CounterStylePtr", "FontFamilyList", "FontFamilyType", "FontSizePrefs", "GeckoFontMetrics", "IterationCompositeOperation", "Keyframe", "ServoBundledURI", "ServoElementSnapshot", "ServoElementSnapshotTable", "SheetParsingMode", "StyleBasicShape", "StyleBasicShapeType", "StyleShapeSource", "StyleTransition", "nsCSSCounterStyleRule", "nsCSSFontFaceRule", "nsCSSKeyword", "nsCSSPropertyID", "nsCSSPropertyIDSet", "nsCSSShadowArray", "nsCSSUnit", "nsCSSValue", "nsCSSValueSharedList", "nsChangeHint", "nsCursorImage", "nsFont", "nsIAtom", "nsCompatibility", "nsMediaFeature", "nsRestyleHint", "nsStyleBackground", "nsStyleBorder", "nsStyleColor", "nsStyleColumn", "nsStyleContent", "nsStyleContentData", "nsStyleContentData_CounterFunction", "nsStyleContentType", "nsStyleContext", "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", "nsStyleSVGPaint", "nsStyleSVGReset", "nsStyleTable", "nsStyleTableBorder", "nsStyleText", "nsStyleTextReset", "nsStyleUIReset", "nsStyleUnion", "nsStyleUnit", "nsStyleUserInterface", "nsStyleVariables", "nsStyleVisibility", "nsStyleXUL", "nsTimingFunction", "nscolor", "nscoord", "nsresult", "Loader", "LoaderReusableStyleSheets", "ServoStyleSheet", "EffectCompositor_CascadeLevel", "UpdateAnimationsTasks", "ParsingMode", "InheritTarget", "URLMatchingFunction", "StyleRuleInclusion", "nsStyleTransformMatrix::MatrixTransformOperator", "RawGeckoGfxMatrix4x4", ] array-types = [ { cpp-type = "uintptr_t", rust-type = "usize" }, ] servo-owned-types = [ { name = "RawServoStyleSet", opaque = true }, { name = "StyleChildrenIterator", opaque = true }, { name = "ServoElementSnapshot", opaque = false }, { name = "RawServoAnimationValueMap", opaque = true }, ] servo-immutable-borrow-types = [ "RawGeckoNode", "RawGeckoElement", "RawGeckoDocument", "RawServoDeclarationBlockStrong", "RawGeckoPresContext", "RawGeckoStyleAnimationList", "RawGeckoXBLBinding", ] servo-borrow-types = [ "nsCSSPropertyIDSet", "nsCSSValue", "nsTimingFunction", "RawGeckoAnimationPropertySegment", "RawGeckoComputedTiming", "RawGeckoCSSPropertyIDList", "RawGeckoKeyframeList", "RawGeckoComputedKeyframeValuesList", "RawGeckoFontFaceRuleList", "RawGeckoServoStyleRuleList", "RawGeckoServoAnimationValueList", ] fixups = [ # hack for gecko-owned string { pat = "