aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2016-12-04 15:54:36 +0100
committerEmilio Cobos Álvarez <emilio@crisal.io>2016-12-05 00:14:49 -0800
commit606ea019b7da5cda80129a8421d7db9287fd4a79 (patch)
tree26f8d4c79e6cc22c9efd83755ef07edd7caa5df4
parent85f569bd67b5bb62f4d9eea7c328dfa7e89e87ea (diff)
downloadservo-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-xcomponents/style/binding_tools/regen.py72
-rw-r--r--components/style/gecko/wrapper.rs2
-rw-r--r--components/style/gecko_bindings/sugar/refptr.rs8
-rw-r--r--ports/geckolib/glue.rs15
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();