Commit 6bc8da07 authored by Erik Chen's avatar Erik Chen Committed by Commit Bot

Fix inappropriate reference to possibly undead RenderWidget.

When creating a Popup Widget, we use the main frame, possibly undead
RenderWidget. Instead we should use the local root RenderWidget.

Instead it should use the local root render widget.

Bug: 912193, 419087
Change-Id: I5280ea48e44f96f4cc4bc4d9a7885f3343c5b7cb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1814672
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#698503}
parent 496b834d
...@@ -1466,18 +1466,12 @@ blink::WebPagePopup* RenderViewImpl::CreatePopup( ...@@ -1466,18 +1466,12 @@ blink::WebPagePopup* RenderViewImpl::CreatePopup(
RenderWidget::ShowCallback opener_callback = base::BindOnce( RenderWidget::ShowCallback opener_callback = base::BindOnce(
&RenderViewImpl::ShowCreatedPopupWidget, weak_ptr_factory_.GetWeakPtr()); &RenderViewImpl::ShowCreatedPopupWidget, weak_ptr_factory_.GetWeakPtr());
// The RenderWidget associated with the RenderView. This should be the RenderWidget* render_widget =
// RenderWidget for the main frame, but may be a zombie RenderWidget when RenderFrameImpl::FromWebFrame(creator)->GetLocalRootRenderWidget();
// the main frame is remote (we don't need a RenderWidget for it then).
// However for now (https://crbug.com/419087) we know it exists and grab
// state off it for the popup.
// TODO(crbug.com/419087): This should probably be using the local root's
// RenderWidget for the frame making the popup.
RenderWidget* view_render_widget = render_widget_.get();
RenderWidget* popup_widget = RenderWidget::CreateForPopup( RenderWidget* popup_widget = RenderWidget::CreateForPopup(
widget_routing_id, view_render_widget->compositor_deps(), widget_routing_id, render_widget->compositor_deps(), page_properties(),
page_properties(), blink::kWebDisplayModeUndefined, blink::kWebDisplayModeUndefined,
/*hidden=*/false, /*hidden=*/false,
/*never_visible=*/false, std::move(widget_channel_receiver)); /*never_visible=*/false, std::move(widget_channel_receiver));
...@@ -1498,7 +1492,7 @@ blink::WebPagePopup* RenderViewImpl::CreatePopup( ...@@ -1498,7 +1492,7 @@ blink::WebPagePopup* RenderViewImpl::CreatePopup(
// Devtools emulation, which may be currently applied to the // Devtools emulation, which may be currently applied to the
// |view_render_widget|, should also apply to the new popup. This doesn't // |view_render_widget|, should also apply to the new popup. This doesn't
// happen automatically. // happen automatically.
popup_widget->ApplyEmulatedScreenMetricsForPopupWidget(view_render_widget); popup_widget->ApplyEmulatedScreenMetricsForPopupWidget(render_widget);
return popup_web_widget; return popup_web_widget;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment