mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 06:22:46 +00:00 
			
		
		
		
	 ee3a73ddbb
			
		
	
	
		ee3a73ddbb
		
	
	
	
	
		
			
			This makes it much clearer what this cast actually does: it will VERIFY that the thing we're casting is a T (using is<T>()).
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
 | |
|  * Copyright (c) 2021, the SerenityOS developers.
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <AK/StringBuilder.h>
 | |
| #include <LibWeb/DOM/Document.h>
 | |
| #include <LibWeb/DOM/Text.h>
 | |
| #include <LibWeb/HTML/HTMLStyleElement.h>
 | |
| 
 | |
| namespace Web::HTML {
 | |
| 
 | |
| HTMLStyleElement::HTMLStyleElement(DOM::Document& document, QualifiedName qualified_name)
 | |
|     : HTMLElement(document, move(qualified_name))
 | |
|     , m_css_loader(*this)
 | |
| {
 | |
|     m_css_loader.on_load = [&] {
 | |
|         document.update_style();
 | |
|     };
 | |
| }
 | |
| 
 | |
| HTMLStyleElement::~HTMLStyleElement()
 | |
| {
 | |
| }
 | |
| 
 | |
| void HTMLStyleElement::children_changed()
 | |
| {
 | |
|     StringBuilder builder;
 | |
|     for_each_child([&](auto& child) {
 | |
|         if (is<DOM::Text>(child))
 | |
|             builder.append(verify_cast<DOM::Text>(child).text_content());
 | |
|     });
 | |
|     m_css_loader.load_from_text(builder.to_string());
 | |
| 
 | |
|     if (auto sheet = m_css_loader.style_sheet())
 | |
|         document().style_sheets().add_sheet(sheet.release_nonnull());
 | |
| 
 | |
|     HTMLElement::children_changed();
 | |
| }
 | |
| 
 | |
| void HTMLStyleElement::removed_from(Node* old_parent)
 | |
| {
 | |
|     if (m_css_loader.style_sheet()) {
 | |
|         // FIXME: Remove the sheet from the document
 | |
|     }
 | |
|     return HTMLElement::removed_from(old_parent);
 | |
| }
 | |
| 
 | |
| }
 |