mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:32:44 +00:00 
			
		
		
		
	 d8ccc2d54e
			
		
	
	
		d8ccc2d54e
		
	
	
	
	
		
			
			The "browsing context container" concept in the HTML spec has been replaced with "navigable container". Renaming this is the first step of many towards implementing the new world. Co-authored-by: Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibWeb/HTML/HTMLElement.h>
 | |
| 
 | |
| namespace Web::HTML {
 | |
| 
 | |
| class NavigableContainer : public HTMLElement {
 | |
|     WEB_PLATFORM_OBJECT(NavigableContainer, HTMLElement);
 | |
| 
 | |
| public:
 | |
|     virtual ~NavigableContainer() override;
 | |
| 
 | |
|     static HashTable<NavigableContainer*>& all_instances();
 | |
| 
 | |
|     BrowsingContext* nested_browsing_context() { return m_nested_browsing_context; }
 | |
|     BrowsingContext const* nested_browsing_context() const { return m_nested_browsing_context; }
 | |
| 
 | |
|     const DOM::Document* content_document() const;
 | |
|     DOM::Document const* content_document_without_origin_check() const;
 | |
| 
 | |
|     HTML::WindowProxy* content_window();
 | |
| 
 | |
|     DOM::Document const* get_svg_document() const;
 | |
| 
 | |
| protected:
 | |
|     NavigableContainer(DOM::Document&, DOM::QualifiedName);
 | |
| 
 | |
|     virtual void visit_edges(Cell::Visitor&) override;
 | |
| 
 | |
|     // https://html.spec.whatwg.org/multipage/iframe-embed-object.html#shared-attribute-processing-steps-for-iframe-and-frame-elements
 | |
|     void shared_attribute_processing_steps_for_iframe_and_frame(bool initial_insertion);
 | |
| 
 | |
|     // https://html.spec.whatwg.org/multipage/iframe-embed-object.html#navigate-an-iframe-or-frame
 | |
|     void navigate_an_iframe_or_frame(JS::NonnullGCPtr<Fetch::Infrastructure::Request>);
 | |
| 
 | |
|     void create_new_nested_browsing_context();
 | |
| 
 | |
|     JS::GCPtr<BrowsingContext> m_nested_browsing_context;
 | |
| 
 | |
| private:
 | |
|     virtual bool is_navigable_container() const override { return true; }
 | |
| };
 | |
| 
 | |
| }
 | |
| 
 | |
| namespace Web::DOM {
 | |
| template<>
 | |
| inline bool Node::fast_is<HTML::NavigableContainer>() const { return is_navigable_container(); }
 | |
| }
 |