diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index d9830844bb8..f87b8c1487e 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -6,7 +6,7 @@ use cssparser::{Parser, ParserInput}; use cssparser::ToCss as ParserToCss; use env_logger::LogBuilder; use malloc_size_of::MallocSizeOfOps; -use selectors::Element; +use selectors::{self, Element}; use selectors::matching::{MatchingContext, MatchingMode, matches_selector}; use servo_arc::{Arc, ArcBorrow, RawOffsetArc}; use std::cell::RefCell; @@ -1522,6 +1522,22 @@ pub extern "C" fn Servo_StyleRule_SelectorMatchesElement(rule: RawServoStyleRule }) } +#[no_mangle] +pub unsafe extern "C" fn Servo_SelectorList_Matches( + element: RawGeckoElementBorrowed, + selectors: &::selectors::SelectorList, +) -> bool { + let element = GeckoElement(element); + let mut context = MatchingContext::new( + MatchingMode::Normal, + None, + None, + element.owner_document_quirks_mode(), + ); + + selectors::matching::matches_selector_list(selectors, &element, &mut context) +} + #[no_mangle] pub extern "C" fn Servo_ImportRule_GetHref(rule: RawServoImportRuleBorrowed, result: *mut nsAString) { read_locked_arc(rule, |rule: &ImportRule| { @@ -4104,7 +4120,9 @@ pub extern "C" fn Servo_CorruptRuleHashAndCrash(set: RawServoStyleSetBorrowed, i } #[no_mangle] -pub unsafe extern "C" fn Servo_SelectorList_Parse(selector_list: *const nsACString) -> *mut ::selectors::SelectorList { +pub unsafe extern "C" fn Servo_SelectorList_Parse( + selector_list: *const nsACString, +) -> *mut ::selectors::SelectorList { use style::selector_parser::SelectorParser; debug_assert!(!selector_list.is_null());