Changeset 90536 in webkit
- Timestamp:
- Jul 6, 2011 9:22:17 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r90535 r90536 1 2011-07-06 MORITA Hajime <morrita@google.com> 2 3 [ShadowContentElement] Redundant RenderText objects are created on the content boundaries. 4 https://bugs.webkit.org/show_bug.cgi?id=63977 5 6 Reviewed by Dimitri Glazkov. 7 8 This test have two set of fixture DOM tree: 9 One is for shadow tree which has one content element, 10 another is for light DOM tree, whose root is to have a shadow DOM. 11 12 Then the test makes 2 complete DOM trees (DOM tree with shadow and 13 flattened dom) for each combination of the fixture items. And 14 compare their layout result. 15 16 * fast/dom/shadow/content-element-renderers-expected.txt: Added. 17 * fast/dom/shadow/content-element-renderers.html: Added. 18 1 19 2011-07-06 Juan C. Montemayor <jmont@apple.com> 2 20 -
trunk/Source/WebCore/ChangeLog
r90531 r90536 1 2011-07-06 MORITA Hajime <morrita@google.com> 2 3 [ShadowContentElement] Redundant RenderText objects are created on the content boundaries. 4 https://bugs.webkit.org/show_bug.cgi?id=63977 5 6 Reviewed by Dimitri Glazkov. 7 8 NodeRenderingContext::nextRenderer() and previousRenderer() didn't work well 9 when it crosses content elements: 10 - It doesn't step into forwarded children of ShadowContentElement. 11 - It doesn't step out from traversing forwarded children to 12 neighbors of the content element of that forwarded chidren. 13 14 This change makes it to step into and out from content element. 15 16 Test: fast/dom/shadow/content-element-renderers.html 17 18 * dom/NodeRenderingContext.cpp: 19 (WebCore::firstRendererOf): Added 20 (WebCore::lastRendererOf): Added 21 (WebCore::NodeRenderingContext::nextRenderer): 22 (WebCore::NodeRenderingContext::previousRenderer): 23 1 24 2011-07-06 Gyuyoung Kim <gyuyoung.kim@samsung.com> 2 25 -
trunk/Source/WebCore/dom/NodeRenderingContext.cpp
r90094 r90536 131 131 } 132 132 133 static RenderObject* firstRendererOf(ShadowContentElement* parent) 134 { 135 size_t inclusionCount = parent->inclusionCount(); 136 for (size_t i = 0; i < inclusionCount; ++i) { 137 Node* candidate = parent->inclusionAt(i); 138 if (RenderObject* renderer = candidate->renderer()) 139 return renderer; 140 } 141 142 return 0; 143 } 144 145 static RenderObject* lastRendererOf(ShadowContentElement* parent) 146 { 147 size_t inclusionCount = parent->inclusionCount(); 148 for (size_t i = 0; i < inclusionCount; ++i) { 149 Node* candidate = parent->inclusionAt(inclusionCount - i - 1); 150 if (RenderObject* renderer = candidate->renderer()) 151 return renderer; 152 } 153 154 return 0; 155 } 156 133 157 RenderObject* NodeRenderingContext::nextRenderer() const 134 158 { … … 137 161 return renderer->nextSibling(); 138 162 139 if (m_phase == AttachContentForwarded) 140 return nextRendererOf(m_contentElement, m_node); 163 if (m_phase == AttachContentForwarded) { 164 if (RenderObject* found = nextRendererOf(m_contentElement, m_node)) 165 return found; 166 return NodeRenderingContext(m_contentElement).nextRenderer(); 167 } 141 168 142 169 // Avoid an O(n^2) problem with this function by not checking for … … 148 175 if (node->renderer()) 149 176 return node->renderer(); 177 if (node->isContentElement()) { 178 if (RenderObject* first = firstRendererOf(toShadowContentElement(node))) 179 return first; 180 } 150 181 } 151 182 … … 159 190 return renderer->previousSibling(); 160 191 161 if (m_phase == AttachContentForwarded) 162 return previousRendererOf(m_contentElement, m_node); 192 if (m_phase == AttachContentForwarded) { 193 if (RenderObject* found = previousRendererOf(m_contentElement, m_node)) 194 return found; 195 return NodeRenderingContext(m_contentElement).previousRenderer(); 196 } 163 197 164 198 // FIXME: We should have the same O(N^2) avoidance as nextRenderer does … … 167 201 if (node->renderer()) 168 202 return node->renderer(); 203 if (node->isContentElement()) { 204 if (RenderObject* last = lastRendererOf(toShadowContentElement(node))) 205 return last; 206 } 169 207 } 170 208
Note: See TracChangeset
for help on using the changeset viewer.