Index: third_party/WebKit/Source/core/layout/LayoutInline.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutInline.cpp b/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
index 38fea136385ad37b28c2e9df045cd046af39a920..136325539960a1e5e254fe60f70d106668abe02e 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutInline.cpp |
@@ -26,6 +26,7 @@ |
#include "core/dom/StyleEngine.h" |
#include "core/layout/HitTestResult.h" |
#include "core/layout/LayoutBlock.h" |
+#include "core/layout/LayoutFullScreen.h" |
#include "core/layout/LayoutGeometryMap.h" |
#include "core/layout/LayoutTheme.h" |
#include "core/layout/LayoutView.h" |
@@ -349,6 +350,17 @@ void LayoutInline::splitInlines(LayoutBlockFlow* fromBlock, LayoutBlockFlow* toB |
{ |
ASSERT(isDescendantOf(fromBlock)); |
+ // If we're splitting the inline containing the fullscreened element, |
+ // |beforeChild| may be the layoutObject for the fullscreened element. However, |
+ // that layoutObject is wrapped in a LayoutFullScreen, so |this| is not its |
+ // parent. Since the splitting logic expects |this| to be the parent, set |
+ // |beforeChild| to be the LayoutFullScreen. |
+ if (Fullscreen* fullscreen = Fullscreen::fromIfExists(document())) { |
+ const Element* fullScreenElement = fullscreen->webkitCurrentFullScreenElement(); |
+ if (fullScreenElement && beforeChild && beforeChild->node() == fullScreenElement) |
+ beforeChild = fullscreen->fullScreenLayoutObject(); |
+ } |
+ |
// FIXME: Because splitting is O(n^2) as tags nest pathologically, we cap the depth at which we're willing to clone. |
// There will eventually be a better approach to this problem that will let us nest to a much |
// greater depth (see bugzilla bug 13430) but for now we have a limit. This *will* result in |