mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Define Gecko CounterStyle and FontFaceRule clone functions.
This commit is contained in:
parent
3616b8f0c3
commit
78ce522eed
5 changed files with 60 additions and 2 deletions
|
@ -1420,6 +1420,10 @@ extern "C" {
|
||||||
pub fn Gecko_CSSFontFaceRule_Create(line: u32, column: u32)
|
pub fn Gecko_CSSFontFaceRule_Create(line: u32, column: u32)
|
||||||
-> *mut nsCSSFontFaceRule;
|
-> *mut nsCSSFontFaceRule;
|
||||||
}
|
}
|
||||||
|
extern "C" {
|
||||||
|
pub fn Gecko_CSSFontFaceRule_Clone(rule: *const nsCSSFontFaceRule)
|
||||||
|
-> *mut nsCSSFontFaceRule;
|
||||||
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_CSSFontFaceRule_GetCssText(rule: *const nsCSSFontFaceRule,
|
pub fn Gecko_CSSFontFaceRule_GetCssText(rule: *const nsCSSFontFaceRule,
|
||||||
result: *mut nsAString);
|
result: *mut nsAString);
|
||||||
|
@ -1434,6 +1438,10 @@ extern "C" {
|
||||||
pub fn Gecko_CSSCounterStyle_Create(name: *mut nsIAtom)
|
pub fn Gecko_CSSCounterStyle_Create(name: *mut nsIAtom)
|
||||||
-> *mut nsCSSCounterStyleRule;
|
-> *mut nsCSSCounterStyleRule;
|
||||||
}
|
}
|
||||||
|
extern "C" {
|
||||||
|
pub fn Gecko_CSSCounterStyle_Clone(rule: *const nsCSSCounterStyleRule)
|
||||||
|
-> *mut nsCSSCounterStyleRule;
|
||||||
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_CSSCounterStyle_GetCssText(rule:
|
pub fn Gecko_CSSCounterStyle_GetCssText(rule:
|
||||||
*const nsCSSCounterStyleRule,
|
*const nsCSSCounterStyleRule,
|
||||||
|
|
|
@ -150,6 +150,18 @@ impl ToNsCssValue for FontDisplay {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FontFaceRule {
|
||||||
|
/// Ask Gecko to deep clone the nsCSSFontFaceRule, and then construct
|
||||||
|
/// a FontFaceRule object from it.
|
||||||
|
pub fn deep_clone_from_gecko(&self) -> FontFaceRule {
|
||||||
|
let result = unsafe {
|
||||||
|
UniqueRefPtr::from_addrefed(
|
||||||
|
bindings::Gecko_CSSFontFaceRule_Clone(self.get()))
|
||||||
|
};
|
||||||
|
result.get()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<FontFaceRuleData> for FontFaceRule {
|
impl From<FontFaceRuleData> for FontFaceRule {
|
||||||
fn from(data: FontFaceRuleData) -> FontFaceRule {
|
fn from(data: FontFaceRuleData) -> FontFaceRule {
|
||||||
let mut result = unsafe {
|
let mut result = unsafe {
|
||||||
|
@ -176,6 +188,18 @@ impl ToCssWithGuard for FontFaceRule {
|
||||||
/// A @counter-style rule
|
/// A @counter-style rule
|
||||||
pub type CounterStyleRule = RefPtr<nsCSSCounterStyleRule>;
|
pub type CounterStyleRule = RefPtr<nsCSSCounterStyleRule>;
|
||||||
|
|
||||||
|
impl CounterStyleRule {
|
||||||
|
/// Ask Gecko to deep clone the nsCSSCounterStyleRule, and then construct
|
||||||
|
/// a CounterStyleRule object from it.
|
||||||
|
pub fn deep_clone_from_gecko(&self) -> CounterStyleRule {
|
||||||
|
let result = unsafe {
|
||||||
|
UniqueRefPtr::from_addrefed(
|
||||||
|
bindings::Gecko_CSSCounterStyle_Clone(self.get()))
|
||||||
|
};
|
||||||
|
result.get()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<counter_style::CounterStyleRuleData> for CounterStyleRule {
|
impl From<counter_style::CounterStyleRuleData> for CounterStyleRule {
|
||||||
fn from(data: counter_style::CounterStyleRuleData) -> CounterStyleRule {
|
fn from(data: counter_style::CounterStyleRuleData) -> CounterStyleRule {
|
||||||
let mut result = unsafe {
|
let mut result = unsafe {
|
||||||
|
|
|
@ -10,3 +10,15 @@
|
||||||
pub use counter_style::CounterStyleRuleData as CounterStyleRule;
|
pub use counter_style::CounterStyleRuleData as CounterStyleRule;
|
||||||
#[cfg(feature = "gecko")]
|
#[cfg(feature = "gecko")]
|
||||||
pub use gecko::rules::CounterStyleRule;
|
pub use gecko::rules::CounterStyleRule;
|
||||||
|
|
||||||
|
impl CounterStyleRule {
|
||||||
|
#[cfg(feature = "servo")]
|
||||||
|
pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
|
||||||
|
self.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "gecko")]
|
||||||
|
pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
|
||||||
|
self.deep_clone_from_gecko()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -10,3 +10,15 @@
|
||||||
pub use font_face::FontFaceRuleData as FontFaceRule;
|
pub use font_face::FontFaceRuleData as FontFaceRule;
|
||||||
#[cfg(feature = "gecko")]
|
#[cfg(feature = "gecko")]
|
||||||
pub use gecko::rules::FontFaceRule;
|
pub use gecko::rules::FontFaceRule;
|
||||||
|
|
||||||
|
impl FontFaceRule {
|
||||||
|
#[cfg(feature = "servo")]
|
||||||
|
pub fn clone_conditionally_gecko_or_servo(&self) -> FontFaceRule {
|
||||||
|
self.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "gecko")]
|
||||||
|
pub fn clone_conditionally_gecko_or_servo(&self) -> FontFaceRule {
|
||||||
|
self.deep_clone_from_gecko()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -289,11 +289,13 @@ impl DeepCloneWithLock for CssRule {
|
||||||
},
|
},
|
||||||
CssRule::FontFace(ref arc) => {
|
CssRule::FontFace(ref arc) => {
|
||||||
let rule = arc.read_with(guard);
|
let rule = arc.read_with(guard);
|
||||||
CssRule::FontFace(Arc::new(lock.wrap(rule.clone())))
|
CssRule::FontFace(Arc::new(lock.wrap(
|
||||||
|
rule.clone_conditionally_gecko_or_servo())))
|
||||||
},
|
},
|
||||||
CssRule::CounterStyle(ref arc) => {
|
CssRule::CounterStyle(ref arc) => {
|
||||||
let rule = arc.read_with(guard);
|
let rule = arc.read_with(guard);
|
||||||
CssRule::CounterStyle(Arc::new(lock.wrap(rule.clone())))
|
CssRule::CounterStyle(Arc::new(lock.wrap(
|
||||||
|
rule.clone_conditionally_gecko_or_servo())))
|
||||||
},
|
},
|
||||||
CssRule::Viewport(ref arc) => {
|
CssRule::Viewport(ref arc) => {
|
||||||
let rule = arc.read_with(guard);
|
let rule = arc.read_with(guard);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue