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

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

Issue 38943008: Explore the possibility of implementing the CSS Region interface. Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above 8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following 9 * copyright notice, this list of conditions and the following
10 * disclaimer. 10 * disclaimer.
(...skipping 13 matching lines...) Expand all
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE. 27 * SUCH DAMAGE.
28 */ 28 */
29 29
30 #include "config.h" 30 #include "config.h"
31 #include "core/dom/NamedFlow.h" 31 #include "core/dom/NamedFlow.h"
32 32
33 #include "RuntimeEnabledFeatures.h" 33 #include "RuntimeEnabledFeatures.h"
34 #include "core/css/CSSRegion.h"
34 #include "core/dom/NamedFlowCollection.h" 35 #include "core/dom/NamedFlowCollection.h"
36 #include "core/dom/Range.h"
35 #include "core/dom/StaticNodeList.h" 37 #include "core/dom/StaticNodeList.h"
36 #include "core/events/ThreadLocalEventNames.h" 38 #include "core/events/ThreadLocalEventNames.h"
37 #include "core/events/UIEvent.h" 39 #include "core/events/UIEvent.h"
38 #include "core/rendering/RenderNamedFlowThread.h" 40 #include "core/rendering/RenderNamedFlowThread.h"
39 #include "core/rendering/RenderRegion.h" 41 #include "core/rendering/RenderRegion.h"
40 42
41 namespace WebCore { 43 namespace WebCore {
42 44
43 NamedFlow::NamedFlow(PassRefPtr<NamedFlowCollection> manager, const AtomicString & flowThreadName) 45 NamedFlow::NamedFlow(PassRefPtr<NamedFlowCollection> manager, const AtomicString & flowThreadName)
44 : m_flowThreadName(flowThreadName) 46 : m_flowThreadName(flowThreadName)
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 // http://dev.w3.org/csswg/css-regions/#the-region-interface 112 // http://dev.w3.org/csswg/css-regions/#the-region-interface
111 if (renderRegion->isPseudoElement()) 113 if (renderRegion->isPseudoElement())
112 continue; 114 continue;
113 countNonPseudoRegions++; 115 countNonPseudoRegions++;
114 if (renderRegion->regionOversetState() == RegionEmpty) 116 if (renderRegion->regionOversetState() == RegionEmpty)
115 return countNonPseudoRegions; 117 return countNonPseudoRegions;
116 } 118 }
117 return -1; 119 return -1;
118 } 120 }
119 121
120 PassRefPtr<NodeList> NamedFlow::getRegionsByContent(Node* contentNode) 122 Vector<RefPtr<CSSRegion>> NamedFlow::getRegionsByContent(Node* contentNode)
121 { 123 {
122 Vector<RefPtr<Node> > regionNodes; 124 Vector<RefPtr<CSSRegion>> regionObjects;
Inactive 2013/10/25 17:51:48 C++11?
123 125
124 if (!contentNode) 126 if (!contentNode)
125 return StaticNodeList::adopt(regionNodes); 127 return regionObjects;
126 128
127 if (m_flowManager->document()) 129 if (m_flowManager->document())
128 m_flowManager->document()->updateLayoutIgnorePendingStylesheets(); 130 m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
129 131
130 // The renderer may be destroyed or created after the style update. 132 // The renderer may be destroyed or created after the style update.
131 // Because this is called from JS, where the wrapper keeps a reference to th e NamedFlow, no guard is necessary. 133 // Because this is called from JS, where the wrapper keeps a reference to th e NamedFlow, no guard is necessary.
132 if (!m_parentFlowThread) 134 if (!m_parentFlowThread)
133 return StaticNodeList::adopt(regionNodes); 135 return regionObjects;
134 136
135 if (inFlowThread(contentNode->renderer(), m_parentFlowThread)) { 137 if (inFlowThread(contentNode->renderer(), m_parentFlowThread)) {
136 const RenderRegionList& regionList = m_parentFlowThread->renderRegionLis t(); 138 const RenderRegionList& regionList = m_parentFlowThread->renderRegionLis t();
137 for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) { 139 for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) {
138 const RenderRegion* renderRegion = *iter; 140 const RenderRegion* renderRegion = *iter;
139 // They will be included when we will properly support the Region in terface 141 // They will be included when we will properly support the Region in terface
140 // http://dev.w3.org/csswg/css-regions/#the-region-interface 142 // http://dev.w3.org/csswg/css-regions/#the-region-interface
141 if (renderRegion->isPseudoElement()) 143 if (renderRegion->isPseudoElement())
142 continue; 144 continue;
143 if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion)) 145 if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion))
144 regionNodes.append(renderRegion->node()); 146 regionObjects.append(CSSRegion::create(renderRegion));
145 } 147 }
146 } 148 }
147 149
148 return StaticNodeList::adopt(regionNodes); 150 return regionObjects;
149 } 151 }
150 152
151 PassRefPtr<NodeList> NamedFlow::getRegions() 153 Vector<RefPtr<CSSRegion>> NamedFlow::getRegions()
152 { 154 {
153 Vector<RefPtr<Node> > regionNodes; 155 Vector<RefPtr<CSSRegion>> regionObjects;
154 156
155 if (m_flowManager->document()) 157 if (m_flowManager->document())
156 m_flowManager->document()->updateLayoutIgnorePendingStylesheets(); 158 m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
157 159
158 // The renderer may be destroyed or created after the style update. 160 // The renderer may be destroyed or created after the style update.
159 // Because this is called from JS, where the wrapper keeps a reference to th e NamedFlow, no guard is necessary. 161 // Because this is called from JS, where the wrapper keeps a reference to th e NamedFlow, no guard is necessary.
160 if (!m_parentFlowThread) 162 if (!m_parentFlowThread)
161 return StaticNodeList::adopt(regionNodes); 163 return regionObjects;
162 164
163 const RenderRegionList& regionList = m_parentFlowThread->renderRegionList(); 165 const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
164 for (RenderRegionList::const_iterator iter = regionList.begin(); iter != reg ionList.end(); ++iter) { 166 for (RenderRegionList::const_iterator iter = regionList.begin(); iter != reg ionList.end(); ++iter) {
165 const RenderRegion* renderRegion = *iter; 167 const RenderRegion* renderRegion = *iter;
166 // They will be included when we will properly support the Region interf ace 168 // They will be included when we will properly support the Region interf ace
167 // http://dev.w3.org/csswg/css-regions/#the-region-interface 169 // http://dev.w3.org/csswg/css-regions/#the-region-interface
168 if (renderRegion->isPseudoElement()) 170 if (renderRegion->isPseudoElement())
169 continue; 171 continue;
170 regionNodes.append(renderRegion->node()); 172 regionObjects.append(CSSRegion::create(renderRegion));
171 } 173 }
172 174
173 return StaticNodeList::adopt(regionNodes); 175 return regionObjects;
174 } 176 }
175 177
176 PassRefPtr<NodeList> NamedFlow::getContent() 178 PassRefPtr<NodeList> NamedFlow::getContent()
177 { 179 {
178 Vector<RefPtr<Node> > contentNodes; 180 Vector<RefPtr<Node> > contentNodes;
179 181
180 if (m_flowManager->document()) 182 if (m_flowManager->document())
181 m_flowManager->document()->updateLayoutIgnorePendingStylesheets(); 183 m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
182 184
183 // The renderer may be destroyed or created after the style update. 185 // The renderer may be destroyed or created after the style update.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 return m_flowManager->document(); 242 return m_flowManager->document();
241 } 243 }
242 244
243 Node* NamedFlow::ownerNode() const 245 Node* NamedFlow::ownerNode() const
244 { 246 {
245 return m_flowManager->document(); 247 return m_flowManager->document();
246 } 248 }
247 249
248 } // namespace WebCore 250 } // namespace WebCore
249 251
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698