mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff --git web_contents_impl.cc web_contents_impl.cc
 | 
						|
index 8dd4307..e3a6baa 100644
 | 
						|
--- web_contents_impl.cc
 | 
						|
+++ web_contents_impl.cc
 | 
						|
@@ -1269,22 +1269,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
 | 
						|
       params.browser_context, params.site_instance, params.routing_id,
 | 
						|
       params.main_frame_routing_id);
 | 
						|
 
 | 
						|
-  WebContentsViewDelegate* delegate =
 | 
						|
-      GetContentClient()->browser()->GetWebContentsViewDelegate(this);
 | 
						|
-
 | 
						|
-  if (browser_plugin_guest_) {
 | 
						|
-    scoped_ptr<WebContentsView> platform_view(CreateWebContentsView(
 | 
						|
-        this, delegate, &render_view_host_delegate_view_));
 | 
						|
-
 | 
						|
-    WebContentsViewGuest* rv = new WebContentsViewGuest(
 | 
						|
-        this, browser_plugin_guest_.get(), platform_view.Pass(),
 | 
						|
-        render_view_host_delegate_view_);
 | 
						|
-    render_view_host_delegate_view_ = rv;
 | 
						|
-    view_.reset(rv);
 | 
						|
-  } else {
 | 
						|
-    // Regular WebContentsView.
 | 
						|
-    view_.reset(CreateWebContentsView(
 | 
						|
-        this, delegate, &render_view_host_delegate_view_));
 | 
						|
+  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);
 | 
						|
+
 | 
						|
+    if (browser_plugin_guest_) {
 | 
						|
+      scoped_ptr<WebContentsView> platform_view(CreateWebContentsView(
 | 
						|
+          this, delegate, &render_view_host_delegate_view_));
 | 
						|
+
 | 
						|
+      WebContentsViewGuest* rv = new WebContentsViewGuest(
 | 
						|
+          this, browser_plugin_guest_.get(), platform_view.Pass(),
 | 
						|
+          render_view_host_delegate_view_);
 | 
						|
+      render_view_host_delegate_view_ = rv;
 | 
						|
+      view_.reset(rv);
 | 
						|
+    } else {
 | 
						|
+      // Regular WebContentsView.
 | 
						|
+      view_.reset(CreateWebContentsView(
 | 
						|
+          this, delegate, &render_view_host_delegate_view_));
 | 
						|
+    }
 | 
						|
   }
 | 
						|
   CHECK(render_view_host_delegate_view_);
 | 
						|
   CHECK(view_.get());
 | 
						|
@@ -1640,6 +1647,9 @@ 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,
 | 
						|
@@ -1648,7 +1658,9 @@ void WebContentsImpl::CreateNewWindow(
 | 
						|
                                           params.frame_name,
 | 
						|
                                           params.target_url,
 | 
						|
                                           partition_id,
 | 
						|
-                                          session_storage_namespace)) {
 | 
						|
+                                          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
 | 
						|
@@ -1668,6 +1680,8 @@ void WebContentsImpl::CreateNewWindow(
 | 
						|
   create_params.main_frame_routing_id = main_frame_route_id;
 | 
						|
   create_params.opener = this;
 | 
						|
   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 = true;
 |