Commit f6bef8b8 authored by danakj's avatar danakj Committed by Commit Bot

Don't receive SynchronizeVisualProperties IPC for an undead RenderWidget

These widgets are not in use, and VisualProperties will be sent when
they want to be revived by a new local main frame.

R=avi@chromium.org

Bug: 419087
Change-Id: I4bcdd8a505c4e5c18a3d9e7b6c3b91f444774e2a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1850759
Commit-Queue: Avi Drissman <avi@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704745}
parent 6a77b1b5
...@@ -2044,13 +2044,10 @@ void RenderViewImpl::OnPageWasShown() { ...@@ -2044,13 +2044,10 @@ void RenderViewImpl::OnPageWasShown() {
void RenderViewImpl::OnUpdateVisualProperties( void RenderViewImpl::OnUpdateVisualProperties(
const VisualProperties& visual_properties, const VisualProperties& visual_properties,
int widget_routing_id) { int widget_routing_id) {
// TODO(https://crbug.com/998273): We should not forward visual properties to
// frozen render widgets.
// The widget may have been destroyed while the IPC was in flight. // The widget may have been destroyed while the IPC was in flight.
RenderWidget* widget = RenderWidget::FromRoutingID(widget_routing_id); RenderWidget* widget = RenderWidget::FromRoutingID(widget_routing_id);
if (widget) { if (widget && !widget->IsUndeadOrProvisional())
widget->SynchronizeVisualPropertiesFromRenderView(visual_properties); widget->SynchronizeVisualPropertiesFromRenderView(visual_properties);
}
} }
void RenderViewImpl::OnUpdatePageVisualProperties( void RenderViewImpl::OnUpdatePageVisualProperties(
......
...@@ -705,6 +705,12 @@ void RenderWidget::SynchronizeVisualPropertiesFromRenderView( ...@@ -705,6 +705,12 @@ void RenderWidget::SynchronizeVisualPropertiesFromRenderView(
TRACE_EVENT0("renderer", TRACE_EVENT0("renderer",
"RenderWidget::SynchronizeVisualPropertiesFromRenderView"); "RenderWidget::SynchronizeVisualPropertiesFromRenderView");
// TODO(crbug.com/995981): We shouldn't be sending VisualProperties to undead
// RenderWidgets already, but if we do we could crash if the RenderWidget
// hasn't been initialized yet. So this acts defensively until we destroy
// undead RenderWidgets.
DCHECK(!is_undead_);
VisualProperties visual_properties = visual_properties_from_browser; VisualProperties visual_properties = visual_properties_from_browser;
// Web tests can override the device scale factor in the renderer. // Web tests can override the device scale factor in the renderer.
if (device_scale_factor_for_testing_) { if (device_scale_factor_for_testing_) {
......
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