mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git web_contents_impl.cc web_contents_impl.cc
 | |
| index b9ee451..0a0e8e4 100644
 | |
| --- web_contents_impl.cc
 | |
| +++ web_contents_impl.cc
 | |
| @@ -1503,6 +1503,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
 | |
|    std::string unique_name = params.main_frame_name;
 | |
|    frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
 | |
|  
 | |
| +  if (params.view && params.delegate_view) {
 | |
| +    view_.reset(params.view);
 | |
| +    render_view_host_delegate_view_ = params.delegate_view;
 | |
| +  }
 | |
| +
 | |
| +  if (!view_) {
 | |
|    WebContentsViewDelegate* delegate =
 | |
|        GetContentClient()->browser()->GetWebContentsViewDelegate(this);
 | |
|  
 | |
| @@ -1535,6 +1541,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
 | |
|                                           std::move(view_),
 | |
|                                           &render_view_host_delegate_view_));
 | |
|    }
 | |
| +  }
 | |
|    CHECK(render_view_host_delegate_view_);
 | |
|    CHECK(view_.get());
 | |
|  
 | |
| @@ -1992,11 +1999,14 @@ void WebContentsImpl::CreateNewWindow(
 | |
|        static_cast<SessionStorageNamespaceImpl*>(session_storage_namespace);
 | |
|    CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context));
 | |
|  
 | |
| +  content::WebContentsView* view = NULL;
 | |
| +  content::RenderViewHostDelegateView* delegate_view = NULL;
 | |
| +
 | |
|    if (delegate_ &&
 | |
|        !delegate_->ShouldCreateWebContents(
 | |
|            this, route_id, main_frame_route_id, main_frame_widget_route_id,
 | |
|            params.window_container_type, params.frame_name, params.target_url,
 | |
| -          partition_id, session_storage_namespace)) {
 | |
| +          partition_id, session_storage_namespace, &view, &delegate_view)) {
 | |
|      if (route_id != MSG_ROUTING_NONE &&
 | |
|          !RenderViewHost::FromID(render_process_id, route_id)) {
 | |
|        // If the embedder didn't create a WebContents for this route, we need to
 | |
| @@ -2020,6 +2030,8 @@ void WebContentsImpl::CreateNewWindow(
 | |
|    create_params.opener_render_process_id = render_process_id;
 | |
|    create_params.opener_render_frame_id = params.opener_render_frame_id;
 | |
|    create_params.opener_suppressed = params.opener_suppressed;
 | |
| +  create_params.view = view;
 | |
| +  create_params.delegate_view = delegate_view;
 | |
|    if (params.disposition == NEW_BACKGROUND_TAB)
 | |
|      create_params.initially_hidden = true;
 | |
|    create_params.renderer_initiated_creation =
 |