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

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

Issue 14467003: Remove ENABLE_DIALOG_ELEMENT (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 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
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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
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->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 ENABLE(DIALOG_ELEMENT)
83 if (toElement(renderer->node())->isInTopLayer()) 82 if (toElement(renderer->node())->isInTopLayer())
84 return true; 83 return true;
85 #endif
86 return false; 84 return false;
87 } 85 }
88 86
89 RenderObject* NodeRenderingContext::nextRenderer() const 87 RenderObject* NodeRenderingContext::nextRenderer() const
90 { 88 {
91 if (RenderObject* renderer = m_node->renderer()) 89 if (RenderObject* renderer = m_node->renderer())
92 return renderer->nextSibling(); 90 return renderer->nextSibling();
93 91
94 #if ENABLE(DIALOG_ELEMENT)
95 Element* element = m_node->isElementNode() ? toElement(m_node) : 0; 92 Element* element = m_node->isElementNode() ? toElement(m_node) : 0;
96 if (element && element->isInTopLayer()) { 93 if (element && element->isInTopLayer()) {
97 const Vector<RefPtr<Element> >& topLayerElements = element->document()-> topLayerElements(); 94 const Vector<RefPtr<Element> >& topLayerElements = element->document()-> topLayerElements();
98 size_t position = topLayerElements.find(element); 95 size_t position = topLayerElements.find(element);
99 ASSERT(position != notFound); 96 ASSERT(position != notFound);
100 for (size_t i = position + 1; i < topLayerElements.size(); ++i) { 97 for (size_t i = position + 1; i < topLayerElements.size(); ++i) {
101 if (RenderObject* renderer = topLayerElements[i]->renderer()) 98 if (RenderObject* renderer = topLayerElements[i]->renderer())
102 return renderer; 99 return renderer;
103 } 100 }
104 return 0; 101 return 0;
105 } 102 }
106 #endif
107 103
108 if (m_parentFlowRenderer) 104 if (m_parentFlowRenderer)
109 return m_parentFlowRenderer->nextRendererForNode(m_node); 105 return m_parentFlowRenderer->nextRendererForNode(m_node);
110 106
111 // Avoid an O(N^2) problem with this function by not checking for 107 // Avoid an O(N^2) problem with this function by not checking for
112 // nextRenderer() when the parent element hasn't attached yet. 108 // nextRenderer() when the parent element hasn't attached yet.
113 if (m_renderingParent && !m_renderingParent->attached()) 109 if (m_renderingParent && !m_renderingParent->attached())
114 return 0; 110 return 0;
115 111
116 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) { 112 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) {
117 RenderObject* renderer = sibling->renderer(); 113 RenderObject* renderer = sibling->renderer();
118 if (renderer && !isRendererReparented(renderer)) 114 if (renderer && !isRendererReparented(renderer))
119 return renderer; 115 return renderer;
120 } 116 }
121 117
122 return 0; 118 return 0;
123 } 119 }
124 120
125 RenderObject* NodeRenderingContext::previousRenderer() const 121 RenderObject* NodeRenderingContext::previousRenderer() const
126 { 122 {
127 if (RenderObject* renderer = m_node->renderer()) 123 if (RenderObject* renderer = m_node->renderer())
128 return renderer->previousSibling(); 124 return renderer->previousSibling();
129 125
130 #if ENABLE(DIALOG_ELEMENT)
131 // FIXME: This doesn't work correctly for things in the top layer that are 126 // FIXME: This doesn't work correctly for things in the top layer that are
132 // display: none. We'd need to duplicate the logic in nextRenderer, but sinc e 127 // display: none. We'd need to duplicate the logic in nextRenderer, but sinc e
133 // nothing needs that yet just assert. 128 // nothing needs that yet just assert.
134 ASSERT(!m_node->isElementNode() || !toElement(m_node)->isInTopLayer()); 129 ASSERT(!m_node->isElementNode() || !toElement(m_node)->isInTopLayer());
135 #endif
136 130
137 if (m_parentFlowRenderer) 131 if (m_parentFlowRenderer)
138 return m_parentFlowRenderer->previousRendererForNode(m_node); 132 return m_parentFlowRenderer->previousRendererForNode(m_node);
139 133
140 // FIXME: We should have the same O(N^2) avoidance as nextRenderer does 134 // FIXME: We should have the same O(N^2) avoidance as nextRenderer does
141 // however, when I tried adding it, several tests failed. 135 // however, when I tried adding it, several tests failed.
142 for (Node* sibling = NodeRenderingTraversal::previousSibling(m_node); siblin g; sibling = NodeRenderingTraversal::previousSibling(sibling)) { 136 for (Node* sibling = NodeRenderingTraversal::previousSibling(m_node); siblin g; sibling = NodeRenderingTraversal::previousSibling(sibling)) {
143 RenderObject* renderer = sibling->renderer(); 137 RenderObject* renderer = sibling->renderer();
144 if (renderer && !isRendererReparented(renderer)) 138 if (renderer && !isRendererReparented(renderer))
145 return renderer; 139 return renderer;
146 } 140 }
147 141
148 return 0; 142 return 0;
149 } 143 }
150 144
151 RenderObject* NodeRenderingContext::parentRenderer() const 145 RenderObject* NodeRenderingContext::parentRenderer() const
152 { 146 {
153 if (RenderObject* renderer = m_node->renderer()) 147 if (RenderObject* renderer = m_node->renderer())
154 return renderer->parent(); 148 return renderer->parent();
155 149
156 #if ENABLE(DIALOG_ELEMENT)
157 if (m_node->isElementNode() && toElement(m_node)->isInTopLayer()) { 150 if (m_node->isElementNode() && toElement(m_node)->isInTopLayer()) {
158 // The parent renderer of top layer elements is the RenderView, but only 151 // The parent renderer of top layer elements is the RenderView, but only
159 // if the normal parent would have had a renderer. 152 // if the normal parent would have had a renderer.
160 // FIXME: This behavior isn't quite right as the spec for top layer 153 // FIXME: This behavior isn't quite right as the spec for top layer
161 // only talks about display: none ancestors so putting a <dialog> inside 154 // only talks about display: none ancestors so putting a <dialog> inside
162 // an <optgroup> seems like it should still work even though this check 155 // an <optgroup> seems like it should still work even though this check
163 // will prevent it. 156 // will prevent it.
164 if (!m_renderingParent || !m_renderingParent->renderer()) 157 if (!m_renderingParent || !m_renderingParent->renderer())
165 return 0; 158 return 0;
166 return m_node->document()->renderView(); 159 return m_node->document()->renderView();
167 } 160 }
168 #endif
169 161
170 if (m_parentFlowRenderer) 162 if (m_parentFlowRenderer)
171 return m_parentFlowRenderer; 163 return m_parentFlowRenderer;
172 164
173 return m_renderingParent ? m_renderingParent->renderer() : 0; 165 return m_renderingParent ? m_renderingParent->renderer() : 0;
174 } 166 }
175 167
176 bool NodeRenderingContext::shouldCreateRenderer() const 168 bool NodeRenderingContext::shouldCreateRenderer() const
177 { 169 {
178 if (!m_node->document()->shouldCreateRenderers()) 170 if (!m_node->document()->shouldCreateRenderers())
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); 306 newRenderer->setFlowThreadState(parentRenderer->flowThreadState());
315 307
316 RenderObject* nextRenderer = this->nextRenderer(); 308 RenderObject* nextRenderer = this->nextRenderer();
317 textNode->setRenderer(newRenderer); 309 textNode->setRenderer(newRenderer);
318 // Parent takes care of the animations, no need to call setAnimatableStyle. 310 // Parent takes care of the animations, no need to call setAnimatableStyle.
319 newRenderer->setStyle(m_style.release()); 311 newRenderer->setStyle(m_style.release());
320 parentRenderer->addChild(newRenderer, nextRenderer); 312 parentRenderer->addChild(newRenderer, nextRenderer);
321 } 313 }
322 314
323 } 315 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698