| 
									
										
										
										
											2023-01-14 19:00:42 +05:30
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2023, Srikavin Ramkumar <me@srikavin.me> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibWeb/HTML/CORSSettingAttribute.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::HTML { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes
 | 
					
						
							|  |  |  | CORSSettingAttribute cors_setting_attribute_from_keyword(Optional<String> const& keyword) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (!keyword.has_value()) { | 
					
						
							|  |  |  |         // its missing value default is the No CORS state
 | 
					
						
							|  |  |  |         return CORSSettingAttribute::NoCORS; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (keyword->bytes_as_string_view().equals_ignoring_ascii_case("use-credentials"sv)) { | 
					
						
							|  |  |  |         return CORSSettingAttribute::UseCredentials; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // The attribute's invalid value default is the Anonymous state
 | 
					
						
							|  |  |  |     return CORSSettingAttribute::Anonymous; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-10 16:24:52 -04:00
										 |  |  | // https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attribute-credentials-mode
 | 
					
						
							|  |  |  | Fetch::Infrastructure::Request::CredentialsMode cors_settings_attribute_credentials_mode(CORSSettingAttribute attribute) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     switch (attribute) { | 
					
						
							|  |  |  |     // -> No CORS
 | 
					
						
							|  |  |  |     // -> Anonymous
 | 
					
						
							|  |  |  |     case CORSSettingAttribute::NoCORS: | 
					
						
							|  |  |  |     case CORSSettingAttribute::Anonymous: | 
					
						
							|  |  |  |         // "same-origin"
 | 
					
						
							|  |  |  |         return Fetch::Infrastructure::Request::CredentialsMode::SameOrigin; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // -> Use Credentials
 | 
					
						
							|  |  |  |     case CORSSettingAttribute::UseCredentials: | 
					
						
							|  |  |  |         // "include"
 | 
					
						
							|  |  |  |         return Fetch::Infrastructure::Request::CredentialsMode::Include; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     VERIFY_NOT_REACHED(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-14 19:00:42 +05:30
										 |  |  | } |