geckolib: Add FFI function to parse a @counter-style name.
draft
geckolib: Add FFI function to parse a @counter-style name.
MozReview-Commit-ID: Eh97DnL88gK
--- a/servo/ports/geckolib/glue.rs
+++ b/servo/ports/geckolib/glue.rs
@@ -13,16 +13,17 @@ use std::cell::RefCell;
use std::env;
use std::fmt::Write;
use std::iter;
use std::mem;
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;
use style::element_state::{DocumentState, ElementState};
use style::error_reporting::{NullReporter, ParseErrorReporter};
use style::font_metrics::{FontMetricsProvider, get_metrics_provider_for_product};
use style::gecko::data::{GeckoStyleSheet, PerDocumentStyleData, PerDocumentStyleDataImpl};
use style::gecko::global_style_data::{GLOBAL_STYLE_DATA, GlobalStyleData, STYLE_THREAD_POOL};
@@ -4685,8 +4686,20 @@ pub unsafe extern "C" fn Servo_SourceSiz
result.0
}
#[no_mangle]
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);
+ match Parser::new(&mut input).parse_entirely(counter_style::parse_counter_style_name) {
+ Ok(name) => name.0.into_addrefed(),
+ Err(_) => ptr::null_mut(),
+ }
+}