@@ -3457,38 +3457,48 @@ pub extern "C" fn Servo_ContainerRule_GetConditionText(
34573457}
34583458
34593459#[ no_mangle]
3460- pub extern "C" fn Servo_ContainerRule_GetContainerQuery (
3460+ pub extern "C" fn Servo_ContainerRule_GetConditionsLength ( rule : & ContainerRule ) -> usize {
3461+ rule. conditions . 0 . len ( )
3462+ }
3463+
3464+ #[ no_mangle]
3465+ pub extern "C" fn Servo_ContainerRule_GetContainerName (
34613466 rule : & ContainerRule ,
3467+ i : usize ,
34623468 result : & mut nsACString ,
34633469) {
3464- if let Some ( condition) = rule. conditions . 0 . first ( ) . and_then ( |c| c. query_condition ( ) ) {
3465- condition. to_css ( & mut CssWriter :: new ( result) ) . unwrap ( ) ;
3470+ if let Some ( condition) = rule. conditions . 0 . get ( i) {
3471+ let name = condition. name ( ) ;
3472+ if !name. is_none ( ) {
3473+ name. to_css ( & mut CssWriter :: new ( result) ) . unwrap ( ) ;
3474+ }
34663475 }
34673476}
34683477
34693478#[ no_mangle]
3470- pub extern "C" fn Servo_ContainerRule_QueryContainerFor (
3479+ pub extern "C" fn Servo_ContainerRule_GetContainerQuery (
34713480 rule : & ContainerRule ,
3472- element : & RawGeckoElement ,
3473- ) -> * const RawGeckoElement {
3474- debug_assert_eq ! ( rule. conditions. 0 . len( ) , 1 ) ;
3475- let condition = rule. conditions . 0 . first ( ) . unwrap ( ) ;
3476- condition
3477- . find_container ( GeckoElement ( element) , None )
3478- . map_or ( ptr:: null ( ) , |result| result. element . 0 )
3481+ i : usize ,
3482+ result : & mut nsACString ,
3483+ ) {
3484+ if let Some ( condition) = rule. conditions . 0 . get ( i) {
3485+ if let Some ( condition) = condition. query_condition ( ) {
3486+ condition. to_css ( & mut CssWriter :: new ( result) ) . unwrap ( ) ;
3487+ }
3488+ }
34793489}
34803490
34813491#[ no_mangle]
3482- pub extern "C" fn Servo_ContainerRule_GetContainerName (
3492+ pub extern "C" fn Servo_ContainerRule_QueryContainerFor (
34833493 rule : & ContainerRule ,
3484- result : & mut nsACString ,
3485- ) {
3486- if let Some ( condition) = rule. conditions . 0 . first ( ) {
3487- let name = condition. name ( ) ;
3488- if !name. is_none ( ) {
3489- name. to_css ( & mut CssWriter :: new ( result) ) . unwrap ( ) ;
3494+ element : & RawGeckoElement ,
3495+ ) -> * const RawGeckoElement {
3496+ for condition in rule. conditions . 0 . iter ( ) {
3497+ if let Some ( result) = condition. find_container ( GeckoElement ( element) , None ) {
3498+ return result. element . 0 ;
34903499 }
34913500 }
3501+ ptr:: null ( )
34923502}
34933503
34943504#[ no_mangle]
0 commit comments