[PE] Speculative fix for crash called from PageOverlay::Update
Don't know why the parent GraphicsLayer is null on Mac only.
The crash spiked since M67, but on M66 the non-SlimmingPaintV175 path
also crashed for the same reason.
Bug: 848442
Change-Id: I34ed17f8aaa193128f295b1cb6139a51164365e8
Reviewed-on: https://chromium-review.googlesource.com/1104697
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568061}
diff --git a/third_party/blink/renderer/core/page/page_overlay.cc b/third_party/blink/renderer/core/page/page_overlay.cc
index deff626..a29b3df 100644
--- a/third_party/blink/renderer/core/page/page_overlay.cc
+++ b/third_party/blink/renderer/core/page/page_overlay.cc
@@ -72,21 +72,22 @@
return;
if (!layer_) {
+ GraphicsLayer* parent_layer =
+ frame->IsMainFrame()
+ ? frame->GetPage()->GetVisualViewport().ContainerLayer()
+ : frame_impl_->LocalRootFrameWidget()->RootGraphicsLayer();
+ if (!parent_layer)
+ return;
+
layer_ = GraphicsLayer::Create(*this);
layer_->SetDrawsContent(true);
+ parent_layer->AddChild(layer_.get());
// This is required for contents of overlay to stay in sync with the page
// while scrolling.
cc::Layer* cc_layer = layer_->CcLayer();
cc_layer->AddMainThreadScrollingReasons(
MainThreadScrollingReason::kPageOverlay);
- if (frame->IsMainFrame()) {
- frame->GetPage()->GetVisualViewport().ContainerLayer()->AddChild(
- layer_.get());
- } else {
- frame_impl_->LocalRootFrameWidget()->RootGraphicsLayer()->AddChild(
- layer_.get());
- }
if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
layer_->SetLayerState(PropertyTreeState(PropertyTreeState::Root()),