| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2024-10-04 13:19:50 +02:00
										 |  |  |  * Copyright (c) 2018-2022, Andreas Kling <andreas@ladybird.org> | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  |  * Copyright (c) 2020-2021, the SerenityOS developers. | 
					
						
							|  |  |  |  * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org> | 
					
						
							|  |  |  |  * Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org> | 
					
						
							|  |  |  |  * Copyright (c) 2022, MacDue <macdue@dueutil.tech> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibWeb/CSS/Parser/Parser.h>
 | 
					
						
							|  |  |  | #include <LibWeb/DOM/Document.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::CSS::Parser { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-05 10:41:19 +00:00
										 |  |  | ParsingContext::ParsingContext(Mode mode) | 
					
						
							|  |  |  |     : m_mode(mode) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  | ParsingContext::ParsingContext(JS::Realm& realm, Mode mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  |     : m_realm(realm) | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  |     , m_mode(mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-15 14:56:14 -06:00
										 |  |  | ParsingContext::ParsingContext(JS::Realm& realm, URL::URL url, Mode mode) | 
					
						
							|  |  |  |     : m_realm(realm) | 
					
						
							|  |  |  |     , m_url(move(url)) | 
					
						
							|  |  |  |     , m_mode(mode) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-18 16:22:27 +13:00
										 |  |  | ParsingContext::ParsingContext(DOM::Document const& document, URL::URL url, Mode mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  |     : m_realm(const_cast<JS::Realm&>(document.realm())) | 
					
						
							|  |  |  |     , m_document(&document) | 
					
						
							|  |  |  |     , m_url(move(url)) | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  |     , m_mode(mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  | ParsingContext::ParsingContext(DOM::Document const& document, Mode mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  |     : m_realm(const_cast<JS::Realm&>(document.realm())) | 
					
						
							|  |  |  |     , m_document(&document) | 
					
						
							|  |  |  |     , m_url(document.url()) | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  |     , m_mode(mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  | ParsingContext::ParsingContext(DOM::ParentNode& parent_node, Mode mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  |     : m_realm(parent_node.realm()) | 
					
						
							|  |  |  |     , m_document(&parent_node.document()) | 
					
						
							|  |  |  |     , m_url(parent_node.document().url()) | 
					
						
							| 
									
										
										
										
											2023-09-25 15:26:33 +01:00
										 |  |  |     , m_mode(mode) | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool ParsingContext::in_quirks_mode() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return m_document ? m_document->in_quirks_mode() : false; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // https://www.w3.org/TR/css-values-4/#relative-urls
 | 
					
						
							| 
									
										
										
										
											2024-03-18 16:22:27 +13:00
										 |  |  | URL::URL ParsingContext::complete_url(StringView relative_url) const | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | { | 
					
						
							|  |  |  |     return m_url.complete_url(relative_url); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HTML::Window const* ParsingContext::window() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2024-03-10 08:41:18 +01:00
										 |  |  |     if (!m_document) | 
					
						
							|  |  |  |         return nullptr; | 
					
						
							|  |  |  |     return m_document->window(); | 
					
						
							| 
									
										
										
										
											2023-07-09 11:40:17 +03:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |