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

Side by Side Diff: Source/core/dom/NodeRenderingContext.cpp

Issue 15165002: Fix assert failure in RenderObjectChildList::removeChildNode (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: patch Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « LayoutTests/fullscreen/full-screen-inline-split-crash-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
7 * Copyright (C) 2011 Google Inc. All rights reserved. 7 * Copyright (C) 2011 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 , m_parentFlowRenderer(0) 68 , m_parentFlowRenderer(0)
69 { 69 {
70 } 70 }
71 71
72 NodeRenderingContext::~NodeRenderingContext() 72 NodeRenderingContext::~NodeRenderingContext()
73 { 73 {
74 } 74 }
75 75
76 static bool isRendererReparented(const RenderObject* renderer) 76 static bool isRendererReparented(const RenderObject* renderer)
77 { 77 {
78 if (!renderer->node()->isElementNode()) 78 if (!renderer || !renderer->node() || !renderer->node()->isElementNode())
79 return false; 79 return false;
80 if (renderer->style() && !renderer->style()->flowThread().isEmpty()) 80 if (renderer->style() && !renderer->style()->flowThread().isEmpty())
81 return true; 81 return true;
82 if (toElement(renderer->node())->shouldBeReparentedUnderRenderView(renderer- >style())) 82 if (toElement(renderer->node())->shouldBeReparentedUnderRenderView(renderer- >style()))
83 return true; 83 return true;
84 return false; 84 return false;
85 } 85 }
86 86
87 RenderObject* NodeRenderingContext::nextRenderer() const 87 RenderObject* NodeRenderingContext::nextRenderer() const
88 { 88 {
(...skipping 22 matching lines...) Expand all
111 } 111 }
112 112
113 if (m_parentFlowRenderer) 113 if (m_parentFlowRenderer)
114 return m_parentFlowRenderer->nextRendererForNode(m_node); 114 return m_parentFlowRenderer->nextRendererForNode(m_node);
115 115
116 // Avoid an O(N^2) problem with this function by not checking for 116 // Avoid an O(N^2) problem with this function by not checking for
117 // nextRenderer() when the parent element hasn't attached yet. 117 // nextRenderer() when the parent element hasn't attached yet.
118 if (m_renderingParent && !m_renderingParent->attached()) 118 if (m_renderingParent && !m_renderingParent->attached())
119 return 0; 119 return 0;
120 120
121 Element* fullScreenElement = element ? element->document()->webkitCurrentFul lScreenElement() : 0;
121 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) { 122 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) {
122 RenderObject* renderer = sibling->renderer(); 123 RenderObject* renderer = sibling->renderer();
124 if (renderer && renderer->node() == fullScreenElement) {
125 // If the sibling node in DOM is the fullscreened element, the
126 // sibling renderer should be the RenderFullScreen object it's
127 // wrapped in.
128 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
129 }
123 if (renderer && !isRendererReparented(renderer)) 130 if (renderer && !isRendererReparented(renderer))
124 return renderer; 131 return renderer;
125 } 132 }
126 133
127 return 0; 134 return 0;
128 } 135 }
129 136
130 RenderObject* NodeRenderingContext::previousRenderer() const 137 RenderObject* NodeRenderingContext::previousRenderer() const
131 { 138 {
132 if (RenderObject* renderer = m_node->renderer()) 139 if (RenderObject* renderer = m_node->renderer())
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); 322 newRenderer->setFlowThreadState(parentRenderer->flowThreadState());
316 323
317 RenderObject* nextRenderer = this->nextRenderer(); 324 RenderObject* nextRenderer = this->nextRenderer();
318 textNode->setRenderer(newRenderer); 325 textNode->setRenderer(newRenderer);
319 // Parent takes care of the animations, no need to call setAnimatableStyle. 326 // Parent takes care of the animations, no need to call setAnimatableStyle.
320 newRenderer->setStyle(m_style.release()); 327 newRenderer->setStyle(m_style.release());
321 parentRenderer->addChild(newRenderer, nextRenderer); 328 parentRenderer->addChild(newRenderer, nextRenderer);
322 } 329 }
323 330
324 } 331 }
OLDNEW
« no previous file with comments | « LayoutTests/fullscreen/full-screen-inline-split-crash-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698