Index: third_party/WebKit/Source/core/frame/FrameView.cpp |
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp |
index 6bd87f905f2b4739a9110fcb63b3ab66bf9c762e..8cc6f3b69dceada90f39188db7ab4d5cb1ae8f12 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
@@ -80,6 +80,7 @@ |
#include "core/paint/FramePainter.h" |
#include "core/paint/PaintLayer.h" |
#include "core/paint/PaintPropertyTreeBuilder.h" |
+#include "core/plugins/PluginView.h" |
#include "core/style/ComputedStyle.h" |
#include "core/svg/SVGDocumentExtensions.h" |
#include "core/svg/SVGSVGElement.h" |
@@ -2622,6 +2623,14 @@ void FrameView::updateStyleAndLayoutIfNeededRecursive() |
if (needsLayout()) |
layout(); |
+ // WebView plugins need to update regardless of whether the LayoutEmbeddedObject |
+ // that owns them needed layout. |
chrishtr
2016/02/17 23:49:18
Add a TODO to fix this in a better way.
|
+ const ChildrenWidgetSet* viewChildren = children(); |
+ for (const RefPtrWillBeMember<Widget>& child : *viewChildren) { |
eae
2016/02/17 23:48:03
Why is this only needed for WebView plugins and no
|
+ if ((*child).isPluginContainer()) |
+ toPluginView(child.get())->layoutIfNeeded(); |
chrishtr
2016/02/17 23:49:18
Add a note that this actually runs the entire life
|
+ } |
+ |
// FIXME: Calling layout() shouldn't trigger script execution or have any |
// observable effects on the frame tree but we're not quite there yet. |
WillBeHeapVector<RefPtrWillBeMember<FrameView>> frameViews; |