1[structs]
2headers = [
3    "nsStyleStruct.h",
4    "mozilla/StyleAnimationValue.h",
5    "gfxFontConstants.h",
6    "gfxFontFeatures.h",
7    "nsStyleConsts.h",
8    "mozilla/css/Loader.h",
9    "mozilla/css/SheetLoadData.h",
10    "mozilla/DeclarationBlock.h",
11    "mozilla/dom/AnimationEffectBinding.h",
12    "mozilla/dom/HTMLSlotElement.h",
13    "mozilla/dom/KeyframeEffectBinding.h",
14    "mozilla/dom/MediaList.h",
15    "mozilla/dom/ShadowRoot.h",
16    "mozilla/ipc/ByteBuf.h",
17    "mozilla/AnimationPropertySegment.h",
18    "mozilla/ComputedTiming.h",
19    "mozilla/ComputedTimingFunction.h",
20    "mozilla/CORSMode.h",
21    "mozilla/Keyframe.h",
22    "mozilla/ServoElementSnapshot.h",
23    "mozilla/ServoElementSnapshotTable.h",
24    "mozilla/dom/Element.h",
25    "mozilla/dom/ChildIterator.h",
26    "mozilla/dom/NameSpaceConstants.h",
27    "mozilla/LookAndFeel.h",
28    "mozilla/GeckoBindings.h",
29    "mozilla/ServoBindings.h",
30    "mozilla/ComputedStyle.h",
31    "mozilla/ServoTraversalStatistics.h",
32    "mozilla/SizeOfState.h",
33    "nsCSSProps.h",
34    "nsContentUtils.h",
35    "nsNameSpaceManager.h",
36    "nsMediaFeatures.h",
37    "GeckoProfiler.h",
38]
39raw-lines = [
40    # FIXME(emilio): Incrementally remove these "pub use"s. Probably
41    # mozilla::css and mozilla::dom are easier.
42    "pub use self::root::*;",
43    "pub use self::root::mozilla::*;",
44    "pub use self::root::mozilla::css::*;",
45    "pub use self::root::mozilla::dom::*;",
46    "use atomic_refcell::AtomicRefCell;",
47    "use data::ElementData;",
48]
49hide-types = [
50    ".*char_traits",
51    ".*incompatible_char_type",
52    # https://github.com/rust-lang/rust-bindgen/issues/1503
53    "mozilla::StyleTimingFunction.*",
54    # https://github.com/rust-lang/rust-bindgen/issues/1559
55    "mozilla::StyleGenericTransformOperation_.*",
56]
57bitfield-enums = [
58    "nsChangeHint",
59    "mozilla::OriginFlags",
60    "mozilla::StyleTextUnderlinePosition",
61]
62rusty-enums = [
63    "nsCompatibility",
64    "mozilla::EffectCompositor_CascadeLevel",
65    "mozilla::SheetType",
66    "mozilla::dom::CallerType",
67    "mozilla::dom::IterationCompositeOperation",
68    "mozilla::dom::CompositeOperation",
69    "mozilla::InheritTarget",
70    "mozilla::css::DocumentMatchingFunction",
71    "mozilla::css::SheetParsingMode",
72    "nsStyleSVGOpacitySource",
73    "mozilla::dom::Document_DocumentTheme",
74    "mozilla::dom::Document_Type",
75    "nsCSSUnit",
76    "nsCSSFontDesc",
77    "nsCSSPropertyID",
78    "nsCSSCounterDesc",
79    "nsMediaFeature_RangeType",
80    "nsMediaFeature_ValueType",
81    "nsresult",
82    "nsAtom_AtomKind",
83    "nsStyleImageLayers_LayerType",
84    "mozilla::ServoElementSnapshotFlags",
85    "mozilla::Side",
86    "mozilla::dom::PlaybackDirection",
87    "mozilla::dom::FillMode",
88    "mozilla::HalfCorner",
89    "mozilla::StyleFloatEdge",
90    "mozilla::StyleShapeRadius",
91    "mozilla::StyleWindowDragging",
92    "mozilla::StyleAnimationPlayState",
93    "mozilla::StyleOrient",
94    "mozilla::StyleBoxSizing",
95    "mozilla::StyleClear",
96    "mozilla::StyleColumnFill",
97    "mozilla::StyleColumnSpan",
98    "mozilla::StyleDirection",
99    "mozilla::StyleFloat",
100    "mozilla::StyleImageOrientation",
101    "mozilla::StyleImageRendering",
102    "mozilla::StyleUserModify",
103    "mozilla::StyleUserInput",
104    "mozilla::StyleBoxDirection",
105    "mozilla::StyleTextJustify",
106    "mozilla::StyleRubyAlign",
107    "mozilla::StyleTextSizeAdjust",
108    "mozilla::StyleHyphens",
109    "mozilla::StyleRubyPosition",
110    "mozilla::StyleShapeSourceType",
111    "mozilla::StyleVisibility",
112    "mozilla::StyleBasicShapeType",
113    "nsStyleImageLayers_Size_DimensionType",
114    "mozilla::StyleBorderCollapse",
115    "mozilla::StyleBorderImageRepeat",
116    "mozilla::StyleBoxPack",
117    "mozilla::StyleWindowShadow",
118    "mozilla::StyleDominantBaseline",
119    "mozilla::StyleBoxOrient",
120    "mozilla::StyleBoxAlign",
121    "mozilla::StyleUserFocus",
122    "mozilla::StyleUserSelect",
123    "mozilla::StyleImageLayerRepeat",
124    "mozilla::StyleImageLayerAttachment",
125    "mozilla::StylePositionProperty",
126    "mozilla::StyleBoxDecorationBreak",
127    "mozilla::StyleBorderStyle",
128    "mozilla::StyleRuleInclusion",
129    "mozilla::StyleGridTrackBreadth",
130    "mozilla::StyleOverscrollBehavior",
131    "mozilla::StyleImeMode",
132    "mozilla::StyleOverflowAnchor",
133    "mozilla::StylePointerEvents",
134    "mozilla::StyleScrollbarWidth",
135    "mozilla::StyleWhiteSpace",
136    "mozilla::StyleTextRendering",
137    "mozilla::StyleColorAdjust",
138    "mozilla::StyleFlexDirection",
139    "mozilla::StyleStrokeLinecap",
140    "mozilla::StyleStrokeLinejoin",
141    "mozilla::StyleFlexWrap",
142    "mozilla::StyleTextDecorationSkipInk",
143    "mozilla::StyleTextDecorationLength",
144    "mozilla::StyleMaskType",
145    "mozilla::StyleShapeRendering",
146    "mozilla::StyleTextAnchor",
147    "mozilla::StyleObjectFit",
148    "mozilla::StyleTopLayer",
149    "mozilla::StyleIsolation",
150    "mozilla::StyleTextOrientation",
151    "mozilla::StyleTableLayout",
152    "mozilla::StyleEmptyCells",
153    "nsStyleImageType",
154    "nsINode_BooleanFlag",
155    "mozilla::PseudoStyleType",
156    "mozilla::LookAndFeel_ColorID",
157    "mozilla::LookAndFeel_FontID",
158    "nsStyleTransformMatrix::MatrixTransformOperator",
159    "mozilla::StyleGeometryBox",
160    "mozilla::SystemColor",
161    "mozilla::StyleMaskMode",
162    "mozilla::StyleScrollBehavior",
163    "mozilla::StyleColorInterpolation",
164    "mozilla::StyleVectorEffect",
165    "mozilla::StyleBackfaceVisibility",
166    "mozilla::StyleBlend",
167    "mozilla::StyleMaskComposite",
168    "mozilla::StyleControlCharacterVisibility",
169    "mozilla::StyleFontSize",
170]
171whitelist-vars = [
172    "NS_ATTRVALUE_.*",
173    "NODE_.*",
174    "ELEMENT_.*",
175    "NS_FONT_.*",
176    "NS_STYLE_.*",
177    "NS_MATHML_.*",
178    "NS_RADIUS_.*",
179    "BORDER_COLOR_.*",
180    "BORDER_STYLE_.*",
181    "CSS_PSEUDO_ELEMENT_.*",
182    "SERVO_CSS_PSEUDO_ELEMENT_FLAGS_.*",
183    "kNameSpaceID_.*",
184    "kGenericFont_.*",
185    "kPresContext_.*",
186    "nsContentUtils_.*",
187    "GECKO_IS_NIGHTLY",
188    "mozilla::detail::gGkAtoms",
189    "mozilla::detail::kGkAtomsArrayOffset",
190    "mozilla::profiler::detail::RacyFeatures::sActiveAndFeatures",
191]
192# TODO(emilio): A bunch of types here can go away once we generate bindings and
193# structs together.
194whitelist-types = [
195    "RawGecko.*",
196    "RawServo.*",
197    "ServoCssRules",
198    "nsFontFaceRuleContainer",
199    "Matrix4x4Components",
200    "mozilla::ComputedKeyframeValues",
201    "mozilla::Keyframe",
202    "mozilla::PropertyValuePair",
203    "mozilla::DeclarationBlockMutationClosure",
204    "mozilla::AnimationPropertySegment",
205    "mozilla::AnonymousCounterStyle",
206    "mozilla::AtomArray",
207    "mozilla::ComputedTiming",
208    "mozilla::ComputedTimingFunction",
209    "mozilla::ComputedTimingFunction::BeforeFlag",
210    "mozilla::Matrix4x4Components",
211    "mozilla::PreferenceSheet",
212    "mozilla::SeenPtrs",
213    "mozilla::ServoElementSnapshot.*",
214    "mozilla::ComputedStyle",
215    "mozilla::StyleSheet",
216    "mozilla::ServoStyleSheetInner",
217    "mozilla::ServoStyleSetSizes",
218    "mozilla::ServoTraversalStatistics",
219    "mozilla::css::LoaderReusableStyleSheets",
220    "mozilla::css::SheetLoadData",
221    "mozilla::css::SheetLoadDataHolder",
222    "mozilla::css::SheetParsingMode",
223    "mozilla::css::DocumentMatchingFunction",
224    "mozilla::dom::IterationCompositeOperation",
225    "mozilla::dom::StyleChildrenIterator",
226    "mozilla::HalfCorner",
227    "mozilla::ipc::ByteBuf",
228    "mozilla::MallocSizeOf",
229    "mozilla::OriginFlags",
230    "mozilla::PropertyStyleAnimationValuePair",
231    "mozilla::ServoTraversalFlags",
232    "mozilla::StyleShapeRadius",
233    "mozilla::StyleGrid.*",
234    "mozilla::UpdateAnimationsTasks",
235    "mozilla::PointerCapabilities",
236    "mozilla::LookAndFeel",
237    "mozilla::gfx::Float",
238    "mozilla::gfx::FontVariation",
239    "mozilla::StyleImageLayerAttachment",
240    "gfxFontFeature",
241    "gfxFontVariation",
242    ".*ThreadSafe.*Holder",
243    "AnonymousContent",
244    "AudioContext",
245    "DefaultDelete",
246    "DOMIntersectionObserverEntry",
247    "Element",
248    "FontFamilyList",
249    "FontFamilyName",
250    "mozilla::FontSizePrefs",
251    "FragmentOrURL",
252    "FrameRequestCallback",
253    "GeckoParserExtraData",
254    "GeckoFontMetrics",
255    "gfxFontFeatureValueSet",
256    "GridNamedArea",
257    "mozilla::HalfCorner",
258    "Image",
259    "ImageURL",
260    "Keyframe",
261    "mozilla::MediumFeaturesChangedResult",
262    "nsAttrName",
263    "nsAttrValue",
264    "nscolor",
265    "nsChangeHint",
266    "nsCSSCounterDesc",
267    "nsCSSFontDesc",
268    "nsCSSKTableEntry",
269    "nsCSSPropertyID",
270    "nsCSSPropertyIDSet",
271    "nsCSSProps",
272    "nsCSSShadowArray",
273    "nsCSSValue",
274    "nsCSSValueList",
275    "nsCSSValueList_heap",
276    "nsCSSValuePair_heap",
277    "nsCSSValuePairList",
278    "nsCSSValuePairList_heap",
279    "nsCSSValueTriplet_heap",
280    "nsCursorImage",
281    "nsFont",
282    "nsAtom",
283    "nsDynamicAtom",
284    "nsMargin",
285    "nsMediaFeature",
286    "nsMediaFeatures",
287    "nsRect",
288    "nsresult",
289    "nsSimpleContentList",
290    "nsSize",
291    "nsStyleBackground",
292    "nsStyleBorder",
293    "nsStyleColor",
294    "nsStyleColumn",
295    "nsStyleContent",
296    "nsStyleContentData",
297    "ComputedStyle",
298    "nsStyleCounterData",
299    "nsStyleDisplay",
300    "nsStyleEffects",
301    "nsStyleFilter",
302    "nsStyleFont",
303    "nsStyleGradient",
304    "nsStyleGridTemplate",
305    "nsStyleImage",
306    "nsStyleImageLayers",
307    "nsStyleList",
308    "nsStyleMargin",
309    "nsStyleOutline",
310    "nsStylePadding",
311    "nsStylePosition",
312    "nsStyleSides",
313    "nsStyleSVG",
314    "nsStyleSVGOpacitySource",
315    "nsStyleSVGReset",
316    "nsStyleTable",
317    "nsStyleTableBorder",
318    "nsStyleText",
319    "nsStyleTextReset",
320    "nsStyleUIReset",
321    "nsStyleUnion",
322    "nsStyleUI",
323    "nsStyleVisibility",
324    "nsStyleXUL",
325    "nsTArrayHeader",
326    "Position",
327    "PropertyValuePair",
328    "Runnable",
329    "ServoAttrSnapshot",
330    "ServoComputedData",
331    "ServoComputedDataBorrowed",
332    "ServoElementSnapshot",
333    "ComputedStyleStrong",
334    "ComputedStyleBorrowed",
335    "ComputedStyleBorrowedOrNull",
336    "SheetParsingMode",
337    "StaticRefPtr",
338    "StyleAnimation",
339    "StyleBasicShapeType",
340    "StyleGeometryBox",
341    "StyleShapeSource",
342    "StyleTransition",
343    "ThemeWidgetType",
344    "mozilla::UniquePtr",
345    "mozilla::DeclarationBlock",
346    "mozilla::DefaultDelete",
347    "mozilla::Side",
348    "mozilla::binding_danger::AssertAndSuppressCleanupPolicy",
349    "mozilla::ParsingMode",
350    "mozilla::InheritTarget",
351    "mozilla::dom::MediaList",
352    "mozilla::StyleRuleInclusion",
353    "nsStyleTransformMatrix::MatrixTransformOperator",
354    "mozilla::profiler::detail::RacyFeatures",
355]
356opaque-types = [
357    "mozilla::StyleThinArc", # https://github.com/rust-lang/rust-bindgen/issues/1557
358    "std::pair__PCCP",
359    "std::namespace::atomic___base", "std::atomic__My_base",
360    "std::atomic",
361    "std::atomic___base",
362    # We want everything but FontVariation and Float to be opaque but we don't
363    # have negative regexes.
364    "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]))",
365    "mozilla::dom::Sequence",
366    "mozilla::SmallPointerArray",
367    "mozilla::dom::Optional",
368    "mozilla::dom::OwningNodeOrString_Value",
369    "mozilla::dom::Nullable",
370    "mozilla::external::AtomicRefCounted",
371    "RefPtr_Proxy",
372    "RefPtr_Proxy_member_function",
373    "nsAutoPtr_Proxy",
374    "nsAutoPtr_Proxy_member_function",
375    "mozilla::detail::HashTable", # <- We should be able to remove this and
376                                  # HashSet below once
377                                  # https://github.com/rust-lang/rust-bindgen/pull/1515
378                                  # is available
379    "mozilla::detail::PointerType",
380    "mozilla::HashSet",
381    "mozilla::Pair",
382    "mozilla::Pair_Base",
383    "mozilla::ScrollAxis",  # <- For some reason the alignment of this is 4
384                            # for clang.
385    "mozilla::SeenPtrs",
386    "mozilla::SupportsWeakPtr",
387    "mozilla::Tuple",
388    "SupportsWeakPtr",
389    "mozilla::detail::WeakReference",
390    "mozilla::WeakPtr",
391    "nsWritingIterator_reference", "nsReadingIterator_reference",
392    "nsTObserverArray",  # <- Inherits from nsAutoTObserverArray<T, 0>
393    "nsTHashtable",  # <- Inheriting from inner typedefs that clang
394                     #    doesn't expose properly.
395    "nsBaseHashtable", "nsRefPtrHashtable", "nsDataHashtable", "nsClassHashtable",  # <- Ditto
396    "nsInterfaceHashtable",  # <- Ditto
397    "mozilla::dom::Document_SelectorCache",  # <- Inherits from nsExpirationTracker<.., 4>
398    "nsPIDOMWindow",  # <- Takes the vtable from a template parameter, and we can't
399                      #    generate it conditionally.
400    "JS::Rooted",
401    "mozilla::Maybe",
402    "gfxSize",  # <- union { struct { T width; T height; }; T components[2] };
403    "gfxSize_Super",  # Ditto.
404    "mozilla::StyleAnimationValue",
405    "StyleAnimationValue", # pulls in a whole bunch of stuff we don't need in the bindings
406    "mozilla::dom::.*Callback", # Pulls in ErrorResult and other things that
407                                # don't align properly on Linux 32-bit
408    "mozilla::SchedulerGroup", # Non-standard-layout packing of field into superclass
409    "mozilla::detail::GkAtoms", # https://bugzilla.mozilla.org/show_bug.cgi?id=1517685
410    "mozilla::detail::ThreadLocal.*",
411]
412
413# All cbindgen-types are in mod "structs::root::mozilla".
414# FIXME(emilio): We probably want to automate this somehow...
415cbindgen-types = [
416    { gecko = "StyleAppearance", servo = "values::specified::Appearance" },
417    { gecko = "StyleAspectRatio", servo = "values::computed::position::AspectRatio" },
418    { gecko = "StyleComputedFontStretchRange", servo = "font_face::ComputedFontStretchRange" },
419    { gecko = "StyleComputedFontStyleDescriptor", servo = "font_face::ComputedFontStyleDescriptor" },
420    { gecko = "StyleComputedFontWeightRange", servo = "font_face::ComputedFontWeightRange" },
421    { gecko = "StyleComputedTimingFunction", servo = "values::computed::easing::TimingFunction" },
422    { gecko = "StyleCursorKind", servo = "values::computed::ui::CursorKind" },
423    { gecko = "StyleDisplay", servo = "values::specified::Display" },
424    { gecko = "StyleDisplayMode", servo = "gecko::media_features::DisplayMode" },
425    { gecko = "StylePrefersColorScheme", servo = "gecko::media_features::PrefersColorScheme" },
426    { gecko = "StyleExtremumLength", servo = "values::computed::length::ExtremumLength" },
427    { gecko = "StyleFillRule", servo = "values::generics::basic_shape::FillRule" },
428    { gecko = "StyleFontDisplay", servo = "font_face::FontDisplay" },
429    { gecko = "StyleFontFaceSourceListComponent", servo = "font_face::FontFaceSourceListComponent" },
430    { gecko = "StyleFontLanguageOverride", servo = "values::computed::font::FontLanguageOverride" },
431    { gecko = "StyleOffsetPath", servo = "values::computed::motion::OffsetPath" },
432    { gecko = "StyleGenericOffsetPath", servo = "values::generics::motion::OffsetPath" },
433    { gecko = "StyleOffsetRotate", servo = "values::computed::motion::OffsetRotate" },
434    { gecko = "StylePathCommand", servo = "values::specified::svg_path::PathCommand" },
435    { gecko = "StyleRayFunction", servo = "values::generics::motion::RayFunction" },
436    { gecko = "StyleUnicodeRange", servo = "cssparser::UnicodeRange" },
437    { gecko = "StyleOverflowWrap", servo = "values::computed::OverflowWrap" },
438    { gecko = "StyleWordBreak", servo = "values::computed::WordBreak" },
439    { gecko = "StyleLineBreak", servo = "values::computed::LineBreak" },
440    { gecko = "StyleUserSelect", servo = "values::computed::UserSelect" },
441    { gecko = "StyleBreakBetween", servo = "values::computed::BreakBetween" },
442    { gecko = "StyleBreakWithin", servo = "values::computed::BreakWithin" },
443    { gecko = "StyleBorderStyle", servo = "values::computed::BorderStyle" },
444    { gecko = "StyleOutlineStyle", servo = "values::computed::OutlineStyle" },
445    { gecko = "StyleScrollSnapAlign", servo = "values::computed::ScrollSnapAlign" },
446    { gecko = "StyleScrollSnapStrictness", servo = "values::computed::ScrollSnapStrictness" },
447    { gecko = "StyleScrollSnapType", servo = "values::computed::ScrollSnapType" },
448    { gecko = "StyleResize", servo = "values::computed::Resize" },
449    { gecko = "StyleOverflowClipBox", servo = "values::computed::OverflowClipBox" },
450    { gecko = "StyleFloat", servo = "values::computed::Float" },
451    { gecko = "StyleOverscrollBehavior", servo = "values::computed::OverscrollBehavior" },
452    { gecko = "StyleTextAlign", servo = "values::computed::TextAlign" },
453    { gecko = "StyleTextAlignLast", servo = "values::computed::text::TextAlignLast" },
454    { gecko = "StyleTextOverflow", servo = "values::computed::TextOverflow" },
455    { gecko = "StyleOverflow", servo = "values::computed::Overflow" },
456    { gecko = "StyleOverflowAnchor", servo = "values::computed::OverflowAnchor" },
457    { gecko = "StyleTextDecorationSkipInk", servo = "values::computed::TextDecorationSkipInk" },
458    { gecko = "StyleTextDecorationLength", servo = "values::computed::TextDecorationLength" },
459    { gecko = "StyleLength", servo = "values::computed::CSSPixelLength" },
460    { gecko = "StyleLengthPercentage", servo = "values::computed::LengthPercentage" },
461    { gecko = "StyleNonNegativeLengthPercentage", servo = "values::computed::NonNegativeLengthPercentage" },
462    { gecko = "StyleGenericLengthPercentageOrAuto", servo = "values::generics::length::LengthPercentageOrAuto" },
463    { gecko = "StyleGenericLengthPercentageOrNormal", servo = "values::generics::length::LengthPercentageOrNormal" },
464    { gecko = "StyleLengthPercentageOrAuto", servo = "values::computed::LengthPercentageOrAuto" },
465    { gecko = "StyleNonNegativeLengthPercentageOrAuto", servo = "values::computed::NonNegativeLengthPercentageOrAuto" },
466    { gecko = "StyleRect", servo = "values::generics::rect::Rect" },
467    { gecko = "StyleIntersectionObserverRootMargin", servo = "values::specified::gecko::IntersectionObserverRootMargin" },
468    { gecko = "StyleGenericSize", servo = "values::generics::length::Size" },
469    { gecko = "StyleGenericMaxSize", servo = "values::generics::length::MaxSize" },
470    { gecko = "StyleGenericFlexBasis", servo = "values::generics::flex::FlexBasis" },
471    { gecko = "StyleSize", servo = "values::computed::Size" },
472    { gecko = "StyleMaxSize", servo = "values::computed::MaxSize" },
473    { gecko = "StyleFlexBasis", servo = "values::computed::FlexBasis" },
474    { gecko = "StylePosition", servo = "values::computed::Position" },
475    { gecko = "StylePositionOrAuto", servo = "values::computed::PositionOrAuto" },
476    { gecko = "StyleGenericPositionOrAuto", servo = "values::generics::position::PositionOrAuto" },
477    { gecko = "StyleBackgroundSize", servo = "values::computed::BackgroundSize" },
478    { gecko = "StyleGenericBackgroundSize", servo = "values::generics::background::BackgroundSize" },
479    { gecko = "StyleBorderImageSlice", servo = "values::computed::BorderImageSlice" },
480    { gecko = "StyleGenericLengthOrNumber", servo = "values::generics::length::LengthOrNumber" },
481    { gecko = "StyleCSSPixelLength", servo = "values::computed::length::CSSPixelLength" },
482    { gecko = "StyleNonNegativeLength", servo = "values::computed::NonNegativeLength" },
483    { gecko = "StyleNonNegativeNumber", servo = "values::computed::NonNegativeNumber" },
484    { gecko = "StyleZeroToOneNumber", servo = "values::computed::ZeroToOneNumber" },
485    { gecko = "StylePercentage", servo = "values::computed::Percentage" },
486    { gecko = "StylePerspective", servo = "values::computed::Perspective" },
487    { gecko = "StyleGenericPerspective", servo = "values::generics::box_::Perspective" },
488    { gecko = "StyleZIndex", servo = "values::computed::ZIndex" },
489    { gecko = "StyleGenericZIndex", servo = "values::generics::position::ZIndex" },
490    { gecko = "StyleTransformOrigin", servo = "values::computed::TransformOrigin" },
491    { gecko = "StyleTransformStyle", servo = "values::computed::TransformStyle" },
492    { gecko = "StyleGenericBorderRadius", servo = "values::generics::border::BorderRadius" },
493    { gecko = "StyleLetterSpacing", servo = "values::computed::text::LetterSpacing" },
494    { gecko = "StyleGenericLineHeight", servo = "values::generics::text::LineHeight" },
495    { gecko = "StyleContain", servo = "values::computed::Contain" },
496    { gecko = "StyleRestyleHint", servo = "invalidation::element::restyle_hints::RestyleHint" },
497    { gecko = "StyleTouchAction", servo = "values::computed::TouchAction" },
498    { gecko = "StyleWillChange", servo = "values::specified::box_::WillChange" },
499    { gecko = "StyleTextDecorationLine", servo = "values::computed::TextDecorationLine" },
500    { gecko = "StyleTextTransform", servo = "values::computed::TextTransform" },
501    { gecko = "StyleTextUnderlinePosition", servo = "values::computed::TextUnderlinePosition" },
502    { gecko = "StyleMozListReversed", servo = "values::computed::MozListReversed" },
503    { gecko = "StyleOwned", servo = "gecko_bindings::sugar::ownership::Owned" },
504    { gecko = "StyleOwnedOrNull", servo = "gecko_bindings::sugar::ownership::OwnedOrNull" },
505    { gecko = "StyleStrong", servo = "gecko_bindings::sugar::ownership::Strong" },
506    { gecko = "StyleGenericFontFamily", servo = "values::computed::font::GenericFontFamily" },
507    { gecko = "StyleFontFamilyNameSyntax", servo = "values::computed::font::FontFamilyNameSyntax" },
508    { gecko = "StyleGenericColor", servo = "values::generics::color::Color" },
509    { gecko = "StyleSystemColor", servo = "values::specified::color::SystemColor" },
510    { gecko = "StyleGenericColorOrAuto", servo = "values::generics::color::ColorOrAuto" },
511    { gecko = "StyleGenericScrollbarColor", servo = "values::generics::ui::ScrollbarColor" },
512    { gecko = "StyleRGBA", servo = "cssparser::RGBA" },
513    { gecko = "StyleOrigin", servo = "stylesheets::Origin" },
514    { gecko = "StyleGenericVerticalAlign", servo = "values::generics::box_::VerticalAlign" },
515    { gecko = "StyleVerticalAlignKeyword", servo = "values::generics::box_::VerticalAlignKeyword" },
516    { gecko = "StyleGenericBasicShape", servo = "values::generics::basic_shape::BasicShape" },
517    { gecko = "StyleArcSlice", servo = "style_traits::arc_slice::ArcSlice" },
518    { gecko = "StyleForgottenArcSlicePtr", servo = "style_traits::arc_slice::ForgottenArcSlicePtr" },
519    { gecko = "StyleOwnedSlice", servo = "style_traits::owned_slice::OwnedSlice" },
520    { gecko = "StyleMozContextProperties", servo = "values::specified::svg::MozContextProperties" },
521    { gecko = "StyleQuotes", servo = "values::specified::list::Quotes" },
522    { gecko = "StyleOwnedStr", servo = "style_traits::owned_str::OwnedStr" },
523    { gecko = "StyleGenericBoxShadow", servo = "values::generics::effects::BoxShadow" },
524    { gecko = "StyleGenericSimpleShadow", servo = "values::generics::effects::SimpleShadow" },
525    { gecko = "StyleGenericTransformOperation", servo = "values::generics::transform::TransformOperation" },
526    { gecko = "StyleGenericTransform", servo = "values::generics::transform::Transform" },
527    { gecko = "StyleGenericScale", servo = "values::generics::transform::Scale" },
528    { gecko = "StyleGenericRotate", servo = "values::generics::transform::Rotate" },
529    { gecko = "StyleGenericTranslate", servo = "values::generics::transform::Translate" },
530    { gecko = "StyleAngle", servo = "values::computed::Angle" },
531    { gecko = "StyleGenericBorderImageSideWidth", servo = "values::generics::border::BorderImageSideWidth" },
532    { gecko = "StyleGenericUrlOrNone", servo = "values::generics::url::UrlOrNone" },
533    { gecko = "StyleCssUrl", servo = "gecko::url::CssUrl" },
534    { gecko = "StyleSpecifiedUrl", servo = "gecko::url::SpecifiedUrl" },
535    { gecko = "StyleSpecifiedImageUrl", servo = "gecko::url::SpecifiedImageUrl" },
536    { gecko = "StyleComputedUrl", servo = "gecko::url::ComputedUrl" },
537    { gecko = "StyleComputedImageUrl", servo = "gecko::url::ComputedImageUrl" },
538    { gecko = "StyleLoadData", servo = "gecko::url::LoadData" },
539    { gecko = "StyleGenericFilter", servo = "values::generics::effects::Filter" },
540    { gecko = "StyleGenericGradient", servo = "values::generics::image::Gradient" },
541    { gecko = "StyleLineDirection", servo = "values::computed::image::LineDirection" },
542    { gecko = "StyleGridTemplateAreas", servo = "values::computed::position::GridTemplateAreas" },
543    { gecko = "StyleGenericGridLine", servo = "values::generics::grid::GridLine" },
544    { gecko = "StyleGenericTrackSize", servo = "values::generics::grid::TrackSize" },
545    { gecko = "StyleGenericTrackBreadth", servo = "values::generics::grid::TrackBreadth" },
546    { gecko = "StyleGenericImplicitGridTracks", servo = "values::generics::grid::ImplicitGridTracks" },
547    { gecko = "StyleImplicitGridTracks", servo = "values::computed::ImplicitGridTracks" },
548    { gecko = "StyleNumberOrPercentage", servo = "values::computed::NumberOrPercentage" },
549    { gecko = "StyleGenericSVGPaint", servo = "values::generics::svg::SVGPaint" },
550    { gecko = "StyleGenericTrackRepeat", servo = "values::generics::grid::TrackRepeat" },
551    { gecko = "StyleGenericTrackListValue", servo = "values::generics::grid::TrackListValue" },
552    { gecko = "StyleGenericTrackList", servo = "values::generics::grid::TrackList" },
553    { gecko = "StyleGenericGridTemplateComponent", servo = "values::generics::grid::GridTemplateComponent" },
554    { gecko = "StyleTextEmphasisStyle", servo = "values::computed::text::TextEmphasisStyle" },
555    { gecko = "StyleVariantAlternatesList", servo = "values::specified::font::VariantAlternatesList" },
556    { gecko = "StyleSVGPaintOrder", servo = "values::specified::svg::SVGPaintOrder" },
557    { gecko = "StyleClipRectOrAuto", servo = "values::computed::ClipRectOrAuto" },
558    { gecko = "StyleCounterSetOrReset", servo = "values::computed::CounterSetOrReset" },
559    { gecko = "StyleCounterIncrement", servo = "values::computed::CounterIncrement" },
560    { gecko = "StyleContent", servo = "values::computed::counters::Content" },
561    { gecko = "StyleSymbolsType", servo = "values::generics::SymbolsType" },
562    { gecko = "StyleCounterStyle", servo = "values::generics::CounterStyle" },
563    { gecko = "StyleComputedJustifyItems", servo = "values::computed::align::ComputedJustifyItems" },
564    { gecko = "StyleAlignItems", servo = "values::computed::AlignItems" },
565    { gecko = "StyleJustifySelf", servo = "values::computed::JustifySelf" },
566    { gecko = "StyleAlignSelf", servo = "values::computed::AlignSelf" },
567    { gecko = "StyleAlignContent", servo = "values::computed::align::AlignContent" },
568    { gecko = "StyleJustifyTracks", servo = "values::computed::align::JustifyTracks" },
569    { gecko = "StyleAlignTracks", servo = "values::computed::align::AlignTracks" },
570    { gecko = "StyleJustifyContent", servo = "values::computed::align::JustifyContent" },
571    { gecko = "StyleComputedValueFlags", servo = "computed_value_flags::ComputedValueFlags" },
572    { gecko = "StyleImage", servo = "values::computed::Image" },
573    { gecko = "StyleShapeOutside", servo = "values::computed::basic_shape::ShapeOutside" },
574    { gecko = "StyleClipPath", servo = "values::computed::basic_shape::ClipPath" },
575    { gecko = "StyleGridAutoFlow", servo = "values::computed::GridAutoFlow" },
576    { gecko = "StyleCursor", servo = "values::computed::Cursor" },
577    { gecko = "StyleSVGStrokeDashArray", servo = "values::computed::svg::SVGStrokeDashArray" },
578    { gecko = "StyleSVGWidth", servo = "values::computed::svg::SVGWidth" },
579    { gecko = "StyleSVGOpacity", servo = "values::computed::svg::SVGOpacity" },
580    { gecko = "StyleSVGLength", servo = "values::computed::svg::SVGLength" },
581]
582
583mapped-generic-types = [
584    { generic = true, gecko = "mozilla::RustCell", servo = "::std::cell::Cell" },
585    { generic = false, gecko = "ServoNodeData", servo = "AtomicRefCell<ElementData>" },
586    { generic = false, gecko = "mozilla::ServoWritingMode", servo = "::logical_geometry::WritingMode" },
587    { generic = false, gecko = "mozilla::ServoCustomPropertiesMap", servo = "Option<::servo_arc::Arc<::custom_properties::CustomPropertiesMap>>" },
588    { generic = false, gecko = "mozilla::ServoRuleNode", servo = "Option<::rule_tree::StrongRuleNode>" },
589    { generic = false, gecko = "mozilla::ServoVisitedStyle", servo = "Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>" },
590    { generic = true, gecko = "mozilla::ServoRawOffsetArc", servo = "::servo_arc::RawOffsetArc" },
591    { generic = true, gecko = "mozilla::ServoManuallyDrop", servo = "::std::mem::ManuallyDrop" },
592    { generic = false, gecko = "nsACString", servo = "nsstring::nsACString" },
593    { generic = false, gecko = "nsAString", servo = "nsstring::nsAString" },
594    { generic = false, gecko = "nsCString", servo = "nsstring::nsCString" },
595    { generic = false, gecko = "nsString", servo = "nsstring::nsString" },
596]
597
598whitelist-functions = ["Servo_.*", "Gecko_.*"]
599