aboutsummaryrefslogtreecommitdiffstats
path: root/ports
diff options
context:
space:
mode:
authorCameron McCormack <cam@mcc.id.au>2017-11-24 15:51:43 +0800
committerCameron McCormack <cam@mcc.id.au>2017-12-05 10:04:52 +0800
commit374f0091c1487b9c0c44e096a301379701711c58 (patch)
treea083b5369eeef33fd665bb7e4aa3a49ecc858bdb /ports
parent1e0b216ea084ff597c63fd1b6179994b7b67ba6c (diff)
downloadservo-374f0091c1487b9c0c44e096a301379701711c58.tar.gz
servo-374f0091c1487b9c0c44e096a301379701711c58.zip
geckolib: Add FFI function to parse a @counter-style name.
Diffstat (limited to 'ports')
-rw-r--r--ports/geckolib/glue.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs
index 3a1af21f726..e9ef9d8104f 100644
--- a/ports/geckolib/glue.rs
+++ b/ports/geckolib/glue.rs
@@ -18,6 +18,7 @@ use std::ptr;
use style::applicable_declarations::ApplicableDeclarationBlock;
use style::context::{CascadeInputs, QuirksMode, SharedStyleContext, StyleContext};
use style::context::ThreadLocalStyleContext;
+use style::counter_style;
use style::data::{ElementStyles, self};
use style::dom::{ShowSubtreeData, TDocument, TElement, TNode};
use style::driver;
@@ -4735,3 +4736,16 @@ pub unsafe extern "C" fn Servo_SourceSizeList_Evaluate(
pub unsafe extern "C" fn Servo_SourceSizeList_Drop(list: RawServoSourceSizeListOwned) {
let _ = list.into_box::<SourceSizeList>();
}
+
+#[no_mangle]
+pub extern "C" fn Servo_ParseCounterStyleName(
+ value: *const nsACString,
+) -> *mut nsAtom {
+ let value = unsafe { value.as_ref().unwrap().as_str_unchecked() };
+ let mut input = ParserInput::new(&value);
+ let mut parser = Parser::new(&mut input);
+ match parser.parse_entirely(counter_style::parse_counter_style_name_definition) {
+ Ok(name) => name.0.into_addrefed(),
+ Err(_) => ptr::null_mut(),
+ }
+}