Commit bad8cb95 authored by Stefan Zager's avatar Stefan Zager Committed by Commit Bot

Prevent reentry in FrameView::Dispose

With embedded_content_view_ set to its new value before the call to
Dispose(), that method will no longer recurse back into
SetEmbeddedContentView (and again into Dispose()).

Change-Id: I4397616d1b41159380145ef364d88a6448909900
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1802116Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: Stefan Zager <szager@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697579}
parent fcc98cc2
...@@ -356,17 +356,18 @@ void HTMLFrameOwnerElement::SetEmbeddedContentView( ...@@ -356,17 +356,18 @@ void HTMLFrameOwnerElement::SetEmbeddedContentView(
} }
} }
if (embedded_content_view_) { EmbeddedContentView* old_view = embedded_content_view_.Get();
if (embedded_content_view_->IsAttached()) { embedded_content_view_ = embedded_content_view;
embedded_content_view_->DetachFromLayout(); if (old_view) {
if (embedded_content_view_->IsPluginView()) if (old_view->IsAttached()) {
DisposePluginSoon(ToWebPluginContainerImpl(embedded_content_view_)); old_view->DetachFromLayout();
if (old_view->IsPluginView())
DisposePluginSoon(ToWebPluginContainerImpl(old_view));
else else
embedded_content_view_->Dispose(); old_view->Dispose();
} }
} }
embedded_content_view_ = embedded_content_view;
FrameOwnerPropertiesChanged(); FrameOwnerPropertiesChanged();
GetDocument().GetRootScrollerController().DidUpdateIFrameFrameView(*this); GetDocument().GetRootScrollerController().DidUpdateIFrameFrameView(*this);
......
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