mirror of
https://github.com/servo/servo.git
synced 2025-08-14 01:45:33 +01:00
Add insertRule/deleteRule support for stylo
This commit is contained in:
parent
22c8df150a
commit
bddd467c0e
4 changed files with 54 additions and 3 deletions
|
@ -43,6 +43,7 @@ use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t;
|
|||
use style::gecko_bindings::structs;
|
||||
use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom};
|
||||
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint};
|
||||
use style::gecko_bindings::structs::nsresult;
|
||||
use style::gecko_bindings::sugar::ownership::{FFIArcHelpers, HasArcFFI, HasBoxFFI};
|
||||
use style::gecko_bindings::sugar::ownership::{HasSimpleFFI, Strong};
|
||||
use style::gecko_bindings::sugar::refptr::{GeckoArcPrincipal, GeckoArcURI};
|
||||
|
@ -332,6 +333,31 @@ pub extern "C" fn Servo_CssRules_GetStyleRuleAt(rules: ServoCssRulesBorrowed, in
|
|||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_CssRules_InsertRule(rules: ServoCssRulesBorrowed, sheet: RawServoStyleSheetBorrowed,
|
||||
rule: *const nsACString, index: u32, nested: bool,
|
||||
rule_type: *mut u16) -> nsresult {
|
||||
let rules = RwLock::<CssRules>::as_arc(&rules);
|
||||
let sheet = Stylesheet::as_arc(&sheet);
|
||||
let rule = unsafe { rule.as_ref().unwrap().as_str_unchecked() };
|
||||
match rules.write().insert_rule(rule, sheet, index as usize, nested) {
|
||||
Ok(new_rule) => {
|
||||
*unsafe { rule_type.as_mut().unwrap() } = new_rule.rule_type() as u16;
|
||||
nsresult::NS_OK
|
||||
}
|
||||
Err(err) => err.into()
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_CssRules_DeleteRule(rules: ServoCssRulesBorrowed, index: u32) -> nsresult {
|
||||
let rules = RwLock::<CssRules>::as_arc(&rules);
|
||||
match rules.write().remove_rule(index as usize) {
|
||||
Ok(_) => nsresult::NS_OK,
|
||||
Err(err) => err.into()
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_CssRules_AddRef(rules: ServoCssRulesBorrowed) -> () {
|
||||
unsafe { RwLock::<CssRules>::addref(rules) };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue