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 =
|