mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Auto merge of #16988 - emilio:backout, r=emilio
Revert "Auto merge of #16976 - upsuper:bug1366247, r=nox" for breaking the world. This reverts commit3d40b516c8
, reversing changes made to255387a915
. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16988) <!-- Reviewable:end -->
This commit is contained in:
commit
d40b26202d
7 changed files with 28 additions and 79 deletions
|
@ -1,13 +1,13 @@
|
||||||
/* automatically generated by rust-bindgen */
|
/* automatically generated by rust-bindgen */
|
||||||
|
|
||||||
pub use nsstring::{nsACString, nsAString, nsString, nsStringRepr};
|
pub use nsstring::{nsACString, nsAString, nsString, nsStringRepr};
|
||||||
|
use gecko_bindings::structs::nsTArray;
|
||||||
type nsACString_internal = nsACString;
|
type nsACString_internal = nsACString;
|
||||||
type nsAString_internal = nsAString;
|
type nsAString_internal = nsAString;
|
||||||
use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue;
|
use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue;
|
||||||
use gecko_bindings::structs::mozilla::css::ImageValue;
|
use gecko_bindings::structs::mozilla::css::ImageValue;
|
||||||
use gecko_bindings::structs::mozilla::css::URLValue;
|
use gecko_bindings::structs::mozilla::css::URLValue;
|
||||||
use gecko_bindings::structs::mozilla::Side;
|
use gecko_bindings::structs::mozilla::Side;
|
||||||
use gecko_bindings::structs::already_AddRefed;
|
|
||||||
use gecko_bindings::structs::RawGeckoAnimationPropertySegment;
|
use gecko_bindings::structs::RawGeckoAnimationPropertySegment;
|
||||||
use gecko_bindings::structs::RawGeckoComputedTiming;
|
use gecko_bindings::structs::RawGeckoComputedTiming;
|
||||||
use gecko_bindings::structs::RawGeckoCSSPropertyIDList;
|
use gecko_bindings::structs::RawGeckoCSSPropertyIDList;
|
||||||
|
@ -190,7 +190,6 @@ unsafe impl Sync for nsStyleVisibility {}
|
||||||
use gecko_bindings::structs::nsStyleXUL;
|
use gecko_bindings::structs::nsStyleXUL;
|
||||||
unsafe impl Send for nsStyleXUL {}
|
unsafe impl Send for nsStyleXUL {}
|
||||||
unsafe impl Sync for nsStyleXUL {}
|
unsafe impl Sync for nsStyleXUL {}
|
||||||
use gecko_bindings::structs::nsTArray;
|
|
||||||
use gecko_bindings::structs::nsTimingFunction;
|
use gecko_bindings::structs::nsTimingFunction;
|
||||||
use gecko_bindings::structs::nscolor;
|
use gecko_bindings::structs::nscolor;
|
||||||
use gecko_bindings::structs::nscoord;
|
use gecko_bindings::structs::nscoord;
|
||||||
|
@ -1238,7 +1237,7 @@ extern "C" {
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_CSSValue_SetAtomIdent(css_value: nsCSSValueBorrowedMut,
|
pub fn Gecko_CSSValue_SetAtomIdent(css_value: nsCSSValueBorrowedMut,
|
||||||
atom: already_AddRefed<nsIAtom>);
|
atom: *mut nsIAtom);
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_CSSValue_SetArray(css_value: nsCSSValueBorrowedMut,
|
pub fn Gecko_CSSValue_SetArray(css_value: nsCSSValueBorrowedMut,
|
||||||
|
@ -1982,7 +1981,7 @@ extern "C" {
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed,
|
pub fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed,
|
||||||
name: already_AddRefed<nsIAtom>);
|
name: *mut nsIAtom);
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Servo_KeyframesRule_GetCount(rule: RawServoKeyframesRuleBorrowed)
|
pub fn Servo_KeyframesRule_GetCount(rule: RawServoKeyframesRuleBorrowed)
|
||||||
|
|
|
@ -54,7 +54,6 @@ use gecko_bindings::structs::ELEMENT_HAS_SNAPSHOT;
|
||||||
use gecko_bindings::structs::EffectCompositor_CascadeLevel as CascadeLevel;
|
use gecko_bindings::structs::EffectCompositor_CascadeLevel as CascadeLevel;
|
||||||
use gecko_bindings::structs::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE;
|
use gecko_bindings::structs::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE;
|
||||||
use gecko_bindings::structs::NODE_IS_NATIVE_ANONYMOUS;
|
use gecko_bindings::structs::NODE_IS_NATIVE_ANONYMOUS;
|
||||||
use gecko_bindings::structs::already_AddRefed;
|
|
||||||
use gecko_bindings::sugar::ownership::HasArcFFI;
|
use gecko_bindings::sugar::ownership::HasArcFFI;
|
||||||
use logical_geometry::WritingMode;
|
use logical_geometry::WritingMode;
|
||||||
use media_queries::Device;
|
use media_queries::Device;
|
||||||
|
@ -1075,13 +1074,13 @@ impl<'le> PresentationalHintsSynthesizer for GeckoElement<'le> {
|
||||||
//
|
//
|
||||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#language
|
// http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#language
|
||||||
let ptr = unsafe {
|
let ptr = unsafe {
|
||||||
already_AddRefed::new(bindings::Gecko_GetXMLLangValue(self.0))
|
bindings::Gecko_GetXMLLangValue(self.0)
|
||||||
};
|
};
|
||||||
if let Some(ptr) = ptr {
|
if !ptr.is_null() {
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
|
|
||||||
let pdb = PropertyDeclarationBlock::with_one(
|
let pdb = PropertyDeclarationBlock::with_one(
|
||||||
PropertyDeclaration::XLang(SpecifiedLang(ptr.into())),
|
PropertyDeclaration::XLang(SpecifiedLang(unsafe { Atom::from_addrefed(ptr) })),
|
||||||
Importance::Normal
|
Importance::Normal
|
||||||
);
|
);
|
||||||
let arc = Arc::new(global_style_data.shared_lock.wrap(pdb));
|
let arc = Arc::new(global_style_data.shared_lock.wrap(pdb));
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
//! little helpers for `already_AddRefed`.
|
|
||||||
|
|
||||||
use gecko_bindings::structs::already_AddRefed;
|
|
||||||
use std::marker::PhantomData;
|
|
||||||
use std::mem;
|
|
||||||
|
|
||||||
impl<T> already_AddRefed<T> {
|
|
||||||
/// Create an already_AddRefed from an addrefed pointer.
|
|
||||||
#[inline]
|
|
||||||
pub unsafe fn new(ptr: *mut T) -> Option<Self> {
|
|
||||||
if !ptr.is_null() {
|
|
||||||
Some(Self::new_unchecked(ptr))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Create an already_AddRefed from an non-nullable addrefed pointer.
|
|
||||||
#[inline]
|
|
||||||
pub unsafe fn new_unchecked(ptr: *mut T) -> Self {
|
|
||||||
debug_assert!(!ptr.is_null());
|
|
||||||
already_AddRefed {
|
|
||||||
mRawPtr: ptr,
|
|
||||||
_phantom_0: PhantomData,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Take the addrefed pointer from this struct.
|
|
||||||
#[inline]
|
|
||||||
pub fn take(self) -> *mut T {
|
|
||||||
let ptr = self.mRawPtr;
|
|
||||||
mem::forget(self);
|
|
||||||
ptr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(debug_assertions)]
|
|
||||||
impl<T> Drop for already_AddRefed<T> {
|
|
||||||
fn drop(&mut self) {
|
|
||||||
// We really should instead mark already_AddRefed must_use, but
|
|
||||||
// we cannot currently, which is servo/rust-bindgen#710.
|
|
||||||
unreachable!("Destructor shouldn't be called, otherwise we are leaking")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
//! Rust sugar and convenience methods for Gecko types.
|
//! Rust sugar and convenience methods for Gecko types.
|
||||||
|
|
||||||
mod already_addrefed;
|
|
||||||
mod ns_com_ptr;
|
mod ns_com_ptr;
|
||||||
mod ns_compatibility;
|
mod ns_compatibility;
|
||||||
mod ns_css_shadow_array;
|
mod ns_css_shadow_array;
|
||||||
|
|
|
@ -152,7 +152,7 @@ impl nsCSSValue {
|
||||||
|
|
||||||
/// Set to an atom identifier value
|
/// Set to an atom identifier value
|
||||||
pub fn set_atom_ident(&mut self, s: Atom) {
|
pub fn set_atom_ident(&mut self, s: Atom) {
|
||||||
unsafe { bindings::Gecko_CSSValue_SetAtomIdent(self, s.into()) }
|
unsafe { bindings::Gecko_CSSValue_SetAtomIdent(self, s.into_addrefed()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set to a font format
|
/// Set to a font format
|
||||||
|
|
|
@ -10,7 +10,7 @@ use gecko_bindings::bindings::Gecko_AddRefAtom;
|
||||||
use gecko_bindings::bindings::Gecko_Atomize;
|
use gecko_bindings::bindings::Gecko_Atomize;
|
||||||
use gecko_bindings::bindings::Gecko_Atomize16;
|
use gecko_bindings::bindings::Gecko_Atomize16;
|
||||||
use gecko_bindings::bindings::Gecko_ReleaseAtom;
|
use gecko_bindings::bindings::Gecko_ReleaseAtom;
|
||||||
use gecko_bindings::structs::{already_AddRefed, nsIAtom};
|
use gecko_bindings::structs::nsIAtom;
|
||||||
use nsstring::nsAString;
|
use nsstring::nsAString;
|
||||||
use precomputed_hash::PrecomputedHash;
|
use precomputed_hash::PrecomputedHash;
|
||||||
use std::ascii::AsciiExt;
|
use std::ascii::AsciiExt;
|
||||||
|
@ -219,6 +219,24 @@ impl Atom {
|
||||||
atom
|
atom
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates an atom from a dynamic atom pointer that has already had AddRef
|
||||||
|
/// called on it.
|
||||||
|
#[inline]
|
||||||
|
pub unsafe fn from_addrefed(ptr: *mut nsIAtom) -> Self {
|
||||||
|
debug_assert!(!ptr.is_null());
|
||||||
|
unsafe {
|
||||||
|
Atom(WeakAtom::new(ptr))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Convert this atom into an addrefed nsIAtom pointer.
|
||||||
|
#[inline]
|
||||||
|
pub fn into_addrefed(self) -> *mut nsIAtom {
|
||||||
|
let ptr = self.as_ptr();
|
||||||
|
mem::forget(self);
|
||||||
|
ptr
|
||||||
|
}
|
||||||
|
|
||||||
/// Return whether two atoms are ASCII-case-insensitive matches
|
/// Return whether two atoms are ASCII-case-insensitive matches
|
||||||
pub fn eq_ignore_ascii_case(&self, other: &Self) -> bool {
|
pub fn eq_ignore_ascii_case(&self, other: &Self) -> bool {
|
||||||
let a = self.as_slice();
|
let a = self.as_slice();
|
||||||
|
@ -340,19 +358,3 @@ impl From<*mut nsIAtom> for Atom {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<already_AddRefed<nsIAtom>> for Atom {
|
|
||||||
#[inline]
|
|
||||||
fn from(ptr: already_AddRefed<nsIAtom>) -> Atom {
|
|
||||||
unsafe { Atom(WeakAtom::new(ptr.take())) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Atom> for already_AddRefed<nsIAtom> {
|
|
||||||
#[inline]
|
|
||||||
fn from(atom: Atom) -> already_AddRefed<nsIAtom> {
|
|
||||||
let ptr = atom.as_ptr();
|
|
||||||
mem::forget(atom);
|
|
||||||
unsafe { already_AddRefed::new_unchecked(ptr) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -72,7 +72,6 @@ use style::gecko_bindings::structs::Loader;
|
||||||
use style::gecko_bindings::structs::RawGeckoPresContextOwned;
|
use style::gecko_bindings::structs::RawGeckoPresContextOwned;
|
||||||
use style::gecko_bindings::structs::ServoElementSnapshotTable;
|
use style::gecko_bindings::structs::ServoElementSnapshotTable;
|
||||||
use style::gecko_bindings::structs::URLExtraData;
|
use style::gecko_bindings::structs::URLExtraData;
|
||||||
use style::gecko_bindings::structs::already_AddRefed;
|
|
||||||
use style::gecko_bindings::structs::nsCSSValueSharedList;
|
use style::gecko_bindings::structs::nsCSSValueSharedList;
|
||||||
use style::gecko_bindings::structs::nsCompatibility;
|
use style::gecko_bindings::structs::nsCompatibility;
|
||||||
use style::gecko_bindings::structs::nsresult;
|
use style::gecko_bindings::structs::nsresult;
|
||||||
|
@ -1006,10 +1005,9 @@ pub extern "C" fn Servo_KeyframesRule_GetName(rule: RawServoKeyframesRuleBorrowe
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed,
|
pub extern "C" fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed, name: *mut nsIAtom) {
|
||||||
name: already_AddRefed<nsIAtom>) {
|
|
||||||
write_locked_arc(rule, |rule: &mut KeyframesRule| {
|
write_locked_arc(rule, |rule: &mut KeyframesRule| {
|
||||||
rule.name = KeyframesName::Ident(CustomIdent(name.into()));
|
rule.name = KeyframesName::Ident(CustomIdent(unsafe { Atom::from_addrefed(name) }));
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue