summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderEmbeddedObject.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
commitcfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch)
tree24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebCore/rendering/RenderEmbeddedObject.cpp
parent69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff)
downloadqtwebkit-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.cpp35
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()