2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*
  
						 
					
						
							
								
									
										
										
										
											2021-04-28 22:46:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								 *  Copyright  ( c )  2020 - 2021 ,  the  SerenityOS  developers . 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 17:17:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								 *  Copyright  ( c )  2021 - 2023 ,  Sam  Atkins  < atkinssj @ serenityos . org > 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-22 01:24:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								 *  SPDX - License - Identifier :  BSD - 2 - Clause 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# pragma once 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <AK/Error.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-07-12 17:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <AK/RefPtr.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  <AK/Vector.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/CSSStyleDeclaration.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-03-31 21:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/FontFace.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-11-22 17:27:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/GeneralEnclosed.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-09-29 12:56:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/MediaQuery.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-04-12 14:08:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/Block.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/ComponentValue.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-03-31 14:36:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/Declaration.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/DeclarationOrAtRule.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-04-12 13:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/Function.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:05:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/Rule.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-09-27 16:05:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/TokenStream.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Parser/Tokenizer.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-03-30 14:37:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Position.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-03-25 14:11:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/PropertyID.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-03-06 13:48:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Ratio.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Selector.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-07-18 17:12:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/StyleValue.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-03-24 16:42:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/StyleValues/AbstractImageStyleValue.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-03-30 17:34:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/StyleValues/CalculatedStyleValue.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/Supports.h> 
  
						 
					
						
							
								
									
										
										
											
												LibWeb: Parse `<urange>` as CSS::UnicodeRange
