Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: Source/WebCore/rendering/RenderFullScreen.cpp

Issue 8218020: Merge 95371 - Don't detach elements from the render tree when entering fullscreen mode (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/874/
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/WebCore/rendering/RenderFullScreen.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/rendering/RenderFullScreen.cpp
===================================================================
--- Source/WebCore/rendering/RenderFullScreen.cpp (revision 97090)
+++ Source/WebCore/rendering/RenderFullScreen.cpp (working copy)
@@ -79,7 +79,7 @@
RenderDeprecatedFlexibleBox::willBeDestroyed();
}
-PassRefPtr<RenderStyle> RenderFullScreen::createFullScreenStyle()
+static PassRefPtr<RenderStyle> createFullScreenStyle()
{
RefPtr<RenderStyle> fullscreenStyle = RenderStyle::createDefaultStyle();
@@ -97,14 +97,45 @@
fullscreenStyle->setPosition(FixedPosition);
fullscreenStyle->setWidth(Length(100.0, Percent));
fullscreenStyle->setHeight(Length(100.0, Percent));
- fullscreenStyle->setLeft(Length(0, Fixed));
- fullscreenStyle->setTop(Length(0, Fixed));
+ fullscreenStyle->setLeft(Length(0, WebCore::Fixed));
+ fullscreenStyle->setTop(Length(0, WebCore::Fixed));
fullscreenStyle->setBackgroundColor(Color::black);
return fullscreenStyle.release();
}
+RenderObject* RenderFullScreen::wrapRenderer(RenderObject* object, Document* document)
+{
+ RenderFullScreen* fullscreenRenderer = new (document->renderArena()) RenderFullScreen(document);
+ fullscreenRenderer->setStyle(createFullScreenStyle());
+ if (object) {
+ if (RenderObject* parent = object->parent()) {
+ parent->addChild(fullscreenRenderer, object);
+ object->remove();
+ }
+ fullscreenRenderer->addChild(object);
+ }
+ document->setFullScreenRenderer(fullscreenRenderer);
+ if (fullscreenRenderer->placeholder())
+ return fullscreenRenderer->placeholder();
+ return fullscreenRenderer;
+}
+
+void RenderFullScreen::unwrapRenderer()
+{
+ RenderObject* wrappedRenderer = firstChild();
+ if (wrappedRenderer) {
+ wrappedRenderer->remove();
+ RenderObject* holder = placeholder() ? placeholder() : this;
+ RenderObject* parent = holder->parent();
+ if (parent)
+ parent->addChild(wrappedRenderer, holder);
+ }
+ remove();
+ document()->setFullScreenRenderer(0);
+}
+
void RenderFullScreen::setPlaceholder(RenderBlock* placeholder)
{
m_placeholder = placeholder;
« no previous file with comments | « Source/WebCore/rendering/RenderFullScreen.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698