diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-04 15:54:36 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-05 00:14:49 -0800 |
commit | 606ea019b7da5cda80129a8421d7db9287fd4a79 (patch) | |
tree | 26f8d4c79e6cc22c9efd83755ef07edd7caa5df4 | |
parent | 85f569bd67b5bb62f4d9eea7c328dfa7e89e87ea (diff) | |
download | servo-606ea019b7da5cda80129a8421d7db9287fd4a79.tar.gz servo-606ea019b7da5cda80129a8421d7db9287fd4a79.zip |
stylo: Use bindgen master again.
Stylo has been stuck with an old version of bindgen from quite a bit of time,
this commit does the minimal stuff to put it working again with master.
-rwxr-xr-x | components/style/binding_tools/regen.py | 72 | ||||
-rw-r--r-- | components/style/gecko/wrapper.rs | 2 | ||||
-rw-r--r-- | components/style/gecko_bindings/sugar/refptr.rs | 8 | ||||
-rw-r--r-- | ports/geckolib/glue.rs | 15 |
4 files changed, 46 insertions, 51 deletions
diff --git a/components/style/binding_tools/regen.py b/components/style/binding_tools/regen.py index e220c9cdeda..3fba49143d8 100755 --- a/components/style/binding_tools/regen.py +++ b/components/style/binding_tools/regen.py @@ -23,6 +23,7 @@ COMPILATION_TARGETS = { COMMON_BUILD_KEY: { "flags": [ "--no-unstable-rust", + "--disable-name-namespacing", ], "clang_flags": [ "-x", "c++", "-std=c++14", @@ -42,8 +43,7 @@ COMPILATION_TARGETS = { "structs": { "target_dir": "../gecko_bindings", "flags": [ - "--ignore-functions", - "--ignore-methods", + "--generate", "types,vars", ], "includes": [ "{}/dist/include/gfxFontConstants.h", @@ -51,6 +51,7 @@ COMPILATION_TARGETS = { "{}/dist/include/mozilla/dom/AnimationEffectReadOnlyBinding.h", "{}/dist/include/mozilla/ServoElementSnapshot.h", "{}/dist/include/mozilla/dom/Element.h", + "{}/dist/include/mozilla/ServoBindings.h", ], "files": [ "{}/dist/include/nsStyleStruct.h", @@ -70,7 +71,9 @@ COMPILATION_TARGETS = { "use data::ElementData;", "pub use nsstring::nsStringRepr as nsString;" ], - "blacklist_types": ["nsString"], + "blacklist_types": [ + "nsString", + ], "whitelist_vars": [ "NS_THEME_.*", "NODE_.*", @@ -82,6 +85,13 @@ COMPILATION_TARGETS = { "BORDER_STYLE_.*" ], "whitelist": [ + "RawGecko.*", + "mozilla_ServoElementSnapshot.*", + "mozilla_ConsumeStyleBehavior", + "mozilla_LazyComputeBehavior", + "mozilla_css_SheetParsingMode", + "mozilla_SkipRootBehavior", + ".*ThreadSafe.*Holder", "AnonymousContent", "AudioContext", "CapturingContentInfo", @@ -103,8 +113,8 @@ COMPILATION_TARGETS = { "nsAttrName", "nsAttrValue", "nsBorderColors", - "nsChangeHint", "nscolor", + "nsChangeHint", "nsCSSKeyword", "nsCSSPropertyID", "nsCSSRect", @@ -139,8 +149,6 @@ COMPILATION_TARGETS = { "nsStyleContentData", "nsStyleContext", "nsStyleCoord", - "nsStyleCoord", - "nsStyleCoord", "nsStyleCounterData", "nsStyleDisplay", "nsStyleEffects", @@ -150,8 +158,6 @@ COMPILATION_TARGETS = { "nsStyleGradientStop", "nsStyleImage", "nsStyleImageLayers", - "nsStyleImageLayers_Layer", - "nsStyleImageLayers_LayerType", "nsStyleList", "nsStyleMargin", "nsStyleOutline", @@ -178,11 +184,10 @@ COMPILATION_TARGETS = { "ServoAttrSnapshot", "ServoElementSnapshot", "SheetParsingMode", - "Side", + "mozilla_Side", "StaticRefPtr", "StyleAnimation", "StyleBasicShape", - "StyleBasicShape", "StyleBasicShapeType", "StyleClipPath", "StyleClipPathGeometryBox", @@ -196,13 +201,18 @@ COMPILATION_TARGETS = { "nsAString_internal_incompatible_char_type", "nsACString_internal_char_traits", "nsACString_internal_incompatible_char_type", - "RefPtr_Proxy", "nsAutoPtr_Proxy", "Pair_Base", - "RefPtr_Proxy_member_function", "nsAutoPtr_Proxy_member_function", + "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", - "Heap", "TenuredHeap", "Rooted", "WeakPtr", # <- More template magic than what - # we support. "nsTObserverArray", # <- Inherits from nsAutoTObserverArray<T, 0> - "PLArenaPool", # <- Bindgen bug "nsTHashtable", # <- Inheriting from inner typedefs that clang # doesn't expose properly. "nsRefPtrHashtable", "nsDataHashtable", "nsClassHashtable", # <- Ditto @@ -211,11 +221,9 @@ COMPILATION_TARGETS = { # for clang. "nsPIDOMWindow", # <- Takes the vtable from a template parameter, and we can't # generate it conditionally. - "SupportsWeakPtr", - "Maybe", # <- AlignedStorage, which means templated union, which - # means impossible to represent in stable rust as of - # right now. - "gfxSize", # <- Same, union { struct { T width; T height; }; T components[2] }; + "JS_Rooted", + "mozilla_Maybe", + "gfxSize", # <- union { struct { T width; T height; }; T components[2] }; "gfxSize_Super", # Ditto. ], "servo_mapped_generic_types": [ @@ -237,17 +245,13 @@ COMPILATION_TARGETS = { # Generation of the ffi bindings. "bindings": { "target_dir": "../gecko_bindings", - "blacklist_types": [ - "nsACString_internal", - "nsAString_internal", - ], "raw_lines": [ "pub use nsstring::{nsACString, nsAString};", "type nsACString_internal = nsACString;", "type nsAString_internal = nsAString;" ], "flags": [ - "--ignore-methods", + "--generate", "functions", ], "match_headers": [ "ServoBindingList.h", @@ -258,19 +262,16 @@ COMPILATION_TARGETS = { "files": [ "{}/dist/include/mozilla/ServoBindings.h", ], - "whitelist": [ + # Types to just use from the `structs` target. + "structs_types": [ "RawGeckoDocument", "RawGeckoElement", "RawGeckoNode", - "ThreadSafe.*Holder", + "ThreadSafeURIHolder", + "ThreadSafePrincipalHolder", "ConsumeStyleBehavior", "LazyComputeBehavior", "SkipRootBehavior", - ], - - # Types to just use from the `structs` target. - "structs_types": [ - "Element", "FontFamilyList", "FontFamilyType", "ServoElementSnapshot", @@ -286,11 +287,6 @@ COMPILATION_TARGETS = { "nsCursorImage", "nsFont", "nsIAtom", - "nsIDocument", - "nsINode", - "nsIPrincipal", - "nsIURI", - "nsMainThreadPtrHolder", "nsRestyleHint", "nsStyleBackground", "nsStyleBorder", @@ -614,7 +610,7 @@ Option<&'a mut {0}>;".format(ty)) if "servo_mapped_generic_types" in current_target: for ty in current_target["servo_mapped_generic_types"]: flags.append("--blacklist-type") - flags.append("{}".format(ty["gecko"])) + flags.append("mozilla_{}".format(ty["gecko"])) flags.append("--raw-line") flags.append("pub type {0}{2} = {1}{2};".format(ty["gecko"], ty["servo"], "<T>" if ty["generic"] else "")) diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 1bed9b13fde..5a8c462db9e 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -20,10 +20,10 @@ use gecko_bindings::bindings::{Gecko_GetServoDeclarationBlock, Gecko_IsHTMLEleme use gecko_bindings::bindings::{Gecko_IsLink, Gecko_IsRootElement}; use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink, Gecko_Namespace}; use gecko_bindings::bindings::{Gecko_SetNodeFlags, Gecko_UnsetNodeFlags}; -use gecko_bindings::bindings::{RawGeckoElement, RawGeckoNode}; use gecko_bindings::bindings::Gecko_ClassOrClassList; use gecko_bindings::bindings::Gecko_GetStyleContext; use gecko_bindings::structs; +use gecko_bindings::structs::{RawGeckoElement, RawGeckoNode}; use gecko_bindings::structs::{nsIAtom, nsIContent, nsStyleContext}; use gecko_bindings::structs::NODE_HAS_DIRTY_DESCENDANTS_FOR_SERVO; use gecko_bindings::structs::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE; diff --git a/components/style/gecko_bindings/sugar/refptr.rs b/components/style/gecko_bindings/sugar/refptr.rs index ac94bb4bbec..220bca116e1 100644 --- a/components/style/gecko_bindings/sugar/refptr.rs +++ b/components/style/gecko_bindings/sugar/refptr.rs @@ -232,10 +232,10 @@ macro_rules! impl_threadsafe_refcount { ); } -impl_threadsafe_refcount!(::gecko_bindings::bindings::ThreadSafePrincipalHolder, +impl_threadsafe_refcount!(::gecko_bindings::structs::ThreadSafePrincipalHolder, Gecko_AddRefPrincipalArbitraryThread, Gecko_ReleasePrincipalArbitraryThread); -impl_threadsafe_refcount!(::gecko_bindings::bindings::ThreadSafeURIHolder, +impl_threadsafe_refcount!(::gecko_bindings::structs::ThreadSafeURIHolder, Gecko_AddRefURIArbitraryThread, Gecko_ReleaseURIArbitraryThread); impl_threadsafe_refcount!(::gecko_bindings::structs::nsStyleQuoteValues, @@ -244,5 +244,5 @@ impl_threadsafe_refcount!(::gecko_bindings::structs::nsStyleQuoteValues, impl_threadsafe_refcount!(::gecko_bindings::structs::nsCSSValueSharedList, Gecko_AddRefCSSValueSharedListArbitraryThread, Gecko_ReleaseCSSValueSharedListArbitraryThread); -pub type GeckoArcPrincipal = RefPtr<::gecko_bindings::bindings::ThreadSafePrincipalHolder>; -pub type GeckoArcURI = RefPtr<::gecko_bindings::bindings::ThreadSafeURIHolder>; +pub type GeckoArcPrincipal = RefPtr<::gecko_bindings::structs::ThreadSafePrincipalHolder>; +pub type GeckoArcURI = RefPtr<::gecko_bindings::structs::ThreadSafeURIHolder>; diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 02d54692b19..36c309dcdd0 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -28,20 +28,19 @@ use style::gecko::selector_parser::{SelectorImpl, PseudoElement}; use style::gecko::traversal::RecalcStyleOnly; use style::gecko::wrapper::DUMMY_BASE_URL; use style::gecko::wrapper::GeckoElement; -use style::gecko_bindings::bindings; use style::gecko_bindings::bindings::{RawServoDeclarationBlockBorrowed, RawServoDeclarationBlockStrong}; use style::gecko_bindings::bindings::{RawServoStyleRuleBorrowed, RawServoStyleRuleStrong}; use style::gecko_bindings::bindings::{RawServoStyleSetBorrowed, RawServoStyleSetOwned}; use style::gecko_bindings::bindings::{RawServoStyleSheetBorrowed, ServoComputedValuesBorrowed}; use style::gecko_bindings::bindings::{RawServoStyleSheetStrong, ServoComputedValuesStrong}; use style::gecko_bindings::bindings::{ServoCssRulesBorrowed, ServoCssRulesStrong}; -use style::gecko_bindings::bindings::{ThreadSafePrincipalHolder, ThreadSafeURIHolder}; use style::gecko_bindings::bindings::{nsACString, nsAString}; use style::gecko_bindings::bindings::RawGeckoElementBorrowed; use style::gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull; use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t; use style::gecko_bindings::structs; use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom}; +use style::gecko_bindings::structs::{ThreadSafePrincipalHolder, ThreadSafeURIHolder}; use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint}; use style::gecko_bindings::structs::nsresult; use style::gecko_bindings::sugar::ownership::{FFIArcHelpers, HasArcFFI, HasBoxFFI}; @@ -160,10 +159,10 @@ fn traverse_subtree(element: GeckoElement, raw_data: RawServoStyleSetBorrowed, #[no_mangle] pub extern "C" fn Servo_TraverseSubtree(root: RawGeckoElementBorrowed, raw_data: RawServoStyleSetBorrowed, - skip_root: bindings::SkipRootBehavior) -> () { + skip_root: structs::SkipRootBehavior) -> () { let element = GeckoElement(root); debug!("Servo_TraverseSubtree: {:?}", element); - traverse_subtree(element, raw_data, skip_root == bindings::SkipRootBehavior::Skip); + traverse_subtree(element, raw_data, skip_root == structs::SkipRootBehavior::Skip); } #[no_mangle] @@ -812,13 +811,13 @@ pub extern "C" fn Servo_CheckChangeHint(element: RawGeckoElementBorrowed) -> nsC #[no_mangle] pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, raw_data: RawServoStyleSetBorrowed, - consume: bindings::ConsumeStyleBehavior, - compute: bindings::LazyComputeBehavior) -> ServoComputedValuesStrong + consume: structs::ConsumeStyleBehavior, + compute: structs::LazyComputeBehavior) -> ServoComputedValuesStrong { let element = GeckoElement(element); debug!("Servo_ResolveStyle: {:?}, consume={:?}, compute={:?}", element, consume, compute); - if compute == bindings::LazyComputeBehavior::Allow { + if compute == structs::LazyComputeBehavior::Allow { let should_compute = unsafe { element.ensure_data() }.borrow().get_current_styles().is_none(); if should_compute { debug!("Performing manual style computation"); @@ -856,7 +855,7 @@ pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, } }; - if consume == bindings::ConsumeStyleBehavior::Consume { + if consume == structs::ConsumeStyleBehavior::Consume { // FIXME(bholley): Once we start storing style data on frames, we'll want to // drop the data here instead. data.unwrap().persist(); |