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(
}
}
if (embedded_content_view_) {
if (embedded_content_view_->IsAttached()) {
embedded_content_view_->DetachFromLayout();
if (embedded_content_view_->IsPluginView())
DisposePluginSoon(ToWebPluginContainerImpl(embedded_content_view_));
EmbeddedContentView* old_view = embedded_content_view_.Get();
embedded_content_view_ = embedded_content_view;
if (old_view) {
if (old_view->IsAttached()) {
old_view->DetachFromLayout();
if (old_view->IsPluginView())
DisposePluginSoon(ToWebPluginContainerImpl(old_view));
else
embedded_content_view_->Dispose();
old_view->Dispose();
}
}
embedded_content_view_ = embedded_content_view;
FrameOwnerPropertiesChanged();
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