summaryrefslogtreecommitdiffstats
path: root/third_party/rust/core-foundation-sys/src
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/core-foundation-sys/src')
-rw-r--r--third_party/rust/core-foundation-sys/src/array.rs55
-rw-r--r--third_party/rust/core-foundation-sys/src/attributed_string.rs55
-rw-r--r--third_party/rust/core-foundation-sys/src/base.rs157
-rw-r--r--third_party/rust/core-foundation-sys/src/bundle.rs39
-rw-r--r--third_party/rust/core-foundation-sys/src/characterset.rs58
-rw-r--r--third_party/rust/core-foundation-sys/src/data.rs38
-rw-r--r--third_party/rust/core-foundation-sys/src/date.rs34
-rw-r--r--third_party/rust/core-foundation-sys/src/dictionary.rs91
-rw-r--r--third_party/rust/core-foundation-sys/src/error.rs32
-rw-r--r--third_party/rust/core-foundation-sys/src/filedescriptor.rs58
-rw-r--r--third_party/rust/core-foundation-sys/src/lib.rs32
-rw-r--r--third_party/rust/core-foundation-sys/src/mach_port.rs20
-rw-r--r--third_party/rust/core-foundation-sys/src/messageport.rs79
-rw-r--r--third_party/rust/core-foundation-sys/src/number.rs84
-rw-r--r--third_party/rust/core-foundation-sys/src/propertylist.rs46
-rw-r--r--third_party/rust/core-foundation-sys/src/runloop.rs164
-rw-r--r--third_party/rust/core-foundation-sys/src/set.rs66
-rw-r--r--third_party/rust/core-foundation-sys/src/string.rs323
-rw-r--r--third_party/rust/core-foundation-sys/src/timezone.rs29
-rw-r--r--third_party/rust/core-foundation-sys/src/url.rs169
-rw-r--r--third_party/rust/core-foundation-sys/src/uuid.rs49
21 files changed, 1678 insertions, 0 deletions
diff --git a/third_party/rust/core-foundation-sys/src/array.rs b/third_party/rust/core-foundation-sys/src/array.rs
new file mode 100644
index 0000000000..5090302fc2
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/array.rs
@@ -0,0 +1,55 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFRange, CFIndex, CFAllocatorRef, CFTypeID, Boolean};
+use string::CFStringRef;
+
+pub type CFArrayRetainCallBack = extern "C" fn(allocator: CFAllocatorRef, value: *const c_void) -> *const c_void;
+pub type CFArrayReleaseCallBack = extern "C" fn(allocator: CFAllocatorRef, value: *const c_void);
+pub type CFArrayCopyDescriptionCallBack = extern "C" fn(value: *const c_void) -> CFStringRef;
+pub type CFArrayEqualCallBack = extern "C" fn(value1: *const c_void, value2: *const c_void) -> Boolean;
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFArrayCallBacks {
+ pub version: CFIndex,
+ pub retain: CFArrayRetainCallBack,
+ pub release: CFArrayReleaseCallBack,
+ pub copyDescription: CFArrayCopyDescriptionCallBack,
+ pub equal: CFArrayEqualCallBack,
+}
+
+#[repr(C)]
+pub struct __CFArray(c_void);
+
+pub type CFArrayRef = *const __CFArray;
+
+extern {
+ /*
+ * CFArray.h
+ */
+ pub static kCFTypeArrayCallBacks: CFArrayCallBacks;
+
+ pub fn CFArrayCreate(allocator: CFAllocatorRef, values: *const *const c_void,
+ numValues: CFIndex, callBacks: *const CFArrayCallBacks) -> CFArrayRef;
+ pub fn CFArrayCreateCopy(allocator: CFAllocatorRef , theArray: CFArrayRef) -> CFArrayRef;
+
+ // CFArrayBSearchValues
+ // CFArrayContainsValue
+ pub fn CFArrayGetCount(theArray: CFArrayRef) -> CFIndex;
+ // CFArrayGetCountOfValue
+ // CFArrayGetFirstIndexOfValue
+ // CFArrayGetLastIndexOfValue
+ pub fn CFArrayGetValues(theArray: CFArrayRef, range: CFRange, values: *mut *const c_void);
+ pub fn CFArrayGetValueAtIndex(theArray: CFArrayRef, idx: CFIndex) -> *const c_void;
+ // CFArrayApplyFunction
+ pub fn CFArrayGetTypeID() -> CFTypeID;
+}
diff --git a/third_party/rust/core-foundation-sys/src/attributed_string.rs b/third_party/rust/core-foundation-sys/src/attributed_string.rs
new file mode 100644
index 0000000000..c91bf5be38
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/attributed_string.rs
@@ -0,0 +1,55 @@
+// Copyright 2013 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+use base::{CFAllocatorRef, CFTypeRef, CFIndex, CFRange, CFTypeID};
+use string::CFStringRef;
+use dictionary::CFDictionaryRef;
+
+#[repr(C)]
+pub struct __CFAttributedString(c_void);
+
+pub type CFAttributedStringRef = *const __CFAttributedString;
+pub type CFMutableAttributedStringRef = *const __CFAttributedString;
+
+extern {
+ /* CFAttributedString */
+
+ pub fn CFAttributedStringCreate(
+ allocator: CFAllocatorRef,
+ str: CFStringRef,
+ attributes: CFDictionaryRef,
+ ) -> CFAttributedStringRef;
+
+ pub fn CFAttributedStringGetLength(astr: CFAttributedStringRef) -> CFIndex;
+
+ pub fn CFAttributedStringGetTypeID() -> CFTypeID;
+
+ /* CFMutableAttributedString */
+
+ pub fn CFAttributedStringCreateMutableCopy(
+ allocator: CFAllocatorRef, max_length: CFIndex, astr: CFAttributedStringRef
+ ) -> CFMutableAttributedStringRef;
+
+ pub fn CFAttributedStringCreateMutable(
+ allocator: CFAllocatorRef,
+ max_length: CFIndex,
+ ) -> CFMutableAttributedStringRef;
+
+ pub fn CFAttributedStringReplaceString(
+ astr: CFMutableAttributedStringRef, range: CFRange, replacement: CFStringRef);
+
+ pub fn CFAttributedStringSetAttribute(
+ astr: CFMutableAttributedStringRef,
+ range: CFRange,
+ attr_name: CFStringRef,
+ value: CFTypeRef,
+ );
+
+}
diff --git a/third_party/rust/core-foundation-sys/src/base.rs b/third_party/rust/core-foundation-sys/src/base.rs
new file mode 100644
index 0000000000..52a166fdf6
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/base.rs
@@ -0,0 +1,157 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::cmp::Ordering;
+use std::os::raw::{c_uint, c_void, c_int};
+use string::CFStringRef;
+
+pub type Boolean = u8;
+pub type mach_port_t = c_uint;
+pub type CFAllocatorRef = *const c_void;
+pub type CFNullRef = *const c_void;
+pub type CFTypeRef = *const c_void;
+pub type OSStatus = i32;
+pub type SInt32 = c_int;
+pub type CFTypeID = usize;
+pub type CFOptionFlags = usize;
+pub type CFHashCode = usize;
+pub type CFIndex = isize;
+
+#[repr(isize)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum CFComparisonResult {
+ LessThan = -1,
+ EqualTo = 0,
+ GreaterThan = 1,
+}
+
+impl Into<Ordering> for CFComparisonResult {
+ fn into(self) -> Ordering {
+ match self {
+ CFComparisonResult::LessThan => Ordering::Less,
+ CFComparisonResult::EqualTo => Ordering::Equal,
+ CFComparisonResult::GreaterThan => Ordering::Greater
+ }
+ }
+}
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFRange {
+ pub location: CFIndex,
+ pub length: CFIndex
+}
+
+// for back-compat
+impl CFRange {
+ pub fn init(location: CFIndex, length: CFIndex) -> CFRange {
+ CFRange {
+ location: location,
+ length: length,
+ }
+ }
+}
+
+pub type CFAllocatorRetainCallBack = extern "C" fn(info: *mut c_void) -> *mut c_void;
+pub type CFAllocatorReleaseCallBack = extern "C" fn(info: *mut c_void);
+pub type CFAllocatorCopyDescriptionCallBack = extern "C" fn(info: *mut c_void) -> CFStringRef;
+pub type CFAllocatorAllocateCallBack = extern "C" fn(allocSize: CFIndex, hint: CFOptionFlags, info: *mut c_void) -> *mut c_void;
+pub type CFAllocatorReallocateCallBack = extern "C" fn(ptr: *mut c_void, newsize: CFIndex, hint: CFOptionFlags, info: *mut c_void) -> *mut c_void;
+pub type CFAllocatorDeallocateCallBack = extern "C" fn(ptr: *mut c_void, info: *mut c_void);
+pub type CFAllocatorPreferredSizeCallBack = extern "C" fn(size: CFIndex, hint: CFOptionFlags, info: *mut c_void) -> CFIndex;
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFAllocatorContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<CFAllocatorRetainCallBack>,
+ pub release: Option<CFAllocatorReleaseCallBack>,
+ pub copyDescription: Option<CFAllocatorCopyDescriptionCallBack>,
+ pub allocate: Option<CFAllocatorAllocateCallBack>,
+ pub reallocate: Option<CFAllocatorReallocateCallBack>,
+ pub deallocate: Option<CFAllocatorDeallocateCallBack>,
+ pub preferredSize: Option<CFAllocatorPreferredSizeCallBack>
+}
+
+/// Trait for all types which are Core Foundation reference types.
+pub trait TCFTypeRef {
+ fn as_void_ptr(&self) -> *const c_void;
+
+ unsafe fn from_void_ptr(ptr: *const c_void) -> Self;
+}
+
+impl<T> TCFTypeRef for *const T {
+ fn as_void_ptr(&self) -> *const c_void {
+ (*self) as *const c_void
+ }
+
+ unsafe fn from_void_ptr(ptr: *const c_void) -> Self {
+ ptr as *const T
+ }
+}
+
+impl<T> TCFTypeRef for *mut T {
+ fn as_void_ptr(&self) -> *const c_void {
+ (*self) as *const T as *const c_void
+ }
+
+ unsafe fn from_void_ptr(ptr: *const c_void) -> Self {
+ ptr as *const T as *mut T
+ }
+}
+
+/// Constant used by some functions to indicate failed searches.
+pub static kCFNotFound: CFIndex = -1;
+
+extern {
+ /*
+ * CFBase.h
+ */
+
+ /* CFAllocator Reference */
+
+ pub static kCFAllocatorDefault: CFAllocatorRef;
+ pub static kCFAllocatorSystemDefault: CFAllocatorRef;
+ pub static kCFAllocatorMalloc: CFAllocatorRef;
+ pub static kCFAllocatorMallocZone: CFAllocatorRef;
+ pub static kCFAllocatorNull: CFAllocatorRef;
+ pub static kCFAllocatorUseContext: CFAllocatorRef;
+
+ pub fn CFAllocatorCreate(allocator: CFAllocatorRef, context: *mut CFAllocatorContext) -> CFAllocatorRef;
+ pub fn CFAllocatorAllocate(allocator: CFAllocatorRef, size: CFIndex, hint: CFOptionFlags) -> *mut c_void;
+ pub fn CFAllocatorDeallocate(allocator: CFAllocatorRef, ptr: *mut c_void);
+ pub fn CFAllocatorGetPreferredSizeForSize(allocator: CFAllocatorRef, size: CFIndex, hint: CFOptionFlags) -> CFIndex;
+ pub fn CFAllocatorReallocate(allocator: CFAllocatorRef, ptr: *mut c_void, newsize: CFIndex, hint: CFOptionFlags) -> *mut c_void;
+ pub fn CFAllocatorGetDefault() -> CFAllocatorRef;
+ pub fn CFAllocatorSetDefault(allocator: CFAllocatorRef);
+ pub fn CFAllocatorGetContext(allocator: CFAllocatorRef, context: *mut CFAllocatorContext);
+ pub fn CFAllocatorGetTypeID() -> CFTypeID;
+
+ /* CFNull Reference */
+
+ pub static kCFNull: CFNullRef;
+
+ /* CFType Reference */
+
+ //fn CFCopyTypeIDDescription
+ //fn CFGetAllocator
+ pub fn CFCopyDescription(cf: CFTypeRef) -> CFStringRef;
+ pub fn CFEqual(cf1: CFTypeRef, cf2: CFTypeRef) -> Boolean;
+ pub fn CFGetRetainCount(cf: CFTypeRef) -> CFIndex;
+ pub fn CFGetTypeID(cf: CFTypeRef) -> CFTypeID;
+ pub fn CFHash(cf: CFTypeRef) -> CFHashCode;
+ //fn CFMakeCollectable
+ pub fn CFRelease(cf: CFTypeRef);
+ pub fn CFRetain(cf: CFTypeRef) -> CFTypeRef;
+ pub fn CFShow(obj: CFTypeRef);
+
+ /* Base Utilities Reference */
+ // N.B. Some things missing here.
+}
diff --git a/third_party/rust/core-foundation-sys/src/bundle.rs b/third_party/rust/core-foundation-sys/src/bundle.rs
new file mode 100644
index 0000000000..29f8e1261f
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/bundle.rs
@@ -0,0 +1,39 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFTypeID, CFAllocatorRef};
+use url::CFURLRef;
+use dictionary::CFDictionaryRef;
+use string::CFStringRef;
+
+#[repr(C)]
+pub struct __CFBundle(c_void);
+
+pub type CFBundleRef = *mut __CFBundle;
+
+extern {
+ /*
+ * CFBundle.h
+ */
+ pub fn CFBundleCreate(allocator: CFAllocatorRef, bundleURL: CFURLRef) -> CFBundleRef;
+
+ pub fn CFBundleGetBundleWithIdentifier(bundleID: CFStringRef) -> CFBundleRef;
+ pub fn CFBundleGetFunctionPointerForName(bundle: CFBundleRef, function_name: CFStringRef) -> *const c_void;
+ pub fn CFBundleGetMainBundle() -> CFBundleRef;
+ pub fn CFBundleGetInfoDictionary(bundle: CFBundleRef) -> CFDictionaryRef;
+
+ pub fn CFBundleGetTypeID() -> CFTypeID;
+ pub fn CFBundleCopyExecutableURL(bundle: CFBundleRef) -> CFURLRef;
+ pub fn CFBundleCopyPrivateFrameworksURL(bundle: CFBundleRef) -> CFURLRef;
+ pub fn CFBundleCopySharedSupportURL(bundle: CFBundleRef) -> CFURLRef;
+ pub fn CFBundleCopyBundleURL(bundle: CFBundleRef) -> CFURLRef;
+ pub fn CFBundleCopyResourcesDirectoryURL(bundle: CFBundleRef) -> CFURLRef;
+}
diff --git a/third_party/rust/core-foundation-sys/src/characterset.rs b/third_party/rust/core-foundation-sys/src/characterset.rs
new file mode 100644
index 0000000000..6b347a5cdd
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/characterset.rs
@@ -0,0 +1,58 @@
+// Copyright 2019 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+use base::{Boolean, CFAllocatorRef, CFIndex, CFRange, CFTypeID};
+use data::CFDataRef;
+use string::{CFStringRef, UniChar};
+
+pub type CFCharacterSetPredefinedSet = CFIndex;
+
+// Members of CFCharacterSetPredefinedSet enum
+pub static kCFCharacterSetControl: CFCharacterSetPredefinedSet = 1;
+pub static kCFCharacterSetWhitespace: CFCharacterSetPredefinedSet = 2;
+pub static kCFCharacterSetWhitespaceAndNewline: CFCharacterSetPredefinedSet = 3;
+pub static kCFCharacterSetDecimalDigit: CFCharacterSetPredefinedSet = 4;
+pub static kCFCharacterSetLetter: CFCharacterSetPredefinedSet = 5;
+pub static kCFCharacterSetLowercaseLetter: CFCharacterSetPredefinedSet = 6;
+pub static kCFCharacterSetUppercaseLetter: CFCharacterSetPredefinedSet = 7;
+pub static kCFCharacterSetNonBase: CFCharacterSetPredefinedSet = 8;
+pub static kCFCharacterSetDecomposable: CFCharacterSetPredefinedSet = 9;
+pub static kCFCharacterSetAlphaNumeric: CFCharacterSetPredefinedSet = 10;
+pub static kCFCharacterSetPunctuation: CFCharacterSetPredefinedSet = 11;
+pub static kCFCharacterSetIllegal: CFCharacterSetPredefinedSet = 12;
+pub static kCFCharacterSetCapitalizedLetter: CFCharacterSetPredefinedSet = 13;
+pub static kCFCharacterSetSymbol: CFCharacterSetPredefinedSet = 14;
+pub static kCFCharacterSetNewline: CFCharacterSetPredefinedSet = 15;
+
+#[repr(C)]
+pub struct __CFCharacterSet(c_void);
+
+pub type CFCharacterSetRef = *const __CFCharacterSet;
+pub type CFMutableCharacterSetRef = *const __CFCharacterSet;
+
+extern {
+ pub fn CFCharacterSetGetTypeID() -> CFTypeID;
+ pub fn CFCharacterSetGetPredefined(theSetIdentifier: CFCharacterSetPredefinedSet) -> CFCharacterSetRef;
+ pub fn CFCharacterSetCreateWithCharactersInRange(alloc: CFAllocatorRef, theRange: CFRange) -> CFCharacterSetRef;
+ pub fn CFCharacterSetCreateWithCharactersInString(alloc: CFAllocatorRef, theString: CFStringRef) -> CFCharacterSetRef;
+ pub fn CFCharacterSetCreateWithBitmapRepresentation(alloc: CFAllocatorRef, theData: CFDataRef) -> CFCharacterSetRef;
+ pub fn CFCharacterSetCreateMutable(alloc: CFAllocatorRef) -> CFMutableCharacterSetRef;
+ pub fn CFCharacterSetCreateCopy(alloc: CFAllocatorRef, theSet: CFCharacterSetRef) -> CFCharacterSetRef;
+ pub fn CFCharacterSetCreateMutableCopy(alloc: CFAllocatorRef, theSet: CFCharacterSetRef) -> CFMutableCharacterSetRef;
+ pub fn CFCharacterSetIsCharacterMember(theSet: CFCharacterSetRef, theChar: UniChar) -> Boolean;
+ pub fn CFCharacterSetCreateBitmapRepresentation(alloc: CFAllocatorRef, theSet: CFCharacterSetRef) -> CFDataRef;
+ pub fn CFCharacterSetAddCharactersInRange(theSet: CFMutableCharacterSetRef, theRange: CFRange);
+ pub fn CFCharacterSetRemoveCharactersInRange(theSet: CFMutableCharacterSetRef, theRange: CFRange);
+ pub fn CFCharacterSetAddCharactersInString(theSet: CFMutableCharacterSetRef, theString: CFStringRef);
+ pub fn CFCharacterSetRemoveCharactersInString(theSet: CFMutableCharacterSetRef, theString: CFStringRef);
+ pub fn CFCharacterSetUnion(theSet: CFMutableCharacterSetRef, theOtherSet: CFCharacterSetRef);
+ pub fn CFCharacterSetIntersect(theSet: CFMutableCharacterSetRef, theOtherSet: CFCharacterSetRef);
+ pub fn CFCharacterSetInvert(theSet: CFMutableCharacterSetRef);
+}
diff --git a/third_party/rust/core-foundation-sys/src/data.rs b/third_party/rust/core-foundation-sys/src/data.rs
new file mode 100644
index 0000000000..e5ed0dc9f0
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/data.rs
@@ -0,0 +1,38 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFTypeID, CFIndex, CFRange};
+
+#[repr(C)]
+pub struct __CFData(c_void);
+
+pub type CFDataRef = *const __CFData;
+
+extern {
+ /*
+ * CFData.h
+ */
+
+ pub fn CFDataCreate(allocator: CFAllocatorRef,
+ bytes: *const u8, length: CFIndex) -> CFDataRef;
+ //fn CFDataFind
+ pub fn CFDataGetBytePtr(theData: CFDataRef) -> *const u8;
+ pub fn CFDataGetBytes(theData: CFDataRef, range: CFRange, buffer: *mut u8);
+ pub fn CFDataGetLength(theData: CFDataRef) -> CFIndex;
+ pub fn CFDataCreateWithBytesNoCopy(
+ allocator: CFAllocatorRef,
+ bytes: *const u8,
+ length: CFIndex,
+ allocator: CFAllocatorRef,
+ ) -> CFDataRef;
+
+ pub fn CFDataGetTypeID() -> CFTypeID;
+}
diff --git a/third_party/rust/core-foundation-sys/src/date.rs b/third_party/rust/core-foundation-sys/src/date.rs
new file mode 100644
index 0000000000..f83ce1dd18
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/date.rs
@@ -0,0 +1,34 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFComparisonResult, CFTypeID};
+
+#[repr(C)]
+pub struct __CFDate(c_void);
+
+pub type CFDateRef = *const __CFDate;
+
+pub type CFTimeInterval = f64;
+pub type CFAbsoluteTime = CFTimeInterval;
+
+extern {
+ pub static kCFAbsoluteTimeIntervalSince1904: CFTimeInterval;
+ pub static kCFAbsoluteTimeIntervalSince1970: CFTimeInterval;
+
+ pub fn CFAbsoluteTimeGetCurrent() -> CFAbsoluteTime;
+
+ pub fn CFDateCreate(allocator: CFAllocatorRef, at: CFAbsoluteTime) -> CFDateRef;
+ pub fn CFDateGetAbsoluteTime(date: CFDateRef) -> CFAbsoluteTime;
+ pub fn CFDateGetTimeIntervalSinceDate(date: CFDateRef, other: CFDateRef) -> CFTimeInterval;
+ pub fn CFDateCompare(date: CFDateRef, other: CFDateRef, context: *mut c_void) -> CFComparisonResult;
+
+ pub fn CFDateGetTypeID() -> CFTypeID;
+}
diff --git a/third_party/rust/core-foundation-sys/src/dictionary.rs b/third_party/rust/core-foundation-sys/src/dictionary.rs
new file mode 100644
index 0000000000..d10e9c1200
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/dictionary.rs
@@ -0,0 +1,91 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFHashCode, CFIndex, CFTypeID, Boolean};
+use string::CFStringRef;
+
+pub type CFDictionaryApplierFunction = extern "C" fn(key: *const c_void, value: *const c_void, context: *mut c_void);
+
+pub type CFDictionaryRetainCallBack = extern "C" fn(allocator: CFAllocatorRef, value: *const c_void) -> *const c_void;
+pub type CFDictionaryReleaseCallBack = extern "C" fn(allocator: CFAllocatorRef, value: *const c_void);
+pub type CFDictionaryCopyDescriptionCallBack = extern "C" fn(value: *const c_void) -> CFStringRef;
+pub type CFDictionaryEqualCallBack = extern "C" fn(value1: *const c_void, value2: *const c_void) -> Boolean;
+pub type CFDictionaryHashCallBack = extern "C" fn(value: *const c_void) -> CFHashCode;
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFDictionaryKeyCallBacks {
+ pub version: CFIndex,
+ pub retain: CFDictionaryRetainCallBack,
+ pub release: CFDictionaryReleaseCallBack,
+ pub copyDescription: CFDictionaryCopyDescriptionCallBack,
+ pub equal: CFDictionaryEqualCallBack,
+ pub hash: CFDictionaryHashCallBack
+}
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFDictionaryValueCallBacks {
+ pub version: CFIndex,
+ pub retain: CFDictionaryRetainCallBack,
+ pub release: CFDictionaryReleaseCallBack,
+ pub copyDescription: CFDictionaryCopyDescriptionCallBack,
+ pub equal: CFDictionaryEqualCallBack
+}
+
+#[repr(C)]
+pub struct __CFDictionary(c_void);
+
+pub type CFDictionaryRef = *const __CFDictionary;
+pub type CFMutableDictionaryRef = *mut __CFDictionary;
+
+extern {
+ /*
+ * CFDictionary.h
+ */
+
+ pub static kCFTypeDictionaryKeyCallBacks: CFDictionaryKeyCallBacks;
+ pub static kCFTypeDictionaryValueCallBacks: CFDictionaryValueCallBacks;
+
+ pub fn CFDictionaryContainsKey(theDict: CFDictionaryRef, key: *const c_void) -> Boolean;
+ pub fn CFDictionaryCreate(allocator: CFAllocatorRef, keys: *const *const c_void, values: *const *const c_void,
+ numValues: CFIndex, keyCallBacks: *const CFDictionaryKeyCallBacks,
+ valueCallBacks: *const CFDictionaryValueCallBacks)
+ -> CFDictionaryRef;
+ pub fn CFDictionaryGetCount(theDict: CFDictionaryRef) -> CFIndex;
+ pub fn CFDictionaryGetTypeID() -> CFTypeID;
+ pub fn CFDictionaryGetValueIfPresent(theDict: CFDictionaryRef, key: *const c_void, value: *mut *const c_void)
+ -> Boolean;
+ pub fn CFDictionaryApplyFunction(theDict: CFDictionaryRef,
+ applier: CFDictionaryApplierFunction,
+ context: *mut c_void);
+ pub fn CFDictionaryGetKeysAndValues(theDict: CFDictionaryRef,
+ keys: *mut *const c_void,
+ values: *mut *const c_void);
+
+ pub fn CFDictionaryCreateMutable(allocator: CFAllocatorRef, capacity: CFIndex,
+ keyCallbacks: *const CFDictionaryKeyCallBacks,
+ valueCallbacks: *const CFDictionaryValueCallBacks) -> CFMutableDictionaryRef;
+ pub fn CFDictionaryCreateMutableCopy(allocator: CFAllocatorRef, capacity: CFIndex,
+ theDict: CFDictionaryRef) -> CFMutableDictionaryRef;
+ pub fn CFDictionaryAddValue(theDict: CFMutableDictionaryRef,
+ key: *const c_void,
+ value: *const c_void);
+ pub fn CFDictionarySetValue(theDict: CFMutableDictionaryRef,
+ key: *const c_void,
+ value: *const c_void);
+ pub fn CFDictionaryReplaceValue(theDict: CFMutableDictionaryRef,
+ key: *const c_void,
+ value: *const c_void);
+ pub fn CFDictionaryRemoveValue(theDict: CFMutableDictionaryRef,
+ key: *const c_void);
+ pub fn CFDictionaryRemoveAllValues(theDict: CFMutableDictionaryRef);
+}
diff --git a/third_party/rust/core-foundation-sys/src/error.rs b/third_party/rust/core-foundation-sys/src/error.rs
new file mode 100644
index 0000000000..8a4c1d4940
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/error.rs
@@ -0,0 +1,32 @@
+// Copyright 2016 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFTypeID, CFIndex};
+use string::CFStringRef;
+
+#[repr(C)]
+pub struct __CFError(c_void);
+
+pub type CFErrorRef = *mut __CFError;
+
+extern "C" {
+ pub fn CFErrorGetTypeID() -> CFTypeID;
+
+ pub static kCFErrorDomainPOSIX: CFStringRef;
+ pub static kCFErrorDomainOSStatus: CFStringRef;
+ pub static kCFErrorDomainMach: CFStringRef;
+ pub static kCFErrorDomainCocoa: CFStringRef;
+
+ pub fn CFErrorGetDomain(err: CFErrorRef) -> CFStringRef;
+ pub fn CFErrorGetCode(err: CFErrorRef) -> CFIndex;
+
+ pub fn CFErrorCopyDescription(err: CFErrorRef) -> CFStringRef;
+}
diff --git a/third_party/rust/core-foundation-sys/src/filedescriptor.rs b/third_party/rust/core-foundation-sys/src/filedescriptor.rs
new file mode 100644
index 0000000000..3f51d10729
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/filedescriptor.rs
@@ -0,0 +1,58 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::{c_int, c_void};
+
+use base::{Boolean, CFIndex, CFTypeID, CFOptionFlags, CFAllocatorRef};
+use string::CFStringRef;
+use runloop::CFRunLoopSourceRef;
+
+pub type CFFileDescriptorNativeDescriptor = c_int;
+
+#[repr(C)]
+pub struct __CFFileDescriptor(c_void);
+
+pub type CFFileDescriptorRef = *mut __CFFileDescriptor;
+
+/* Callback Reason Types */
+pub const kCFFileDescriptorReadCallBack: CFOptionFlags = 1 << 0;
+pub const kCFFileDescriptorWriteCallBack: CFOptionFlags = 1 << 1;
+
+pub type CFFileDescriptorCallBack = extern "C" fn (f: CFFileDescriptorRef, callBackTypes: CFOptionFlags, info: *mut c_void);
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFFileDescriptorContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
+ pub release: Option<extern "C" fn (info: *const c_void)>,
+ pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
+}
+
+extern {
+ /*
+ * CFFileDescriptor.h
+ */
+ pub fn CFFileDescriptorGetTypeID() -> CFTypeID;
+
+ pub fn CFFileDescriptorCreate(allocator: CFAllocatorRef, fd: CFFileDescriptorNativeDescriptor, closeOnInvalidate: Boolean, callout: CFFileDescriptorCallBack, context: *const CFFileDescriptorContext) -> CFFileDescriptorRef;
+
+ pub fn CFFileDescriptorGetNativeDescriptor(f: CFFileDescriptorRef) -> CFFileDescriptorNativeDescriptor;
+
+ pub fn CFFileDescriptorGetContext(f: CFFileDescriptorRef, context: *mut CFFileDescriptorContext);
+
+ pub fn CFFileDescriptorEnableCallBacks(f: CFFileDescriptorRef, callBackTypes: CFOptionFlags);
+ pub fn CFFileDescriptorDisableCallBacks(f: CFFileDescriptorRef, callBackTypes: CFOptionFlags);
+
+ pub fn CFFileDescriptorInvalidate(f: CFFileDescriptorRef);
+ pub fn CFFileDescriptorIsValid(f: CFFileDescriptorRef) -> Boolean;
+
+ pub fn CFFileDescriptorCreateRunLoopSource(allocator: CFAllocatorRef, f: CFFileDescriptorRef, order: CFIndex) -> CFRunLoopSourceRef;
+}
diff --git a/third_party/rust/core-foundation-sys/src/lib.rs b/third_party/rust/core-foundation-sys/src/lib.rs
new file mode 100644
index 0000000000..f9a1884169
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/lib.rs
@@ -0,0 +1,32 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, improper_ctypes)]
+
+#![cfg_attr(all(feature="mac_os_10_7_support", feature="mac_os_10_8_features"), feature(linkage))] // back-compat requires weak linkage
+
+pub mod array;
+pub mod attributed_string;
+pub mod base;
+pub mod bundle;
+pub mod characterset;
+pub mod data;
+pub mod date;
+pub mod dictionary;
+pub mod error;
+pub mod filedescriptor;
+pub mod messageport;
+pub mod number;
+pub mod propertylist;
+pub mod runloop;
+pub mod set;
+pub mod string;
+pub mod timezone;
+pub mod url;
+pub mod uuid;
+pub mod mach_port;
diff --git a/third_party/rust/core-foundation-sys/src/mach_port.rs b/third_party/rust/core-foundation-sys/src/mach_port.rs
new file mode 100644
index 0000000000..2341fd4e74
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/mach_port.rs
@@ -0,0 +1,20 @@
+pub use base::{CFAllocatorRef, CFIndex, CFTypeID};
+use runloop::CFRunLoopSourceRef;
+use std::os::raw::c_void;
+
+#[repr(C)]
+pub struct __CFMachPort(c_void);
+pub type CFMachPortRef = *const __CFMachPort;
+
+extern "C" {
+ /*
+ * CFMachPort.h
+ */
+ pub fn CFMachPortCreateRunLoopSource(
+ allocator: CFAllocatorRef,
+ port: CFMachPortRef,
+ order: CFIndex,
+ ) -> CFRunLoopSourceRef;
+
+ pub fn CFMachPortGetTypeID() -> CFTypeID;
+}
diff --git a/third_party/rust/core-foundation-sys/src/messageport.rs b/third_party/rust/core-foundation-sys/src/messageport.rs
new file mode 100644
index 0000000000..e33d9aa4bc
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/messageport.rs
@@ -0,0 +1,79 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFIndex, CFTypeID, Boolean};
+use data::CFDataRef;
+use date::CFTimeInterval;
+use runloop::CFRunLoopSourceRef;
+use string::CFStringRef;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+#[derive(Debug)]
+pub struct CFMessagePortContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<unsafe extern fn(info: *const c_void) -> *const c_void>,
+ pub release: Option<unsafe extern fn(info: *const c_void)>,
+ pub copyDescription: Option<unsafe extern fn(info: *const c_void)
+ -> CFStringRef>,
+}
+
+pub type CFMessagePortCallBack = Option<
+ unsafe extern fn(local: CFMessagePortRef,
+ msgid: i32,
+ data: CFDataRef,
+ info: *mut c_void) -> CFDataRef>;
+
+pub type CFMessagePortInvalidationCallBack = Option<
+ unsafe extern "C" fn(ms: CFMessagePortRef, info: *mut c_void)>;
+
+#[repr(C)]
+pub struct __CFMessagePort(c_void);
+pub type CFMessagePortRef = *mut __CFMessagePort;
+
+extern {
+ /*
+ * CFMessagePort.h
+ */
+ pub fn CFMessagePortGetTypeID() -> CFTypeID;
+ pub fn CFMessagePortCreateLocal(allocator: CFAllocatorRef,
+ name: CFStringRef,
+ callout: CFMessagePortCallBack,
+ context: *const CFMessagePortContext,
+ shouldFreeInfo: *mut Boolean)
+ -> CFMessagePortRef;
+ pub fn CFMessagePortCreateRemote(allocator: CFAllocatorRef,
+ name: CFStringRef) -> CFMessagePortRef;
+ pub fn CFMessagePortIsRemote(ms: CFMessagePortRef) -> Boolean;
+ pub fn CFMessagePortGetName(ms: CFMessagePortRef) -> CFStringRef;
+ pub fn CFMessagePortSetName(ms: CFMessagePortRef, newName: CFStringRef)
+ -> Boolean;
+ pub fn CFMessagePortGetContext(ms: CFMessagePortRef,
+ context: *mut CFMessagePortContext);
+ pub fn CFMessagePortInvalidate(ms: CFMessagePortRef);
+ pub fn CFMessagePortIsValid(ms: CFMessagePortRef) -> Boolean;
+ pub fn CFMessagePortGetInvalidationCallBack(ms: CFMessagePortRef)
+ -> CFMessagePortInvalidationCallBack;
+ pub fn CFMessagePortSetInvalidationCallBack(ms: CFMessagePortRef,
+ callout: CFMessagePortInvalidationCallBack);
+ pub fn CFMessagePortSendRequest(remote: CFMessagePortRef, msgid: i32,
+ data: CFDataRef,
+ sendTimeout: CFTimeInterval,
+ rcvTimeout: CFTimeInterval,
+ replyMode: CFStringRef,
+ returnData: *mut CFDataRef) -> i32;
+ pub fn CFMessagePortCreateRunLoopSource(allocator: CFAllocatorRef,
+ local: CFMessagePortRef,
+ order: CFIndex)
+ -> CFRunLoopSourceRef;
+ // CFMessagePortSetDispatchQueue
+}
diff --git a/third_party/rust/core-foundation-sys/src/number.rs b/third_party/rust/core-foundation-sys/src/number.rs
new file mode 100644
index 0000000000..c056a245b0
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/number.rs
@@ -0,0 +1,84 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFTypeID, CFComparisonResult};
+
+#[repr(C)]
+pub struct __CFBoolean(c_void);
+
+pub type CFBooleanRef = *const __CFBoolean;
+
+pub type CFNumberType = u32;
+
+// members of enum CFNumberType
+pub const kCFNumberSInt8Type: CFNumberType = 1;
+pub const kCFNumberSInt16Type: CFNumberType = 2;
+pub const kCFNumberSInt32Type: CFNumberType = 3;
+pub const kCFNumberSInt64Type: CFNumberType = 4;
+pub const kCFNumberFloat32Type: CFNumberType = 5;
+pub const kCFNumberFloat64Type: CFNumberType = 6;
+pub const kCFNumberCharType: CFNumberType = 7;
+pub const kCFNumberShortType: CFNumberType = 8;
+pub const kCFNumberIntType: CFNumberType = 9;
+pub const kCFNumberLongType: CFNumberType = 10;
+pub const kCFNumberLongLongType: CFNumberType = 11;
+pub const kCFNumberFloatType: CFNumberType = 12;
+pub const kCFNumberDoubleType: CFNumberType = 13;
+pub const kCFNumberCFIndexType: CFNumberType = 14;
+pub const kCFNumberNSIntegerType: CFNumberType = 15;
+pub const kCFNumberCGFloatType: CFNumberType = 16;
+pub const kCFNumberMaxType: CFNumberType = 16;
+
+// This is an enum due to zero-sized types warnings.
+// For more details see https://github.com/rust-lang/rust/issues/27303
+pub enum __CFNumber {}
+
+pub type CFNumberRef = *const __CFNumber;
+
+extern {
+ /*
+ * CFNumber.h
+ */
+ pub static kCFBooleanTrue: CFBooleanRef;
+ pub static kCFBooleanFalse: CFBooleanRef;
+
+ pub fn CFBooleanGetTypeID() -> CFTypeID;
+ pub fn CFBooleanGetValue(boolean: CFBooleanRef) -> bool;
+
+ pub fn CFNumberCreate(allocator: CFAllocatorRef, theType: CFNumberType, valuePtr: *const c_void)
+ -> CFNumberRef;
+ //fn CFNumberGetByteSize
+ pub fn CFNumberGetValue(number: CFNumberRef, theType: CFNumberType, valuePtr: *mut c_void) -> bool;
+ pub fn CFNumberCompare(date: CFNumberRef, other: CFNumberRef, context: *mut c_void) -> CFComparisonResult;
+ pub fn CFNumberGetTypeID() -> CFTypeID;
+ pub fn CFNumberGetType(number: CFNumberRef) -> CFNumberType;
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn match_for_type_id_should_be_backwards_compatible() {
+ let type_id = kCFNumberFloat32Type;
+ // this is the old style of matching for static variables
+ match type_id {
+ vf64 if vf64 == kCFNumberFloat32Type => assert!(true),
+ _ => panic!("should not happen"),
+ };
+
+ // this is new new style of matching for consts
+ match type_id {
+ kCFNumberFloat32Type => assert!(true),
+ _ => panic!("should not happen"),
+ };
+ }
+}
diff --git a/third_party/rust/core-foundation-sys/src/propertylist.rs b/third_party/rust/core-foundation-sys/src/propertylist.rs
new file mode 100644
index 0000000000..574c4d13f3
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/propertylist.rs
@@ -0,0 +1,46 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use base::{CFAllocatorRef, CFIndex, CFOptionFlags, CFTypeRef};
+use data::CFDataRef;
+use error::CFErrorRef;
+
+pub type CFPropertyListRef = CFTypeRef;
+
+pub type CFPropertyListFormat = CFIndex;
+pub const kCFPropertyListOpenStepFormat: CFPropertyListFormat = 1;
+pub const kCFPropertyListXMLFormat_v1_0: CFPropertyListFormat = 100;
+pub const kCFPropertyListBinaryFormat_v1_0: CFPropertyListFormat = 200;
+
+pub type CFPropertyListMutabilityOptions = CFOptionFlags;
+pub const kCFPropertyListImmutable: CFPropertyListMutabilityOptions = 0;
+pub const kCFPropertyListMutableContainers: CFPropertyListMutabilityOptions = 1;
+pub const kCFPropertyListMutableContainersAndLeaves: CFPropertyListMutabilityOptions = 2;
+
+extern "C" {
+ // CFPropertyList.h
+ //
+
+ // fn CFPropertyListCreateDeepCopy
+ // fn CFPropertyListIsValid
+ pub fn CFPropertyListCreateWithData(allocator: CFAllocatorRef,
+ data: CFDataRef,
+ options: CFPropertyListMutabilityOptions,
+ format: *mut CFPropertyListFormat,
+ error: *mut CFErrorRef)
+ -> CFPropertyListRef;
+ // fn CFPropertyListCreateWithStream
+ // fn CFPropertyListWrite
+ pub fn CFPropertyListCreateData(allocator: CFAllocatorRef,
+ propertyList: CFPropertyListRef,
+ format: CFPropertyListFormat,
+ options: CFOptionFlags,
+ error: *mut CFErrorRef)
+ -> CFDataRef;
+}
diff --git a/third_party/rust/core-foundation-sys/src/runloop.rs b/third_party/rust/core-foundation-sys/src/runloop.rs
new file mode 100644
index 0000000000..53035a2e75
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/runloop.rs
@@ -0,0 +1,164 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use array::CFArrayRef;
+use base::{Boolean, CFIndex, CFTypeID, CFAllocatorRef, CFOptionFlags, CFHashCode, mach_port_t};
+use date::{CFAbsoluteTime, CFTimeInterval};
+use string::CFStringRef;
+
+#[repr(C)]
+pub struct __CFRunLoop(c_void);
+
+pub type CFRunLoopRef = *mut __CFRunLoop;
+
+#[repr(C)]
+pub struct __CFRunLoopSource(c_void);
+
+pub type CFRunLoopSourceRef = *mut __CFRunLoopSource;
+
+#[repr(C)]
+pub struct __CFRunLoopObserver(c_void);
+
+pub type CFRunLoopObserverRef = *mut __CFRunLoopObserver;
+
+// Reasons for CFRunLoopRunInMode() to Return
+pub const kCFRunLoopRunFinished: i32 = 1;
+pub const kCFRunLoopRunStopped: i32 = 2;
+pub const kCFRunLoopRunTimedOut: i32 = 3;
+pub const kCFRunLoopRunHandledSource: i32 = 4;
+
+// Run Loop Observer Activities
+//typedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
+pub type CFRunLoopActivity = CFOptionFlags;
+pub const kCFRunLoopEntry: CFOptionFlags = 1 << 0;
+pub const kCFRunLoopBeforeTimers: CFOptionFlags = 1 << 1;
+pub const kCFRunLoopBeforeSources: CFOptionFlags = 1 << 2;
+pub const kCFRunLoopBeforeWaiting: CFOptionFlags = 1 << 5;
+pub const kCFRunLoopAfterWaiting: CFOptionFlags = 1 << 6;
+pub const kCFRunLoopExit: CFOptionFlags = 1 << 7;
+pub const kCFRunLoopAllActivities: CFOptionFlags = 0x0FFFFFFF;
+
+#[repr(C)]
+pub struct CFRunLoopSourceContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
+ pub release: Option<extern "C" fn (info: *const c_void)>,
+ pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
+ pub equal: Option<extern "C" fn (info1: *const c_void, info2: *const c_void) -> Boolean>,
+ pub hash: Option<extern "C" fn (info: *const c_void) -> CFHashCode>,
+ pub schedule: Option<extern "C" fn (info: *const c_void, rl: CFRunLoopRef, mode: CFStringRef)>,
+ pub cancel: Option<extern "C" fn (info: *const c_void, rl: CFRunLoopRef, mode: CFStringRef)>,
+ pub perform: extern "C" fn (info: *const c_void),
+}
+
+#[repr(C)]
+pub struct CFRunLoopSourceContext1 {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
+ pub release: Option<extern "C" fn (info: *const c_void)>,
+ pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
+ pub equal: Option<extern "C" fn (info1: *const c_void, info2: *const c_void) -> Boolean>,
+ pub hash: Option<extern "C" fn (info: *const c_void) -> CFHashCode>,
+ // note that the following two fields are platform dependent in the C header, the ones here are for macOS
+ pub getPort: extern "C" fn (info: *mut c_void) -> mach_port_t,
+ pub perform: extern "C" fn (msg: *mut c_void, size: CFIndex, allocator: CFAllocatorRef, info: *mut c_void) -> *mut c_void,
+}
+
+#[repr(C)]
+pub struct CFRunLoopObserverContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
+ pub release: Option<extern "C" fn (info: *const c_void)>,
+ pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
+}
+
+pub type CFRunLoopObserverCallBack = extern "C" fn (observer: CFRunLoopObserverRef, activity: CFRunLoopActivity, info: *mut c_void);
+
+#[repr(C)]
+pub struct CFRunLoopTimerContext {
+ pub version: CFIndex,
+ pub info: *mut c_void,
+ pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
+ pub release: Option<extern "C" fn (info: *const c_void)>,
+ pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
+}
+
+pub type CFRunLoopTimerCallBack = extern "C" fn (timer: CFRunLoopTimerRef, info: *mut c_void);
+
+#[repr(C)]
+pub struct __CFRunLoopTimer(c_void);
+
+pub type CFRunLoopTimerRef = *mut __CFRunLoopTimer;
+
+extern {
+ /*
+ * CFRunLoop.h
+ */
+ pub static kCFRunLoopDefaultMode: CFStringRef;
+ pub static kCFRunLoopCommonModes: CFStringRef;
+ pub fn CFRunLoopGetTypeID() -> CFTypeID;
+ pub fn CFRunLoopGetCurrent() -> CFRunLoopRef;
+ pub fn CFRunLoopGetMain() -> CFRunLoopRef;
+ pub fn CFRunLoopCopyCurrentMode(rl: CFRunLoopRef) -> CFStringRef;
+ pub fn CFRunLoopCopyAllModes(rl: CFRunLoopRef) -> CFArrayRef;
+ pub fn CFRunLoopAddCommonMode(rl: CFRunLoopRef, mode: CFStringRef);
+ pub fn CFRunLoopGetNextTimerFireDate(rl: CFRunLoopRef, mode: CFStringRef) -> CFAbsoluteTime;
+ pub fn CFRunLoopRun();
+ pub fn CFRunLoopRunInMode(mode: CFStringRef, seconds: CFTimeInterval, returnAfterSourceHandled: Boolean) -> i32;
+ pub fn CFRunLoopIsWaiting(rl: CFRunLoopRef) -> Boolean;
+ pub fn CFRunLoopWakeUp(rl: CFRunLoopRef);
+ pub fn CFRunLoopStop(rl: CFRunLoopRef);
+ // fn CFRunLoopPerformBlock(rl: CFRunLoopRef, mode: CFTypeRef, block: void (^)(void));
+ pub fn CFRunLoopContainsSource(rl: CFRunLoopRef, source: CFRunLoopSourceRef, mode: CFStringRef) -> Boolean;
+ pub fn CFRunLoopAddSource(rl: CFRunLoopRef, source: CFRunLoopSourceRef, mode: CFStringRef);
+ pub fn CFRunLoopRemoveSource(rl: CFRunLoopRef, source: CFRunLoopSourceRef, mode: CFStringRef);
+ pub fn CFRunLoopContainsObserver(rl: CFRunLoopRef, observer: CFRunLoopObserverRef, mode: CFStringRef) -> Boolean;
+ pub fn CFRunLoopAddObserver(rl: CFRunLoopRef, observer: CFRunLoopObserverRef, mode: CFStringRef);
+ pub fn CFRunLoopRemoveObserver(rl: CFRunLoopRef, observer: CFRunLoopObserverRef, mode: CFStringRef);
+ pub fn CFRunLoopContainsTimer(rl: CFRunLoopRef, timer: CFRunLoopTimerRef, mode: CFStringRef) -> Boolean;
+ pub fn CFRunLoopAddTimer(rl: CFRunLoopRef, timer: CFRunLoopTimerRef, mode: CFStringRef);
+ pub fn CFRunLoopRemoveTimer(rl: CFRunLoopRef, timer: CFRunLoopTimerRef, mode: CFStringRef);
+
+ pub fn CFRunLoopSourceGetTypeID() -> CFTypeID;
+ pub fn CFRunLoopSourceCreate(allocator: CFAllocatorRef, order: CFIndex, context: *mut CFRunLoopSourceContext) -> CFRunLoopSourceRef;
+ pub fn CFRunLoopSourceGetOrder(source: CFRunLoopSourceRef) -> CFIndex;
+ pub fn CFRunLoopSourceInvalidate(source: CFRunLoopSourceRef);
+ pub fn CFRunLoopSourceIsValid(source: CFRunLoopSourceRef) -> Boolean;
+ pub fn CFRunLoopSourceGetContext(source: CFRunLoopSourceRef, context: *mut CFRunLoopSourceContext);
+ pub fn CFRunLoopSourceSignal(source: CFRunLoopSourceRef);
+
+ pub fn CFRunLoopObserverGetTypeID() -> CFTypeID;
+ pub fn CFRunLoopObserverCreate(allocator: CFAllocatorRef, activities: CFOptionFlags, repeats: Boolean, order: CFIndex, callout: CFRunLoopObserverCallBack, context: *mut CFRunLoopObserverContext) -> CFRunLoopObserverRef;
+ // fn CFRunLoopObserverCreateWithHandler(allocator: CFAllocatorRef, activities: CFOptionFlags, repeats: Boolean, order: CFIndex, block: void (^) (CFRunLoopObserverRef observer, CFRunLoopActivity activity)) -> CFRunLoopObserverRef;
+ pub fn CFRunLoopObserverGetActivities(observer: CFRunLoopObserverRef) -> CFOptionFlags;
+ pub fn CFRunLoopObserverDoesRepeat(observer: CFRunLoopObserverRef) -> Boolean;
+ pub fn CFRunLoopObserverGetOrder(observer: CFRunLoopObserverRef) -> CFIndex;
+ pub fn CFRunLoopObserverInvalidate(observer: CFRunLoopObserverRef);
+ pub fn CFRunLoopObserverIsValid(observer: CFRunLoopObserverRef) -> Boolean;
+ pub fn CFRunLoopObserverGetContext(observer: CFRunLoopObserverRef, context: *mut CFRunLoopObserverContext);
+
+ pub fn CFRunLoopTimerGetTypeID() -> CFTypeID;
+ pub fn CFRunLoopTimerCreate(allocator: CFAllocatorRef, fireDate: CFAbsoluteTime, interval: CFTimeInterval, flags: CFOptionFlags, order: CFIndex, callout: CFRunLoopTimerCallBack, context: *mut CFRunLoopTimerContext) -> CFRunLoopTimerRef;
+ // fn CFRunLoopTimerCreateWithHandler(allocator: CFAllocatorRef, fireDate: CFAbsoluteTime, interval: CFTimeInterval, flags: CFOptionFlags, order: CFIndex, block: void (^) (CFRunLoopTimerRef timer)) -> CFRunLoopTimerRef;
+ pub fn CFRunLoopTimerGetNextFireDate(timer: CFRunLoopTimerRef) -> CFAbsoluteTime;
+ pub fn CFRunLoopTimerSetNextFireDate(timer: CFRunLoopTimerRef, fireDate: CFAbsoluteTime);
+ pub fn CFRunLoopTimerGetInterval(timer: CFRunLoopTimerRef) -> CFTimeInterval;
+ pub fn CFRunLoopTimerDoesRepeat(timer: CFRunLoopTimerRef) -> Boolean;
+ pub fn CFRunLoopTimerGetOrder(timer: CFRunLoopTimerRef) -> CFIndex;
+ pub fn CFRunLoopTimerInvalidate(timer: CFRunLoopTimerRef);
+ pub fn CFRunLoopTimerIsValid(timer: CFRunLoopTimerRef) -> Boolean;
+ pub fn CFRunLoopTimerGetContext(timer: CFRunLoopTimerRef, context: *mut CFRunLoopTimerContext);
+ pub fn CFRunLoopTimerGetTolerance(timer: CFRunLoopTimerRef) -> CFTimeInterval;
+ pub fn CFRunLoopTimerSetTolerance(timer: CFRunLoopTimerRef, tolerance: CFTimeInterval);
+}
diff --git a/third_party/rust/core-foundation-sys/src/set.rs b/third_party/rust/core-foundation-sys/src/set.rs
new file mode 100644
index 0000000000..a5cc1b16f7
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/set.rs
@@ -0,0 +1,66 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFIndex, CFTypeID, Boolean};
+
+pub type CFSetApplierFunction = extern "C" fn (value: *const c_void,
+ context: *const c_void);
+pub type CFSetRetainCallBack = *const u8;
+pub type CFSetReleaseCallBack = *const u8;
+pub type CFSetCopyDescriptionCallBack = *const u8;
+pub type CFSetEqualCallBack = *const u8;
+pub type CFSetHashCallBack = *const u8;
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct CFSetCallBacks {
+ pub version: CFIndex,
+ pub retain: CFSetRetainCallBack,
+ pub release: CFSetReleaseCallBack,
+ pub copyDescription: CFSetCopyDescriptionCallBack,
+ pub equal: CFSetEqualCallBack,
+ pub hash: CFSetHashCallBack,
+}
+
+#[repr(C)]
+pub struct __CFSet(c_void);
+
+pub type CFSetRef = *const __CFSet;
+
+extern {
+ /*
+ * CFSet.h
+ */
+
+ pub static kCFTypeSetCallBacks: CFSetCallBacks;
+
+ /* Creating Sets */
+ pub fn CFSetCreate(allocator: CFAllocatorRef, values: *const *const c_void, numValues: CFIndex,
+ callBacks: *const CFSetCallBacks) -> CFSetRef;
+ pub fn CFSetCreateCopy(allocator: CFAllocatorRef, theSet: CFSetRef) -> CFSetRef;
+
+ /* Examining a Set */
+ pub fn CFSetContainsValue(theSet: CFSetRef, value: *const c_void) -> Boolean;
+ pub fn CFSetGetCount(theSet: CFSetRef) -> CFIndex;
+ pub fn CFSetGetCountOfValue(theSet: CFSetRef, value: *const c_void) -> CFIndex;
+ pub fn CFSetGetValue(theSet: CFSetRef, value: *const c_void) -> *const c_void;
+ pub fn CFSetGetValueIfPresent(theSet: CFSetRef, candidate: *const c_void, value: *mut *const c_void) -> Boolean;
+ pub fn CFSetGetValues(theSet: CFSetRef, values: *mut *const c_void);
+
+ /* Applying a Function to Set Members */
+ pub fn CFSetApplyFunction(theSet: CFSetRef,
+ applier: CFSetApplierFunction,
+ context: *const c_void);
+
+ /* Getting the CFSet Type ID */
+ pub fn CFSetGetTypeID() -> CFTypeID;
+}
+
diff --git a/third_party/rust/core-foundation-sys/src/string.rs b/third_party/rust/core-foundation-sys/src/string.rs
new file mode 100644
index 0000000000..d4f6550784
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/string.rs
@@ -0,0 +1,323 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::{c_char, c_ushort, c_void};
+
+use base::{Boolean, CFOptionFlags, CFIndex, CFAllocatorRef, CFRange, CFTypeID};
+
+pub type UniChar = c_ushort;
+
+// CFString.h
+
+pub type CFStringCompareFlags = CFOptionFlags;
+//static kCFCompareCaseInsensitive: CFStringCompareFlags = 1;
+//static kCFCompareBackwards: CFStringCompareFlags = 4;
+//static kCFCompareAnchored: CFStringCompareFlags = 8;
+//static kCFCompareNonliteral: CFStringCompareFlags = 16;
+//static kCFCompareLocalized: CFStringCompareFlags = 32;
+//static kCFCompareNumerically: CFStringCompareFlags = 64;
+//static kCFCompareDiacriticInsensitive: CFStringCompareFlags = 128;
+//static kCFCompareWidthInsensitive: CFStringCompareFlags = 256;
+//static kCFCompareForcedOrdering: CFStringCompareFlags = 512;
+
+pub type CFStringEncoding = u32;
+
+// macOS built-in encodings.
+
+//static kCFStringEncodingMacRoman: CFStringEncoding = 0;
+//static kCFStringEncodingWindowsLatin1: CFStringEncoding = 0x0500;
+//static kCFStringEncodingISOLatin1: CFStringEncoding = 0x0201;
+//static kCFStringEncodingNextStepLatin: CFStringEncoding = 0x0B01;
+//static kCFStringEncodingASCII: CFStringEncoding = 0x0600;
+//static kCFStringEncodingUnicode: CFStringEncoding = 0x0100;
+pub static kCFStringEncodingUTF8: CFStringEncoding = 0x08000100;
+//static kCFStringEncodingNonLossyASCII: CFStringEncoding = 0x0BFF;
+
+//static kCFStringEncodingUTF16: CFStringEncoding = 0x0100;
+//static kCFStringEncodingUTF16BE: CFStringEncoding = 0x10000100;
+//static kCFStringEncodingUTF16LE: CFStringEncoding = 0x14000100;
+//static kCFStringEncodingUTF32: CFStringEncoding = 0x0c000100;
+//static kCFStringEncodingUTF32BE: CFStringEncoding = 0x18000100;
+//static kCFStringEncodingUTF32LE: CFStringEncoding = 0x1c000100;
+
+
+// CFStringEncodingExt.h
+
+pub type CFStringEncodings = CFIndex;
+
+// External encodings, except those defined above.
+// Defined above: kCFStringEncodingMacRoman = 0
+//static kCFStringEncodingMacJapanese: CFStringEncoding = 1;
+//static kCFStringEncodingMacChineseTrad: CFStringEncoding = 2;
+//static kCFStringEncodingMacKorean: CFStringEncoding = 3;
+//static kCFStringEncodingMacArabic: CFStringEncoding = 4;
+//static kCFStringEncodingMacHebrew: CFStringEncoding = 5;
+//static kCFStringEncodingMacGreek: CFStringEncoding = 6;
+//static kCFStringEncodingMacCyrillic: CFStringEncoding = 7;
+//static kCFStringEncodingMacDevanagari: CFStringEncoding = 9;
+//static kCFStringEncodingMacGurmukhi: CFStringEncoding = 10;
+//static kCFStringEncodingMacGujarati: CFStringEncoding = 11;
+//static kCFStringEncodingMacOriya: CFStringEncoding = 12;
+//static kCFStringEncodingMacBengali: CFStringEncoding = 13;
+//static kCFStringEncodingMacTamil: CFStringEncoding = 14;
+//static kCFStringEncodingMacTelugu: CFStringEncoding = 15;
+//static kCFStringEncodingMacKannada: CFStringEncoding = 16;
+//static kCFStringEncodingMacMalayalam: CFStringEncoding = 17;
+//static kCFStringEncodingMacSinhalese: CFStringEncoding = 18;
+//static kCFStringEncodingMacBurmese: CFStringEncoding = 19;
+//static kCFStringEncodingMacKhmer: CFStringEncoding = 20;
+//static kCFStringEncodingMacThai: CFStringEncoding = 21;
+//static kCFStringEncodingMacLaotian: CFStringEncoding = 22;
+//static kCFStringEncodingMacGeorgian: CFStringEncoding = 23;
+//static kCFStringEncodingMacArmenian: CFStringEncoding = 24;
+//static kCFStringEncodingMacChineseSimp: CFStringEncoding = 25;
+//static kCFStringEncodingMacTibetan: CFStringEncoding = 26;
+//static kCFStringEncodingMacMongolian: CFStringEncoding = 27;
+//static kCFStringEncodingMacEthiopic: CFStringEncoding = 28;
+//static kCFStringEncodingMacCentralEurRoman: CFStringEncoding = 29;
+//static kCFStringEncodingMacVietnamese: CFStringEncoding = 30;
+//static kCFStringEncodingMacExtArabic: CFStringEncoding = 31;
+//static kCFStringEncodingMacSymbol: CFStringEncoding = 33;
+//static kCFStringEncodingMacDingbats: CFStringEncoding = 34;
+//static kCFStringEncodingMacTurkish: CFStringEncoding = 35;
+//static kCFStringEncodingMacCroatian: CFStringEncoding = 36;
+//static kCFStringEncodingMacIcelandic: CFStringEncoding = 37;
+//static kCFStringEncodingMacRomanian: CFStringEncoding = 38;
+//static kCFStringEncodingMacCeltic: CFStringEncoding = 39;
+//static kCFStringEncodingMacGaelic: CFStringEncoding = 40;
+//static kCFStringEncodingMacFarsi: CFStringEncoding = 0x8C;
+//static kCFStringEncodingMacUkrainian: CFStringEncoding = 0x98;
+//static kCFStringEncodingMacInuit: CFStringEncoding = 0xEC;
+//static kCFStringEncodingMacVT100: CFStringEncoding = 0xFC;
+//static kCFStringEncodingMacHFS: CFStringEncoding = 0xFF;
+// Defined above: kCFStringEncodingISOLatin1 = 0x0201
+//static kCFStringEncodingISOLatin2: CFStringEncoding = 0x0202;
+//static kCFStringEncodingISOLatin3: CFStringEncoding = 0x0203;
+//static kCFStringEncodingISOLatin4: CFStringEncoding = 0x0204;
+//static kCFStringEncodingISOLatinCyrillic: CFStringEncoding = 0x0205;
+//static kCFStringEncodingISOLatinArabic: CFStringEncoding = 0x0206;
+//static kCFStringEncodingISOLatinGreek: CFStringEncoding = 0x0207;
+//static kCFStringEncodingISOLatinHebrew: CFStringEncoding = 0x0208;
+//static kCFStringEncodingISOLatin5: CFStringEncoding = 0x0209;
+//static kCFStringEncodingISOLatin6: CFStringEncoding = 0x020A;
+//static kCFStringEncodingISOLatinThai: CFStringEncoding = 0x020B;
+//static kCFStringEncodingISOLatin7: CFStringEncoding = 0x020D;
+//static kCFStringEncodingISOLatin8: CFStringEncoding = 0x020E;
+//static kCFStringEncodingISOLatin9: CFStringEncoding = 0x020F;
+//static kCFStringEncodingISOLatin10: CFStringEncoding = 0x0210;
+//static kCFStringEncodingDOSLatinUS: CFStringEncoding = 0x0400;
+//static kCFStringEncodingDOSGreek: CFStringEncoding = 0x0405;
+//static kCFStringEncodingDOSBalticRim: CFStringEncoding = 0x0406;
+//static kCFStringEncodingDOSLatin1: CFStringEncoding = 0x0410;
+//static kCFStringEncodingDOSGreek1: CFStringEncoding = 0x0411;
+//static kCFStringEncodingDOSLatin2: CFStringEncoding = 0x0412;
+//static kCFStringEncodingDOSCyrillic: CFStringEncoding = 0x0413;
+//static kCFStringEncodingDOSTurkish: CFStringEncoding = 0x0414;
+//static kCFStringEncodingDOSPortuguese: CFStringEncoding = 0x0415;
+//static kCFStringEncodingDOSIcelandic: CFStringEncoding = 0x0416;
+//static kCFStringEncodingDOSHebrew: CFStringEncoding = 0x0417;
+//static kCFStringEncodingDOSCanadianFrench: CFStringEncoding = 0x0418;
+//static kCFStringEncodingDOSArabic: CFStringEncoding = 0x0419;
+//static kCFStringEncodingDOSNordic: CFStringEncoding = 0x041A;
+//static kCFStringEncodingDOSRussian: CFStringEncoding = 0x041B;
+//static kCFStringEncodingDOSGreek2: CFStringEncoding = 0x041C;
+//static kCFStringEncodingDOSThai: CFStringEncoding = 0x041D;
+//static kCFStringEncodingDOSJapanese: CFStringEncoding = 0x0420;
+//static kCFStringEncodingDOSChineseSimplif: CFStringEncoding = 0x0421;
+//static kCFStringEncodingDOSKorean: CFStringEncoding = 0x0422;
+//static kCFStringEncodingDOSChineseTrad: CFStringEncoding = 0x0423;
+// Defined above: kCFStringEncodingWindowsLatin1 = 0x0500
+//static kCFStringEncodingWindowsLatin2: CFStringEncoding = 0x0501;
+//static kCFStringEncodingWindowsCyrillic: CFStringEncoding = 0x0502;
+//static kCFStringEncodingWindowsGreek: CFStringEncoding = 0x0503;
+//static kCFStringEncodingWindowsLatin5: CFStringEncoding = 0x0504;
+//static kCFStringEncodingWindowsHebrew: CFStringEncoding = 0x0505;
+//static kCFStringEncodingWindowsArabic: CFStringEncoding = 0x0506;
+//static kCFStringEncodingWindowsBalticRim: CFStringEncoding = 0x0507;
+//static kCFStringEncodingWindowsVietnamese: CFStringEncoding = 0x0508;
+//static kCFStringEncodingWindowsKoreanJohab: CFStringEncoding = 0x0510;
+// Defined above: kCFStringEncodingASCII = 0x0600
+//static kCFStringEncodingANSEL: CFStringEncoding = 0x0601;
+//static kCFStringEncodingJIS_X0201_76: CFStringEncoding = 0x0620;
+//static kCFStringEncodingJIS_X0208_83: CFStringEncoding = 0x0621;
+//static kCFStringEncodingJIS_X0208_90: CFStringEncoding = 0x0622;
+//static kCFStringEncodingJIS_X0212_90: CFStringEncoding = 0x0623;
+//static kCFStringEncodingJIS_C6226_78: CFStringEncoding = 0x0624;
+//static kCFStringEncodingShiftJIS_X0213: CFStringEncoding = 0x0628;
+//static kCFStringEncodingShiftJIS_X0213_MenKuTen: CFStringEncoding = 0x0629;
+//static kCFStringEncodingGB_2312_80: CFStringEncoding = 0x0630;
+//static kCFStringEncodingGBK_95: CFStringEncoding = 0x0631;
+//static kCFStringEncodingGB_18030_2000: CFStringEncoding = 0x0632;
+//static kCFStringEncodingKSC_5601_87: CFStringEncoding = 0x0640;
+//static kCFStringEncodingKSC_5601_92_Johab: CFStringEncoding = 0x0641;
+//static kCFStringEncodingCNS_11643_92_P1: CFStringEncoding = 0x0651;
+//static kCFStringEncodingCNS_11643_92_P2: CFStringEncoding = 0x0652;
+//static kCFStringEncodingCNS_11643_92_P3: CFStringEncoding = 0x0653;
+//static kCFStringEncodingISO_2022_JP: CFStringEncoding = 0x0820;
+//static kCFStringEncodingISO_2022_JP_2: CFStringEncoding = 0x0821;
+//static kCFStringEncodingISO_2022_JP_1: CFStringEncoding = 0x0822;
+//static kCFStringEncodingISO_2022_JP_3: CFStringEncoding = 0x0823;
+//static kCFStringEncodingISO_2022_CN: CFStringEncoding = 0x0830;
+//static kCFStringEncodingISO_2022_CN_EXT: CFStringEncoding = 0x0831;
+//static kCFStringEncodingISO_2022_KR: CFStringEncoding = 0x0840;
+//static kCFStringEncodingEUC_JP: CFStringEncoding = 0x0920;
+//static kCFStringEncodingEUC_CN: CFStringEncoding = 0x0930;
+//static kCFStringEncodingEUC_TW: CFStringEncoding = 0x0931;
+//static kCFStringEncodingEUC_KR: CFStringEncoding = 0x0940;
+//static kCFStringEncodingShiftJIS: CFStringEncoding = 0x0A01;
+//static kCFStringEncodingKOI8_R: CFStringEncoding = 0x0A02;
+//static kCFStringEncodingBig5: CFStringEncoding = 0x0A03;
+//static kCFStringEncodingMacRomanLatin1: CFStringEncoding = 0x0A04;
+//static kCFStringEncodingHZ_GB_2312: CFStringEncoding = 0x0A05;
+//static kCFStringEncodingBig5_HKSCS_1999: CFStringEncoding = 0x0A06;
+//static kCFStringEncodingVISCII: CFStringEncoding = 0x0A07;
+//static kCFStringEncodingKOI8_U: CFStringEncoding = 0x0A08;
+//static kCFStringEncodingBig5_E: CFStringEncoding = 0x0A09;
+// Defined above: kCFStringEncodingNextStepLatin = 0x0B01
+//static kCFStringEncodingNextStepJapanese: CFStringEncoding = 0x0B02;
+//static kCFStringEncodingEBCDIC_US: CFStringEncoding = 0x0C01;
+//static kCFStringEncodingEBCDIC_CP037: CFStringEncoding = 0x0C02;
+//static kCFStringEncodingUTF7: CFStringEncoding = 0x04000100;
+//static kCFStringEncodingUTF7_IMAP: CFStringEncoding = 0x0A10;
+//static kCFStringEncodingShiftJIS_X0213_00: CFStringEncoding = 0x0628; /* Deprecated */
+
+#[repr(C)]
+pub struct __CFString(c_void);
+
+pub type CFStringRef = *const __CFString;
+
+extern {
+ /*
+ * CFString.h
+ */
+
+ // N.B. organized according to "Functions by task" in docs
+
+ /* Creating a CFString */
+ //fn CFSTR
+ //fn CFStringCreateArrayBySeparatingStrings
+ //fn CFStringCreateByCombiningStrings
+ //fn CFStringCreateCopy
+ //fn CFStringCreateFromExternalRepresentation
+ pub fn CFStringCreateWithBytes(alloc: CFAllocatorRef,
+ bytes: *const u8,
+ numBytes: CFIndex,
+ encoding: CFStringEncoding,
+ isExternalRepresentation: Boolean)
+ -> CFStringRef;
+ pub fn CFStringCreateWithBytesNoCopy(alloc: CFAllocatorRef,
+ bytes: *const u8,
+ numBytes: CFIndex,
+ encoding: CFStringEncoding,
+ isExternalRepresentation: Boolean,
+ contentsDeallocator: CFAllocatorRef)
+ -> CFStringRef;
+ //fn CFStringCreateWithCharacters
+ pub fn CFStringCreateWithCharactersNoCopy(alloc: CFAllocatorRef,
+ chars: *const UniChar,
+ numChars: CFIndex,
+ contentsDeallocator: CFAllocatorRef)
+ -> CFStringRef;
+ pub fn CFStringCreateWithCString(alloc: CFAllocatorRef,
+ cStr: *const c_char,
+ encoding: CFStringEncoding)
+ -> CFStringRef;
+ //fn CFStringCreateWithCStringNoCopy
+ //fn CFStringCreateWithFormat
+ //fn CFStringCreateWithFormatAndArguments
+ //fn CFStringCreateWithPascalString
+ //fn CFStringCreateWithPascalStringNoCopy
+ //fn CFStringCreateWithSubstring
+
+ /* Searching Strings */
+ //fn CFStringCreateArrayWithFindResults
+ //fn CFStringFind
+ //fn CFStringFindCharacterFromSet
+ //fn CFStringFindWithOptions
+ //fn CFStringFindWithOptionsAndLocale
+ //fn CFStringGetLineBounds
+
+ /* Comparing Strings */
+ //fn CFStringCompare
+ //fn CFStringCompareWithOptions
+ //fn CFStringCompareWithOptionsAndLocale
+ //fn CFStringHasPrefix
+ //fn CFStringHasSuffix
+
+ /* Accessing Characters */
+ //fn CFStringCreateExternalRepresentation
+ pub fn CFStringGetBytes(theString: CFStringRef,
+ range: CFRange,
+ encoding: CFStringEncoding,
+ lossByte: u8,
+ isExternalRepresentation: Boolean,
+ buffer: *mut u8,
+ maxBufLen: CFIndex,
+ usedBufLen: *mut CFIndex)
+ -> CFIndex;
+ //fn CFStringGetCharacterAtIndex
+ //fn CFStringGetCharacters
+ //fn CFStringGetCharactersPtr
+ //fn CFStringGetCharacterFromInlineBuffer
+ pub fn CFStringGetCString(theString: CFStringRef,
+ buffer: *mut c_char,
+ bufferSize: CFIndex,
+ encoding: CFStringEncoding)
+ -> Boolean;
+ pub fn CFStringGetCStringPtr(theString: CFStringRef,
+ encoding: CFStringEncoding)
+ -> *const c_char;
+ pub fn CFStringGetLength(theString: CFStringRef) -> CFIndex;
+ //fn CFStringGetPascalString
+ //fn CFStringGetPascalStringPtr
+ //fn CFStringGetRangeOfComposedCharactersAtIndex
+ //fn CFStringInitInlineBuffer
+
+ /* Working With Hyphenation */
+ //fn CFStringGetHyphenationLocationBeforeIndex
+ //fn CFStringIsHyphenationAvailableForLocale
+
+ /* Working With Encodings */
+ //fn CFStringConvertEncodingToIANACharSetName
+ //fn CFStringConvertEncodingToNSStringEncoding
+ //fn CFStringConvertEncodingToWindowsCodepage
+ //fn CFStringConvertIANACharSetNameToEncoding
+ //fn CFStringConvertNSStringEncodingToEncoding
+ //fn CFStringConvertWindowsCodepageToEncoding
+ //fn CFStringGetFastestEncoding
+ //fn CFStringGetListOfAvailableEncodings
+ //fn CFStringGetMaximumSizeForEncoding
+ //fn CFStringGetMostCompatibleMacStringEncoding
+ //fn CFStringGetNameOfEncoding
+ //fn CFStringGetSmallestEncoding
+ //fn CFStringGetSystemEncoding
+ //fn CFStringIsEncodingAvailable
+
+ /* Getting Numeric Values */
+ //fn CFStringGetDoubleValue
+ //fn CFStringGetIntValue
+
+ /* Getting String Properties */
+ //fn CFShowStr
+ pub fn CFStringGetTypeID() -> CFTypeID;
+
+ /* String File System Representations */
+ //fn CFStringCreateWithFileSystemRepresentation
+ //fn CFStringGetFileSystemRepresentation
+ //fn CFStringGetMaximumSizeOfFileSystemRepresentation
+
+ /* Getting Paragraph Bounds */
+ //fn CFStringGetParagraphBounds
+
+ /* Managing Surrogates */
+ //fn CFStringGetLongCharacterForSurrogatePair
+ //fn CFStringGetSurrogatePairForLongCharacter
+ //fn CFStringIsSurrogateHighCharacter
+ //fn CFStringIsSurrogateLowCharacter
+}
diff --git a/third_party/rust/core-foundation-sys/src/timezone.rs b/third_party/rust/core-foundation-sys/src/timezone.rs
new file mode 100644
index 0000000000..0b279db188
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/timezone.rs
@@ -0,0 +1,29 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFTypeID};
+use date::{CFTimeInterval, CFAbsoluteTime};
+use string::CFStringRef;
+
+#[repr(C)]
+pub struct __CFTimeZone(c_void);
+
+pub type CFTimeZoneRef = *const __CFTimeZone;
+
+extern {
+ pub fn CFTimeZoneCopySystem() -> CFTimeZoneRef;
+ pub fn CFTimeZoneCopyDefault() -> CFTimeZoneRef;
+ pub fn CFTimeZoneCreateWithTimeIntervalFromGMT(allocator: CFAllocatorRef, interval: CFTimeInterval) -> CFTimeZoneRef;
+ pub fn CFTimeZoneGetSecondsFromGMT(tz: CFTimeZoneRef, time: CFAbsoluteTime) -> CFTimeInterval;
+
+ pub fn CFTimeZoneGetTypeID() -> CFTypeID;
+ pub fn CFTimeZoneGetName(tz: CFTimeZoneRef) -> CFStringRef;
+}
diff --git a/third_party/rust/core-foundation-sys/src/url.rs b/third_party/rust/core-foundation-sys/src/url.rs
new file mode 100644
index 0000000000..08e7bcd9fe
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/url.rs
@@ -0,0 +1,169 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFOptionFlags, CFIndex, CFAllocatorRef, Boolean, CFTypeID, CFTypeRef, SInt32};
+use data::CFDataRef;
+use array::CFArrayRef;
+use dictionary::CFDictionaryRef;
+use string::{CFStringRef, CFStringEncoding};
+use error::CFErrorRef;
+
+#[repr(C)]
+pub struct __CFURL(c_void);
+
+pub type CFURLRef = *const __CFURL;
+
+pub type CFURLBookmarkCreationOptions = CFOptionFlags;
+pub type CFURLBookmarkResolutionOptions = CFOptionFlags;
+pub type CFURLBookmarkFileCreationOptions = CFOptionFlags;
+
+pub type CFURLPathStyle = CFIndex;
+
+/* typedef CF_ENUM(CFIndex, CFURLPathStyle) */
+pub const kCFURLPOSIXPathStyle: CFURLPathStyle = 0;
+pub const kCFURLHFSPathStyle: CFURLPathStyle = 1;
+pub const kCFURLWindowsPathStyle: CFURLPathStyle = 2;
+
+pub static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
+ (1u32 << 8) as usize;
+pub static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
+ (1u32 << 9) as usize;
+pub static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
+ (1u32 << 10) as usize;
+pub static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
+ (1u32 << 11) as usize;
+pub static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
+ (1u32 << 12) as usize;
+
+// TODO: there are a lot of missing keys and constants. Add if you are bored or need them.
+
+extern {
+ /*
+ * CFURL.h
+ */
+
+ /* Common File System Resource Keys */
+ pub static kCFURLAttributeModificationDateKey: CFStringRef;
+ pub static kCFURLContentAccessDateKey: CFStringRef;
+ pub static kCFURLContentModificationDateKey: CFStringRef;
+ pub static kCFURLCreationDateKey: CFStringRef;
+ pub static kCFURLFileResourceIdentifierKey: CFStringRef;
+ pub static kCFURLFileSecurityKey: CFStringRef;
+ pub static kCFURLHasHiddenExtensionKey: CFStringRef;
+ pub static kCFURLIsDirectoryKey: CFStringRef;
+ pub static kCFURLIsExecutableKey: CFStringRef;
+ pub static kCFURLIsHiddenKey: CFStringRef;
+ pub static kCFURLIsPackageKey: CFStringRef;
+ pub static kCFURLIsReadableKey: CFStringRef;
+ pub static kCFURLIsRegularFileKey: CFStringRef;
+ pub static kCFURLIsSymbolicLinkKey: CFStringRef;
+ pub static kCFURLIsSystemImmutableKey: CFStringRef;
+ pub static kCFURLIsUserImmutableKey: CFStringRef;
+ pub static kCFURLIsVolumeKey: CFStringRef;
+ pub static kCFURLIsWritableKey: CFStringRef;
+ pub static kCFURLLabelNumberKey: CFStringRef;
+ pub static kCFURLLinkCountKey: CFStringRef;
+ pub static kCFURLLocalizedLabelKey: CFStringRef;
+ pub static kCFURLLocalizedNameKey: CFStringRef;
+ pub static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
+ pub static kCFURLNameKey: CFStringRef;
+ pub static kCFURLParentDirectoryURLKey: CFStringRef;
+ pub static kCFURLPreferredIOBlockSizeKey: CFStringRef;
+ pub static kCFURLTypeIdentifierKey: CFStringRef;
+ pub static kCFURLVolumeIdentifierKey: CFStringRef;
+ pub static kCFURLVolumeURLKey: CFStringRef;
+
+ #[cfg(feature="mac_os_10_8_features")]
+ #[cfg_attr(feature = "mac_os_10_7_support", linkage = "extern_weak")]
+ pub static kCFURLIsExcludedFromBackupKey: CFStringRef;
+ pub static kCFURLFileResourceTypeKey: CFStringRef;
+
+ /* Creating a CFURL */
+ pub fn CFURLCopyAbsoluteURL(anURL: CFURLRef) -> CFURLRef;
+ pub fn CFURLCreateAbsoluteURLWithBytes(allocator: CFAllocatorRef, relativeURLBytes: *const u8, length: CFIndex, encoding: CFStringEncoding, baseURL: CFURLRef, useCompatibilityMode: Boolean) -> CFURLRef;
+ pub fn CFURLCreateByResolvingBookmarkData(allocator: CFAllocatorRef, bookmark: CFDataRef, options: CFURLBookmarkResolutionOptions, relativeToURL: CFURLRef, resourcePropertiesToInclude: CFArrayRef, isStale: *mut Boolean, error: *mut CFErrorRef) -> CFURLRef;
+ //fn CFURLCreateCopyAppendingPathComponent
+ //fn CFURLCreateCopyAppendingPathExtension
+ //fn CFURLCreateCopyDeletingLastPathComponent
+ //fn CFURLCreateCopyDeletingPathExtension
+ pub fn CFURLCreateFilePathURL(allocator: CFAllocatorRef, url: CFURLRef, error: *mut CFErrorRef) -> CFURLRef;
+ //fn CFURLCreateFileReferenceURL
+ pub fn CFURLCreateFromFileSystemRepresentation(allocator: CFAllocatorRef, buffer: *const u8, bufLen: CFIndex, isDirectory: Boolean) -> CFURLRef;
+ //fn CFURLCreateFromFileSystemRepresentationRelativeToBase
+ //fn CFURLCreateFromFSRef
+ pub fn CFURLCreateWithBytes(allocator: CFAllocatorRef, URLBytes: *const u8, length: CFIndex, encoding: CFStringEncoding, baseURL: CFURLRef) -> CFURLRef;
+ pub fn CFURLCreateWithFileSystemPath(allocator: CFAllocatorRef, filePath: CFStringRef, pathStyle: CFURLPathStyle, isDirectory: Boolean) -> CFURLRef;
+ pub fn CFURLCreateWithFileSystemPathRelativeToBase(allocator: CFAllocatorRef, filePath: CFStringRef, pathStyle: CFURLPathStyle, isDirectory: Boolean, baseURL: CFURLRef) -> CFURLRef;
+ //fn CFURLCreateWithString(allocator: CFAllocatorRef, urlString: CFStringRef,
+ // baseURL: CFURLRef) -> CFURLRef;
+
+ /* Accessing the Parts of a URL */
+ pub fn CFURLCanBeDecomposed(anURL: CFURLRef) -> Boolean;
+ pub fn CFURLCopyFileSystemPath(anURL: CFURLRef, pathStyle: CFURLPathStyle) -> CFStringRef;
+ pub fn CFURLCopyFragment(anURL: CFURLRef, charactersToLeaveEscaped: CFStringRef) -> CFStringRef;
+ pub fn CFURLCopyHostName(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyLastPathComponent(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyNetLocation(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyParameterString(anURL: CFURLRef, charactersToLeaveEscaped: CFStringRef) -> CFStringRef;
+ pub fn CFURLCopyPassword(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyPath(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyPathExtension(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyQueryString(anURL: CFURLRef, charactersToLeaveEscaped: CFStringRef) -> CFStringRef;
+ pub fn CFURLCopyResourceSpecifier(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyScheme(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLCopyStrictPath(anURL: CFURLRef, isAbsolute: *mut Boolean) -> CFStringRef;
+ pub fn CFURLCopyUserName(anURL: CFURLRef) -> CFStringRef;
+ pub fn CFURLGetPortNumber(anURL: CFURLRef) -> SInt32;
+ pub fn CFURLHasDirectoryPath(anURL: CFURLRef) -> Boolean;
+
+ /* Converting URLs to Other Representations */
+ //fn CFURLCreateData(allocator: CFAllocatorRef, url: CFURLRef,
+ // encoding: CFStringEncoding, escapeWhitespace: bool) -> CFDataRef;
+ //fn CFURLCreateStringByAddingPercentEscapes
+ //fn CFURLCreateStringByReplacingPercentEscapes
+ //fn CFURLCreateStringByReplacingPercentEscapesUsingEncoding
+ pub fn CFURLGetFileSystemRepresentation(anURL: CFURLRef, resolveAgainstBase: Boolean, buffer: *mut u8, maxBufLen: CFIndex) -> Boolean;
+
+ //fn CFURLGetFSRef
+ pub fn CFURLGetString(anURL: CFURLRef) -> CFStringRef;
+
+ /* Getting URL Properties */
+ //fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
+ pub fn CFURLGetBytes(anURL: CFURLRef, buffer: *mut u8, bufferLength: CFIndex) -> CFIndex;
+ //fn CFURLGetByteRangeForComponent
+ pub fn CFURLGetTypeID() -> CFTypeID;
+ //fn CFURLResourceIsReachable
+
+ /* Getting and Setting File System Resource Properties */
+ pub fn CFURLClearResourcePropertyCache(url: CFURLRef);
+ //fn CFURLClearResourcePropertyCacheForKey
+ //fn CFURLCopyResourcePropertiesForKeys
+ //fn CFURLCopyResourcePropertyForKey
+ pub fn CFURLCreateResourcePropertiesForKeysFromBookmarkData(allocator: CFAllocatorRef, resourcePropertiesToReturn: CFArrayRef, bookmark: CFDataRef) -> CFDictionaryRef;
+ pub fn CFURLCreateResourcePropertyForKeyFromBookmarkData(allocator: CFAllocatorRef, resourcePropertyKey: CFStringRef, bookmark: CFDataRef) -> CFTypeRef;
+ //fn CFURLSetResourcePropertiesForKeys
+ pub fn CFURLSetResourcePropertyForKey(url: CFURLRef, key: CFStringRef, value: CFTypeRef, error: *mut CFErrorRef) -> Boolean;
+ //fn CFURLSetTemporaryResourcePropertyForKey
+
+ /* Working with Bookmark Data */
+ pub fn CFURLCreateBookmarkData(allocator: CFAllocatorRef, url: CFURLRef, options: CFURLBookmarkCreationOptions, resourcePropertiesToInclude: CFArrayRef, relativeToURL: CFURLRef, error: *mut CFErrorRef) -> CFDataRef;
+ pub fn CFURLCreateBookmarkDataFromAliasRecord(allocator: CFAllocatorRef, aliasRecordDataRef: CFDataRef) -> CFDataRef;
+ pub fn CFURLCreateBookmarkDataFromFile(allocator: CFAllocatorRef, fileURL: CFURLRef, errorRef: *mut CFErrorRef) -> CFDataRef;
+ pub fn CFURLWriteBookmarkDataToFile(bookmarkRef: CFDataRef, fileURL: CFURLRef, options: CFURLBookmarkFileCreationOptions, errorRef: *mut CFErrorRef) -> Boolean;
+ pub fn CFURLStartAccessingSecurityScopedResource(url: CFURLRef) -> Boolean;
+ pub fn CFURLStopAccessingSecurityScopedResource(url: CFURLRef);
+}
+
+#[test]
+#[cfg(feature="mac_os_10_8_features")]
+fn can_see_excluded_from_backup_key() {
+ let _ = unsafe { kCFURLIsExcludedFromBackupKey };
+}
diff --git a/third_party/rust/core-foundation-sys/src/uuid.rs b/third_party/rust/core-foundation-sys/src/uuid.rs
new file mode 100644
index 0000000000..4253952938
--- /dev/null
+++ b/third_party/rust/core-foundation-sys/src/uuid.rs
@@ -0,0 +1,49 @@
+// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::os::raw::c_void;
+
+use base::{CFAllocatorRef, CFTypeID};
+
+#[repr(C)]
+pub struct __CFUUID(c_void);
+
+pub type CFUUIDRef = *const __CFUUID;
+
+#[repr(C)]
+#[derive(Clone, Copy, Default)]
+pub struct CFUUIDBytes {
+ pub byte0: u8,
+ pub byte1: u8,
+ pub byte2: u8,
+ pub byte3: u8,
+ pub byte4: u8,
+ pub byte5: u8,
+ pub byte6: u8,
+ pub byte7: u8,
+ pub byte8: u8,
+ pub byte9: u8,
+ pub byte10: u8,
+ pub byte11: u8,
+ pub byte12: u8,
+ pub byte13: u8,
+ pub byte14: u8,
+ pub byte15: u8
+}
+
+extern {
+ /*
+ * CFUUID.h
+ */
+ pub fn CFUUIDCreate(allocator: CFAllocatorRef) -> CFUUIDRef;
+ pub fn CFUUIDCreateFromUUIDBytes(allocator: CFAllocatorRef, bytes: CFUUIDBytes) -> CFUUIDRef;
+ pub fn CFUUIDGetUUIDBytes(uuid: CFUUIDRef) -> CFUUIDBytes;
+
+ pub fn CFUUIDGetTypeID() -> CFTypeID;
+}