| 
									
										
										
										
											2023-03-21 06:52:29 -04:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-27 15:54:11 -06:00
										 |  |  | #include <AK/HashMap.h>
 | 
					
						
							|  |  |  | #include <AK/String.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-21 06:52:29 -04:00
										 |  |  | namespace Web::HTML::TokenizedFeature { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TOKENIZED_FEATURE(Feature) \
 | 
					
						
							|  |  |  |     enum class Feature {           \ | 
					
						
							|  |  |  |         Yes,                       \ | 
					
						
							|  |  |  |         No,                        \ | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-21 07:22:10 -04:00
										 |  |  | TOKENIZED_FEATURE(Location); | 
					
						
							|  |  |  | TOKENIZED_FEATURE(Menubar); | 
					
						
							| 
									
										
										
										
											2023-03-21 06:52:29 -04:00
										 |  |  | TOKENIZED_FEATURE(NoOpener); | 
					
						
							| 
									
										
										
										
											2023-03-21 06:58:09 -04:00
										 |  |  | TOKENIZED_FEATURE(NoReferrer); | 
					
						
							| 
									
										
										
										
											2023-03-21 07:22:10 -04:00
										 |  |  | TOKENIZED_FEATURE(Popup); | 
					
						
							|  |  |  | TOKENIZED_FEATURE(Resizable); | 
					
						
							|  |  |  | TOKENIZED_FEATURE(Scrollbars); | 
					
						
							|  |  |  | TOKENIZED_FEATURE(Status); | 
					
						
							|  |  |  | TOKENIZED_FEATURE(Toolbar); | 
					
						
							| 
									
										
										
										
											2023-03-21 06:52:29 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-27 15:54:11 -06:00
										 |  |  | using Map = OrderedHashMap<String, String>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::HTML { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TokenizedFeature::Map tokenize_open_features(StringView features); | 
					
						
							|  |  |  | TokenizedFeature::Popup check_if_a_popup_window_is_requested(TokenizedFeature::Map const&); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template<Enum T> | 
					
						
							|  |  |  | T parse_boolean_feature(StringView value); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-21 06:52:29 -04:00
										 |  |  | } |