Index: Source/core/dom/NodeRenderingContext.cpp |
diff --git a/Source/core/dom/NodeRenderingContext.cpp b/Source/core/dom/NodeRenderingContext.cpp |
index 1533f0accef6fcc060669ea4d3e3c6c2d8793282..7074a51f77b9fc3fd8961ebc785ce412bfd5a1e4 100644 |
--- a/Source/core/dom/NodeRenderingContext.cpp |
+++ b/Source/core/dom/NodeRenderingContext.cpp |
@@ -75,7 +75,7 @@ NodeRenderingContext::~NodeRenderingContext() |
static bool isRendererReparented(const RenderObject* renderer) |
{ |
- if (!renderer->node()->isElementNode()) |
+ if (!renderer || !renderer->node() || !renderer->node()->isElementNode()) |
return false; |
if (renderer->style() && !renderer->style()->flowThread().isEmpty()) |
return true; |
@@ -118,8 +118,15 @@ RenderObject* NodeRenderingContext::nextRenderer() const |
if (m_renderingParent && !m_renderingParent->attached()) |
return 0; |
+ Element* fullScreenElement = element ? element->document()->webkitCurrentFullScreenElement() : 0; |
for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; sibling = NodeRenderingTraversal::nextSibling(sibling)) { |
RenderObject* renderer = sibling->renderer(); |
+ if (renderer && renderer->node() == fullScreenElement) { |
+ // If the sibling node in DOM is the fullscreened element, the |
+ // sibling renderer should be the RenderFullScreen object it's |
+ // wrapped in. |
+ renderer = element->document()->fullScreenRenderer(); |
esprehn
2013/05/14 21:32:28
This doesn't seem like the right place to fix this
falken
2013/05/15 01:46:36
Yeah I thought optimistically that fixing it in No
|
+ } |
if (renderer && !isRendererReparented(renderer)) |
return renderer; |
} |