Like, An+B, this is an old construct that does not fit well with modern
CSS syntax, so things get a bit hairy! We have to determine which
tokens match the grammar for `<urange>`, then turn those back into a
string, and then parse the string differently from normal. Thankfully
the spec describes in detail how to do that. :^)
This is not 100% correct, since we are not using the original source
text (referred to in the spec as the "representation") of the tokens,
but just converting them to strings in a manual, ad-hoc way.
Re-engineering the Tokenizer to keep that original text was too much of
a tangent for today. In any case, we do parse `U+4???`, `U+0-100`,
`U+1234`, and similar, so good enough for now!
											 
										 
										
											2022-04-07 17:41:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/CSS/UnicodeRange.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-04-12 11:32:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								# include  <LibWeb/Forward.h> 
  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 12:00:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								namespace  Web : : CSS : : Parser  {  
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								class  ParsingContext  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								public :  
						 
					
						
							
								
									
										
										
										
											2022-09-24 16:34:04 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    explicit  ParsingContext ( JS : : Realm & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-22 20:59:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    explicit  ParsingContext ( DOM : : Document  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:17:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    explicit  ParsingContext ( DOM : : Document  const & ,  AK : : URL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 13:00:29 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    explicit  ParsingContext ( DOM : : ParentNode & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    bool  in_quirks_mode ( )  const ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-22 20:59:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    DOM : : Document  const *  document ( )  const  {  return  m_document ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-13 17:42:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    AK : : URL  complete_url ( StringView )  const ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 20:39:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    PropertyID  current_property_id ( )  const  {  return  m_current_property_id ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    void  set_current_property_id ( PropertyID  property_id )  {  m_current_property_id  =  property_id ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-24 16:34:04 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    JS : : Realm &  realm ( )  const  {  return  m_realm ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 13:14:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								private :  
						 
					
						
							
								
									
										
										
										
											2023-02-26 16:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    JS : : NonnullGCPtr < JS : : Realm >  m_realm ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    JS : : GCPtr < DOM : : Document  const >  m_document ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 20:39:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    PropertyID  m_current_property_id  {  PropertyID : : Invalid  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:17:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    AK : : URL  m_url ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								class  Parser  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								public :  
						 
					
						
							
								
									
										
										
										
											2023-03-06 17:17:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    static  ErrorOr < Parser >  create ( ParsingContext  const & ,  StringView  input ,  StringView  encoding  =  " utf-8 " sv ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Parser ( Parser & & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 13:14:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    CSSStyleSheet *  parse_as_css_stylesheet ( Optional < AK : : URL >  location ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 16:21:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ElementInlineCSSStyleDeclaration *  parse_as_style_attribute ( DOM : : Element & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 15:46:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    CSSRule *  parse_as_css_rule ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:05:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < StyleProperty >  parse_as_supports_condition ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 16:37:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-17 15:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  SelectorParsingMode  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Standard , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // `<forgiving-selector-list>` and `<forgiving-relative-selector-list>`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // are handled with this parameter, not as separate functions.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // https://drafts.csswg.org/selectors/#forgiving-selector
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Forgiving 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 12:34:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    // Contrary to the name, these parse a comma-separated list of selectors, according to the spec.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-17 15:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < SelectorList >  parse_as_selector ( SelectorParsingMode  =  SelectorParsingMode : : Standard ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < SelectorList >  parse_as_relative_selector ( SelectorParsingMode  =  SelectorParsingMode : : Standard ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < NonnullRefPtr < MediaQuery > >  parse_as_media_query_list ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 12:56:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    RefPtr < MediaQuery >  parse_as_media_query ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    RefPtr < Supports >  parse_as_supports ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_as_css_value ( PropertyID ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:48:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    static  ErrorOr < RefPtr < StyleValue > >  parse_css_value ( Badge < StyleComputer > ,  ParsingContext  const & ,  PropertyID ,  Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    static  ErrorOr < RefPtr < CalculatedStyleValue > >  parse_calculated_value ( Badge < StyleComputer > ,  ParsingContext  const & ,  Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 12:32:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-11 16:56:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    CSS : : Length  parse_as_sizes_attribute ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								private :  
						 
					
						
							
								
									
										
										
										
											2023-03-06 17:17:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Parser ( ParsingContext  const & ,  Vector < Token > ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  ParseError  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-12 17:47:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        IncludesIgnoredVendorPrefix , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        InternalError , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-12 17:42:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        SyntaxError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    using  ParseErrorOr  =  ErrorOr < T ,  ParseError > ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-12 17:42:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 14:13:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a stylesheet" is intended to be the normal parser entry point, for parsing stylesheets.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    struct  ParsedStyleSheet  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Optional < AK : : URL >  location ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Vector < NonnullRefPtr < Rule > >  rules ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 14:13:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 14:13:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParsedStyleSheet  parse_a_stylesheet ( TokenStream < T > & ,  Optional < AK : : URL >  location ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 11:36:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a list of rules" is intended for the content of at-rules such as @media. It differs from "Parse a stylesheet" in the handling of <CDO-token> and <CDC-token>.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < NonnullRefPtr < Rule > >  parse_a_list_of_rules ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 11:48:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a rule" is intended for use by the CSSStyleSheet#insertRule method, and similar functions which might exist, which parse text into a single rule.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:05:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    RefPtr < Rule >  parse_a_rule ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 11:48:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:05:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a declaration" is used in @supports conditions. [CSS3-CONDITIONAL]
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 14:36:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Declaration >  parse_a_declaration ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:23:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 16:44:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < DeclarationOrAtRule >  parse_a_style_blocks_contents ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:23:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a list of declarations" is for the contents of a style attribute, which parses text into the contents of a single style rule.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 16:37:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < DeclarationOrAtRule >  parse_a_list_of_declarations ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:32:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // "Parse a component value" is for things that need to consume a single value, like the parsing rules for attr().
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < ComponentValue >  parse_a_component_value ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:39:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								    // "Parse a list of component values" is for the contents of presentational attributes, which parse text into a single declaration’  
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < ComponentValue >  parse_a_list_of_component_values ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 12:39:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:06:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < Vector < ComponentValue > >  parse_a_comma_separated_list_of_component_values ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-17 19:29:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  SelectorType  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Standalone , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Relative 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < SelectorList >  parse_a_selector_list ( TokenStream < T > & ,  SelectorType ,  SelectorParsingMode  =  SelectorParsingMode : : Standard ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-17 19:29:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-29 12:56:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < NonnullRefPtr < MediaQuery > >  parse_a_media_query_list ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    RefPtr < Supports >  parse_a_supports ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 12:03:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Selector : : SimpleSelector : : ANPlusBPattern >  parse_a_n_plus_b_pattern ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 13:46:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  TopLevel  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        No , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Yes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    [ [ nodiscard ] ]  Vector < NonnullRefPtr < Rule > >  consume_a_list_of_rules ( TokenStream < T > & ,  TopLevel ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:05:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    [ [ nodiscard ] ]  NonnullRefPtr < Rule >  consume_an_at_rule ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:05:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    RefPtr < Rule >  consume_a_qualified_rule ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 16:44:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    [ [ nodiscard ] ]  Vector < DeclarationOrAtRule >  consume_a_style_blocks_contents ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    [ [ nodiscard ] ]  Vector < DeclarationOrAtRule >  consume_a_list_of_declarations ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 14:36:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Declaration >  consume_a_declaration ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    [ [ nodiscard ] ]  ComponentValue  consume_a_component_value ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 14:08:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    NonnullRefPtr < Block >  consume_a_simple_block ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 15:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 13:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    NonnullRefPtr < Function >  consume_a_function ( TokenStream < T > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < GeneralEnclosed >  parse_general_enclosed ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 15:46:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    CSSRule *  parse_font_face_rule ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 21:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < FontFace : : Source >  parse_font_face_src ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 20:32:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 15:46:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    CSSRule *  convert_to_rule ( NonnullRefPtr < Rule > ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-10 12:51:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    PropertyOwningCSSStyleDeclaration *  convert_to_style_declaration ( Vector < DeclarationOrAtRule >  const &  declarations ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 14:36:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < StyleProperty >  convert_to_style_property ( Declaration  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-09 16:34:29 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    class  Dimension  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    public : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-22 12:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Angle & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Frequency & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Length & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Percentage & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-22 12:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Resolution & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Dimension ( Time & &  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            :  m_value ( move ( value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_angle ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Angle  angle ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_angle_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        AnglePercentage  angle_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_frequency ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Frequency  frequency ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_frequency_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        FrequencyPercentage  frequency_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_length ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Length  length ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-22 12:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_length_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        LengthPercentage  length_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Percentage  percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-22 12:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_resolution ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Resolution  resolution ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_time ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Time  time ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bool  is_time_percentage ( )  const ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        TimePercentage  time_percentage ( )  const ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    private : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-22 12:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Variant < Angle ,  Frequency ,  Length ,  Percentage ,  Resolution ,  Time >  m_value ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 17:09:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Dimension >  parse_dimension ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-09 19:08:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Color >  parse_rgb_or_hsl_color ( StringView  function_name ,  Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Color >  parse_color ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Length >  parse_length ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Ratio >  parse_ratio ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
											
												LibWeb: Parse `<urange>` as CSS::UnicodeRange
Like, An+B, this is an old construct that does not fit well with modern
CSS syntax, so things get a bit hairy! We have to determine which
tokens match the grammar for `<urange>`, then turn those back into a
string, and then parse the string differently from normal. Thankfully
the spec describes in detail how to do that. :^)
This is not 100% correct, since we are not using the original source
text (referred to in the spec as the "representation") of the tokens,
but just converting them to strings in a manual, ad-hoc way.
Re-engineering the Tokenizer to keep that original text was too much of
a tangent for today. In any case, we do parse `U+4???`, `U+0-100`,
`U+1234`, and similar, so good enough for now!
											 
										 
										
											2022-04-07 17:41:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < UnicodeRange >  parse_unicode_range ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 19:56:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < UnicodeRange >  parse_unicode_range ( StringView ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-30 13:27:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < GridSize >  parse_grid_size ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < GridMinMax >  parse_min_max ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < GridRepeat >  parse_repeat ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < ExplicitGridTrack >  parse_track_sizing_function ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-08 20:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < PositionValue >  parse_position ( TokenStream < ComponentValue > & ,  PositionValue  initial_value  =  PositionValue : : center ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 08:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  AllowedDataUrlType  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Image , 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-14 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        Font , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 08:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < AK : : URL >  parse_url_function ( ComponentValue  const & ,  AllowedDataUrlType  =  AllowedDataUrlType : : None ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_url_value ( ComponentValue  const & ,  AllowedDataUrlType  =  AllowedDataUrlType : : None ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-08 21:33:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Vector < LinearColorStopListElement > >  parse_linear_color_stop_list ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Vector < AngularColorStopListElement > >  parse_angular_color_stop_list ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_linear_gradient_function ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_conic_gradient_function ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_radial_gradient_function ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 00:15:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < NonnullRefPtr < StyleValue > >  parse_css_value ( PropertyID ,  TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-17 17:23:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_css_value_for_property ( PropertyID ,  TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    struct  PropertyAndValue  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        PropertyID  property ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        RefPtr < StyleValue >  style_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < PropertyAndValue >  parse_css_value_for_properties ( ReadonlySpan < PropertyID > ,  TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_builtin_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_dynamic_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < CalculatedStyleValue > >  parse_calculated_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 20:56:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_a_calc_function_node ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-26 11:21:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_min_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-26 15:00:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_max_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-26 15:40:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_clamp_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 22:56:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_abs_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 23:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_sign_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 23:50:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_sin_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 23:57:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_cos_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 00:02:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_tan_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 10:55:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_asin_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:00:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_acos_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:04:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_atan_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:19:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_atan2_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:26:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_pow_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:31:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_sqrt_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:43:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_hypot_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:53:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_log_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 11:58:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_exp_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 16:07:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_round_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 19:03:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_mod_function ( Function  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_dimension_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-01 17:01:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_integer_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_number_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_identifier_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_color_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_rect_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-06 15:42:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_ratio_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_string_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_image_value ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:37:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_paint_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-08 17:19:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    template < typename  ParseFunction > 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_comma_separated_value_list ( Vector < ComponentValue >  const & ,  ParseFunction ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-17 17:31:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_simple_comma_separated_value_list ( PropertyID ,  Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_filter_value_list_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 15:25:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_aspect_ratio_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_background_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_single_background_position_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_single_background_position_x_or_y_value ( TokenStream < ComponentValue > & ,  PropertyID ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_single_background_repeat_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_single_background_size_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_border_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_border_radius_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_border_radius_shorthand_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_content_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_display_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_flex_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_flex_flow_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_font_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-24 16:09:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_font_family_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_list_style_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_overflow_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-29 16:34:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_place_content_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-23 16:59:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    enum  class  AllowInsetKeyword  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        No , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Yes , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_shadow_value ( Vector < ComponentValue >  const & ,  AllowInsetKeyword ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_single_shadow_value ( TokenStream < ComponentValue > & ,  AllowInsetKeyword ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_text_decoration_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_text_decoration_line_value ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_transform_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_transform_origin_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_track_size_list ( Vector < ComponentValue >  const & ,  bool  allow_separate_line_name_blocks  =  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-21 18:08:41 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_auto_track_sizes ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-02 13:03:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_track_size_list_shorthand_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_track_placement ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_track_placement_shorthand_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_template_areas_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_area_shorthand_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-27 02:58:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < RefPtr < StyleValue > >  parse_grid_shorthand_value ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 16:20:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-11 15:48:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ErrorOr < OwnPtr < CalculationNode > >  parse_a_calculation ( Vector < ComponentValue >  const & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < NonnullRefPtr < Selector > >  parse_complex_selector ( TokenStream < ComponentValue > & ,  SelectorType ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < Optional < Selector : : CompoundSelector > >  parse_compound_selector ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Selector : : Combinator >  parse_selector_combinator ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-27 11:04:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < Selector : : SimpleSelector >  parse_attribute_simple_selector ( ComponentValue  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < Selector : : SimpleSelector >  parse_pseudo_simple_selector ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ParseErrorOr < Optional < Selector : : SimpleSelector > >  parse_simple_selector ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 11:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    NonnullRefPtr < MediaQuery >  parse_media_query ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    OwnPtr < MediaCondition >  parse_media_condition ( TokenStream < ComponentValue > & ,  MediaCondition : : AllowOr  allow_or ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < MediaFeature >  parse_media_feature ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < MediaQuery : : MediaType >  parse_media_type ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    OwnPtr < MediaCondition >  parse_media_in_parens ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < MediaFeatureValue >  parse_media_feature_value ( MediaFeatureID ,  TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    OwnPtr < Supports : : Condition >  parse_supports_condition ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Supports : : InParens >  parse_supports_in_parens ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Optional < Supports : : Feature >  parse_supports_feature ( TokenStream < ComponentValue > & ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-08 15:54:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 00:55:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    static  bool  has_ignored_vendor_prefix ( StringView ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 20:32:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    static  bool  is_builtin ( StringView ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-12 16:49:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 16:01:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    struct  PropertiesAndCustomProperties  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Vector < StyleProperty >  properties ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-04 18:02:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								        HashMap < DeprecatedString ,  StyleProperty >  custom_properties ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 16:01:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    PropertiesAndCustomProperties  extract_properties ( Vector < DeclarationOrAtRule >  const & ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-02 20:25:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    ParsingContext  m_context ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Vector < Token >  m_tokens ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-03 14:00:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								    TokenStream < Token >  m_token_stream ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-22 17:41:47 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:48:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								namespace  Web  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 13:14:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								CSS : : CSSStyleSheet *  parse_css_stylesheet ( CSS : : Parser : : ParsingContext  const & ,  StringView ,  Optional < AK : : URL >  location  =  { } ) ;  
						 
					
						
							
								
									
										
										
										
											2022-08-07 16:21:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								CSS : : ElementInlineCSSStyleDeclaration *  parse_css_style_attribute ( CSS : : Parser : : ParsingContext  const & ,  StringView ,  DOM : : Element & ) ;  
						 
					
						
							
								
									
										
										
										
											2023-05-02 15:09:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								ErrorOr < RefPtr < CSS : : StyleValue > >  parse_css_value ( CSS : : Parser : : ParsingContext  const & ,  StringView ,  CSS : : PropertyID  property_id  =  CSS : : PropertyID : : Invalid ) ;  
						 
					
						
							
								
									
										
										
										
											2022-04-12 12:00:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Optional < CSS : : SelectorList >  parse_selector ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2022-08-07 15:46:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								CSS : : CSSRule *  parse_css_rule ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2022-04-12 12:00:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								RefPtr < CSS : : MediaQuery >  parse_media_query ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:17:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Vector < NonnullRefPtr < CSS : : MediaQuery > >  parse_media_query_list ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2022-04-12 12:00:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								RefPtr < CSS : : Supports >  parse_css_supports ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2023-03-06 14:46:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Optional < CSS : : StyleProperty >  parse_css_supports_condition ( CSS : : Parser : : ParsingContext  const & ,  StringView ) ;  
						 
					
						
							
								
									
										
										
										
											2021-07-30 17:48:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								}