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

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

Issue 684633006: Reattach whitespace siblings only when needed (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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
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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 return m_node->document().renderView(); 113 return m_node->document().renderView();
114 } 114 }
115 115
116 return RenderTreeBuilder::parentRenderer(); 116 return RenderTreeBuilder::parentRenderer();
117 } 117 }
118 118
119 void RenderTreeBuilderForElement::createRenderer() 119 void RenderTreeBuilderForElement::createRenderer()
120 { 120 {
121 ASSERT(rendererIsNeeded()); 121 ASSERT(rendererIsNeeded());
122 ASSERT(!m_node->renderer()); 122 ASSERT(!m_node->renderer());
123 ASSERT(m_node->needsAttach());
123 124
124 Element* element = toElement(m_node); 125 Element* element = toElement(m_node);
125 RenderStyle& style = *m_style.get(); 126 RenderStyle& style = *m_style.get();
126 127
127 RenderObject* newRenderer = element->createRenderer(&style); 128 RenderObject* newRenderer = element->createRenderer(&style);
128 if (!newRenderer) 129 if (!newRenderer)
129 return; 130 return;
130 131
131 RenderObject* parentRenderer = this->parentRenderer(); 132 RenderObject* parentRenderer = this->parentRenderer();
132 133
(...skipping 25 matching lines...) Expand all
158 if (!RenderTreeBuilder::rendererIsNeeded()) 159 if (!RenderTreeBuilder::rendererIsNeeded())
159 return false; 160 return false;
160 161
161 return toText(m_node)->textRendererIsNeeded(*parentRenderer()->style(), *par entRenderer()); 162 return toText(m_node)->textRendererIsNeeded(*parentRenderer()->style(), *par entRenderer());
162 } 163 }
163 164
164 void RenderTreeBuilderForText::createRenderer() 165 void RenderTreeBuilderForText::createRenderer()
165 { 166 {
166 ASSERT(rendererIsNeeded()); 167 ASSERT(rendererIsNeeded());
167 ASSERT(!m_node->renderer()); 168 ASSERT(!m_node->renderer());
169 ASSERT(m_node->needsAttach());
168 170
169 Text* textNode = toText(m_node); 171 Text* textNode = toText(m_node);
170 RenderObject* parentRenderer = this->parentRenderer(); 172 RenderObject* parentRenderer = this->parentRenderer();
171 RenderStyle* style = parentRenderer->style(); 173 RenderStyle* style = parentRenderer->style();
172 174
173 RenderText* newRenderer = textNode->createTextRenderer(style); 175 RenderText* newRenderer = textNode->createTextRenderer(style);
174 if (!parentRenderer->isChildAllowed(newRenderer, style)) { 176 if (!parentRenderer->isChildAllowed(newRenderer, style)) {
175 newRenderer->destroy(); 177 newRenderer->destroy();
176 return; 178 return;
177 } 179 }
178 180
179 // Make sure the RenderObject already knows it is going to be added to a Ren derFlowThread before we set the style 181 // Make sure the RenderObject already knows it is going to be added to a Ren derFlowThread before we set the style
180 // for the first time. Otherwise code using inRenderFlowThread() in the styl eWillChange and styleDidChange will fail. 182 // for the first time. Otherwise code using inRenderFlowThread() in the styl eWillChange and styleDidChange will fail.
181 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); 183 newRenderer->setFlowThreadState(parentRenderer->flowThreadState());
182 184
183 RenderObject* nextRenderer = this->nextRenderer(); 185 RenderObject* nextRenderer = this->nextRenderer();
184 textNode->setRenderer(newRenderer); 186 textNode->setRenderer(newRenderer);
185 // Parent takes care of the animations, no need to call setAnimatableStyle. 187 // Parent takes care of the animations, no need to call setAnimatableStyle.
186 newRenderer->setStyle(style); 188 newRenderer->setStyle(style);
187 parentRenderer->addChild(newRenderer, nextRenderer); 189 parentRenderer->addChild(newRenderer, nextRenderer);
188 } 190 }
189 191
190 } 192 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698