Don't process RenderFrameProxy callbacks on undead RenderWidgets.
The member |render_frame_proxies_| on RenderWidget is used to propagate visual
properties down the frame tree [across processes]. This should not need to be
triggered from undead RenderWidgets [which in the future will not exist at all].
This CL stops sending these observer callbacks from undead RenderWidgets.
Change-Id: Idfe0b14d3ce7deca879a3d2106159aba7dea4221
Bug: 912193
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1804690
Commit-Queue: Avi Drissman <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Auto-Submit: Erik Chen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#698252}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index f100cb0c..33bb95b 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -922,9 +922,11 @@
// (such as in RenderViewHost) and distribute it to each frame-hosted
// RenderWidget from there.
for (auto& child_proxy : render_frame_proxies_) {
- child_proxy.OnPageScaleFactorChanged(
- visual_properties.page_scale_factor,
- visual_properties.is_pinch_gesture_active);
+ if (!is_undead_) {
+ child_proxy.OnPageScaleFactorChanged(
+ visual_properties.page_scale_factor,
+ visual_properties.is_pinch_gesture_active);
+ }
}
}
}
@@ -1698,6 +1700,7 @@
}
void RenderWidget::UpdateZoom(double zoom_level) {
+ DCHECK(!is_undead_);
blink::WebFrameWidget* frame_widget = GetFrameWidget();
if (!frame_widget)
return;
@@ -1713,7 +1716,6 @@
for (auto& observer : render_frame_proxies_)
observer.OnZoomLevelChanged(zoom_level);
-
for (auto& plugin : browser_plugins_)
plugin.OnZoomLevelChanged(zoom_level);
}
@@ -2303,8 +2305,10 @@
OnOrientationChange();
if (previous_original_screen_info != GetOriginalScreenInfo()) {
- for (auto& observer : render_frame_proxies_)
- observer.OnScreenInfoChanged(GetOriginalScreenInfo());
+ for (auto& observer : render_frame_proxies_) {
+ if (!is_undead_)
+ observer.OnScreenInfoChanged(GetOriginalScreenInfo());
+ }
// Notify all embedded BrowserPlugins of the updated ScreenInfo.
for (auto& observer : browser_plugins_)
@@ -3416,8 +3420,10 @@
// the message to their child RenderWidgets (through their proxy child
// frames).
for (auto& observer : render_frame_proxies_) {
- observer.OnPageScaleFactorChanged(page_scale_factor,
- is_pinch_gesture_active);
+ if (!is_undead_) {
+ observer.OnPageScaleFactorChanged(page_scale_factor,
+ is_pinch_gesture_active);
+ }
}
// Store the value to give to any new RenderFrameProxy that is registered.
page_scale_factor_from_mainframe_ = page_scale_factor;