Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 26af9751fe2bee57a0c4a5cbd45e6c5af9b712ae..f1d0cfde04ec882ad42f51fe5d92a3c0613c5e1d 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -1364,20 +1364,6 @@ void RenderViewImpl::ShowCreatedFullscreenWidget( |
fullscreen_widget->routing_id())); |
} |
-void RenderViewImpl::ShowCreatedViewWidget(bool opened_by_user_gesture, |
- RenderWidget* render_view_to_show, |
- WebNavigationPolicy policy, |
- const gfx::Rect& initial_rect) { |
- // |render_view_to_show| represents a pending view opened (e.g. a popup opened |
- // via window.open()) by this object, but not yet shown (it's offscreen, and |
- // still owned by the opener). Sending |ViewHostMsg_ShowView| will move it off |
- // the opener's pending list, into e.g. its own tab or window. |
- Send(new ViewHostMsg_ShowView(GetRoutingID(), |
- render_view_to_show->routing_id(), |
- NavigationPolicyToDisposition(policy), |
- initial_rect, opened_by_user_gesture)); |
-} |
- |
void RenderViewImpl::SendFrameStateUpdates() { |
// We only use this path in OOPIF-enabled modes. |
DCHECK(SiteIsolationPolicy::UseSubframeNavigationEntries()); |
@@ -1415,8 +1401,9 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
const WebString& frame_name, |
WebNavigationPolicy policy, |
bool suppress_opener) { |
+ RenderFrameImpl* creator_frame = RenderFrameImpl::FromWebFrame(creator); |
mojom::CreateNewWindowParamsPtr params = mojom::CreateNewWindowParams::New(); |
- params->opener_id = GetRoutingID(); |
+ params->opener_render_frame_id = creator_frame->GetRoutingID(); |
params->user_gesture = WebUserGestureIndicator::isProcessingUserGesture(); |
if (GetContentClient()->renderer()->AllowPopup()) |
params->user_gesture = true; |
@@ -1424,8 +1411,6 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
params->session_storage_namespace_id = session_storage_namespace_id_; |
if (frame_name != "_blank") |
params->frame_name = base::UTF16ToUTF8(base::StringPiece16(frame_name)); |
- params->opener_render_frame_id = |
- RenderFrameImpl::FromWebFrame(creator)->GetRoutingID(); |
params->opener_url = creator->document().url(); |
// The browser process uses the top frame's URL for a content settings check |
@@ -1487,7 +1472,6 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
// disagrees. |
mojom::CreateViewParams view_params; |
- RenderFrameImpl* creator_frame = RenderFrameImpl::FromWebFrame(creator); |
view_params.opener_frame_route_id = creator_frame->GetRoutingID(); |
DCHECK_EQ(GetRoutingID(), creator_frame->render_view()->GetRoutingID()); |
@@ -1510,9 +1494,11 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
view_params.max_size = gfx::Size(); |
view_params.page_zoom_level = page_zoom_level_; |
+ // Unretained() is safe here because our calling function will also call |
+ // show(). |
alexmos
2016/12/13 18:41:41
Ack. Earlier in the CL I was thinking whether we
ncarter (slow)
2016/12/15 00:33:17
SYN/ACK. I actually spent a lot of time worrying a
|
RenderWidget::ShowCallback show_callback = |
- base::Bind(&RenderViewImpl::ShowCreatedViewWidget, this->AsWeakPtr(), |
- opened_by_user_gesture); |
+ base::Bind(&RenderFrameImpl::ShowCreatedWindow, |
+ base::Unretained(creator_frame), opened_by_user_gesture); |
RenderViewImpl* view = |
RenderViewImpl::Create(compositor_deps_, view_params, show_callback); |