diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
commit | cfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch) | |
tree | 24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebCore/rendering/RenderEmbeddedObject.cpp | |
parent | 69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff) | |
download | qtwebkit-cfd86b747d32ac22246a1aa908eaa720c63a88c1.tar.gz |
Imported WebKit commit 20271caf2e2c016d5cef40184cddeefeac4f1876 (http://svn.webkit.org/repository/webkit/trunk@133733)
New snapshot that contains all previous fixes as well as build fix for latest QtMultimedia API changes.
Diffstat (limited to 'Source/WebCore/rendering/RenderEmbeddedObject.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderEmbeddedObject.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/RenderEmbeddedObject.cpp b/Source/WebCore/rendering/RenderEmbeddedObject.cpp index 1e12c7c90..e964855d7 100644 --- a/Source/WebCore/rendering/RenderEmbeddedObject.cpp +++ b/Source/WebCore/rendering/RenderEmbeddedObject.cpp @@ -53,6 +53,10 @@ #include "Text.h" #include "TextRun.h" +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) +#include "HTMLMediaElement.h" +#endif + namespace WebCore { using namespace HTMLNames; @@ -113,6 +117,8 @@ static String unavailablePluginReplacementText(RenderEmbeddedObject::PluginUnava return blockedPluginByContentSecurityPolicyText(); case RenderEmbeddedObject::InsecurePluginVersion: return insecurePluginVersionText(); + case RenderEmbeddedObject::PluginInactive: + return inactivePluginText(); } ASSERT_NOT_REACHED(); @@ -231,6 +237,10 @@ void RenderEmbeddedObject::layout() StackStats::LayoutCheckPoint layoutCheckPoint; ASSERT(needsLayout()); +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + LayoutSize oldSize = contentBoxRect().size(); +#endif + updateLogicalWidth(); updateLogicalHeight(); @@ -245,6 +255,31 @@ void RenderEmbeddedObject::layout() frameView()->addWidgetToUpdate(this); setNeedsLayout(false); + +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + // This code copied from RenderMedia::layout(). + RenderBox* controlsRenderer = toRenderBox(m_children.firstChild()); + if (!controlsRenderer) + return; + + LayoutSize newSize = contentBoxRect().size(); + if (newSize == oldSize && !controlsRenderer->needsLayout()) + return; + + // When calling layout() on a child node, a parent must either push a LayoutStateMaintainter, or + // instantiate LayoutStateDisabler. Since using a LayoutStateMaintainer is slightly more efficient, + // and this method will be called many times per second during playback, use a LayoutStateMaintainer: + LayoutStateMaintainer statePusher(view(), this, locationOffset(), hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode()); + + controlsRenderer->setLocation(LayoutPoint(borderLeft(), borderTop()) + LayoutSize(paddingLeft(), paddingTop())); + controlsRenderer->style()->setHeight(Length(newSize.height(), Fixed)); + controlsRenderer->style()->setWidth(Length(newSize.width(), Fixed)); + controlsRenderer->setNeedsLayout(true, MarkOnlyThis); + controlsRenderer->layout(); + setChildNeedsLayout(false); + + statePusher.pop(); +#endif } void RenderEmbeddedObject::viewCleared() |