@@ -21,6 +21,7 @@ use style::properties::ComputedValues;
2121use style:: properties:: style_structs:: Font ;
2222use style:: values:: GenericAtomIdent ;
2323use style:: values:: computed:: Overflow ;
24+ use style_traits:: ParsingMode ;
2425// use quadtree_rs::Quadtree;
2526use crate :: net:: { Resource , StylesheetLoader } ;
2627use selectors:: { Element , matching:: QuirksMode } ;
@@ -38,9 +39,12 @@ use style::servo_arc::Arc as ServoArc;
3839use style:: {
3940 dom:: { TDocument , TNode } ,
4041 media_queries:: { Device , MediaList } ,
42+ parser:: ParserContext ,
4143 selector_parser:: SnapshotMap ,
4244 shared_lock:: { SharedRwLock , StylesheetGuards } ,
43- stylesheets:: { AllowImportRules , DocumentStyleSheet , Origin , Stylesheet , UrlExtraData } ,
45+ stylesheets:: {
46+ AllowImportRules , CssRuleType , DocumentStyleSheet , Origin , Stylesheet , UrlExtraData ,
47+ } ,
4448 stylist:: Stylist ,
4549} ;
4650use taffy:: AvailableSpace ;
@@ -1221,6 +1225,46 @@ impl BaseDocument {
12211225 ) ;
12221226 chain
12231227 }
1228+
1229+ pub fn maybe_load_node_resource ( & self , target_id : usize ) {
1230+ let Some ( node) = self . get_node ( target_id) else {
1231+ return ;
1232+ } ;
1233+
1234+ let NodeData :: Element ( el) = & node. data else {
1235+ return ;
1236+ } ;
1237+
1238+ if el. name . local . as_ref ( ) == "img" {
1239+ self . load_image ( target_id) ;
1240+ }
1241+ }
1242+
1243+ /// https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia
1244+ pub fn match_media ( & self , media_query_string : & str ) -> bool {
1245+ let mut input = cssparser:: ParserInput :: new ( media_query_string) ;
1246+ let mut parser = cssparser:: Parser :: new ( & mut input) ;
1247+
1248+ let url_data = UrlExtraData :: from (
1249+ self . base_url
1250+ . clone ( )
1251+ . unwrap_or_else ( || "about:blank" . parse :: < Url > ( ) . unwrap ( ) ) ,
1252+ ) ;
1253+ let quirks_mode = self . stylist . quirks_mode ( ) ;
1254+ let context = ParserContext :: new (
1255+ Origin :: Author ,
1256+ & url_data,
1257+ Some ( CssRuleType :: Style ) ,
1258+ ParsingMode :: all ( ) ,
1259+ quirks_mode,
1260+ Default :: default ( ) ,
1261+ None ,
1262+ None ,
1263+ ) ;
1264+
1265+ let media_list = MediaList :: parse ( & context, & mut parser) ;
1266+ media_list. evaluate ( self . stylist . device ( ) , quirks_mode)
1267+ }
12241268}
12251269
12261270impl AsRef < BaseDocument > for BaseDocument {
0 commit comments