mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +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)
|
||||
-> *mut nsCSSFontFaceRule;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Gecko_CSSFontFaceRule_Clone(rule: *const nsCSSFontFaceRule)
|
||||
-> *mut nsCSSFontFaceRule;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Gecko_CSSFontFaceRule_GetCssText(rule: *const nsCSSFontFaceRule,
|
||||
result: *mut nsAString);
|
||||
|
@ -1434,6 +1438,10 @@ extern "C" {
|
|||
pub fn Gecko_CSSCounterStyle_Create(name: *mut nsIAtom)
|
||||
-> *mut nsCSSCounterStyleRule;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Gecko_CSSCounterStyle_Clone(rule: *const nsCSSCounterStyleRule)
|
||||
-> *mut nsCSSCounterStyleRule;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn Gecko_CSSCounterStyle_GetCssText(rule:
|
||||
*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 {
|
||||
fn from(data: FontFaceRuleData) -> FontFaceRule {
|
||||
let mut result = unsafe {
|
||||
|
@ -176,6 +188,18 @@ impl ToCssWithGuard for FontFaceRule {
|
|||
/// A @counter-style rule
|
||||
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 {
|
||||
fn from(data: counter_style::CounterStyleRuleData) -> CounterStyleRule {
|
||||
let mut result = unsafe {
|
||||
|
|
|
@ -10,3 +10,15 @@
|
|||
pub use counter_style::CounterStyleRuleData as CounterStyleRule;
|
||||
#[cfg(feature = "gecko")]
|
||||
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;
|
||||
#[cfg(feature = "gecko")]
|
||||
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) => {
|
||||
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) => {
|
||||
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) => {
|
||||
let rule = arc.read_with(guard);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue