mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:22:45 +00:00 
			
		
		
		
	LibWeb: Make Frame point weakly to Page
This patch makes Page weakable and allows page-less frames to exist. Page is single-owner, and Frame is multiple-owner, so it's not sound for Frame to assume its containing Page will stick around for its own entire lifetime. Fixes #3976.
This commit is contained in:
		
							parent
							
								
									e445ff670d
								
							
						
					
					
						commit
						81add73955
					
				
					 12 changed files with 87 additions and 56 deletions
				
			
		|  | @ -105,7 +105,8 @@ void HTMLFormElement::submit(RefPtr<HTMLInputElement> submitter) | |||
|         request.set_body(body); | ||||
|     } | ||||
| 
 | ||||
|     document().frame()->page().load(request); | ||||
|     if (auto* page = document().page()) | ||||
|         page->load(request); | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -62,9 +62,9 @@ void HTMLInputElement::did_click_button(Badge<LayoutButton>) | |||
| 
 | ||||
| RefPtr<LayoutNode> HTMLInputElement::create_layout_node(const CSS::StyleProperties* parent_style) | ||||
| { | ||||
|     ASSERT(document().frame()); | ||||
|     auto& frame = *document().frame(); | ||||
|     auto& page_view = const_cast<InProcessWebView&>(static_cast<const InProcessWebView&>(frame.page().client())); | ||||
|     ASSERT(document().page()); | ||||
|     auto& page = *document().page(); | ||||
|     auto& page_view = const_cast<InProcessWebView&>(static_cast<const InProcessWebView&>(page.client())); | ||||
| 
 | ||||
|     if (type() == "hidden") | ||||
|         return nullptr; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling