Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 56 , m_frameView(document->view()) | 56 , m_frameView(document->view()) |
| 57 , m_selectionStart(0) | 57 , m_selectionStart(0) |
| 58 , m_selectionEnd(0) | 58 , m_selectionEnd(0) |
| 59 , m_selectionStartPos(-1) | 59 , m_selectionStartPos(-1) |
| 60 , m_selectionEndPos(-1) | 60 , m_selectionEndPos(-1) |
| 61 , m_maximalOutlineSize(0) | 61 , m_maximalOutlineSize(0) |
| 62 , m_pageLogicalHeight(0) | 62 , m_pageLogicalHeight(0) |
| 63 , m_pageLogicalHeightChanged(false) | 63 , m_pageLogicalHeightChanged(false) |
| 64 , m_layoutState(0) | 64 , m_layoutState(0) |
| 65 , m_layoutStateDisableCount(0) | 65 , m_layoutStateDisableCount(0) |
| 66 , m_scopedCompositedScrollingUpdatersCount(0) | |
| 66 , m_renderQuoteHead(0) | 67 , m_renderQuoteHead(0) |
| 67 , m_renderCounterCount(0) | 68 , m_renderCounterCount(0) |
| 68 { | 69 { |
| 69 // init RenderObject attributes | 70 // init RenderObject attributes |
| 70 setInline(false); | 71 setInline(false); |
| 71 | 72 |
| 72 m_minPreferredLogicalWidth = 0; | 73 m_minPreferredLogicalWidth = 0; |
| 73 m_maxPreferredLogicalWidth = 0; | 74 m_maxPreferredLogicalWidth = 0; |
| 74 | 75 |
| 75 setPreferredLogicalWidthsDirty(true, MarkOnlyThis); | 76 setPreferredLogicalWidthsDirty(true, MarkOnlyThis); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 static RenderBox* enclosingSeamlessRenderer(Document* doc) | 141 static RenderBox* enclosingSeamlessRenderer(Document* doc) |
| 141 { | 142 { |
| 142 if (!doc) | 143 if (!doc) |
| 143 return 0; | 144 return 0; |
| 144 Element* ownerElement = doc->seamlessParentIFrame(); | 145 Element* ownerElement = doc->seamlessParentIFrame(); |
| 145 if (!ownerElement) | 146 if (!ownerElement) |
| 146 return 0; | 147 return 0; |
| 147 return ownerElement->renderBox(); | 148 return ownerElement->renderBox(); |
| 148 } | 149 } |
| 149 | 150 |
| 151 void RenderView::cancelScheduledCompositedScrollingUpdatesForLayer(RenderLayer* layer) | |
| 152 { | |
| 153 m_pendingContiguityUpdates.remove(layer); | |
| 154 m_pendingCompositedScrollingUpdates.remove(layer); | |
| 155 } | |
| 156 | |
| 150 void RenderView::addChild(RenderObject* newChild, RenderObject* beforeChild) | 157 void RenderView::addChild(RenderObject* newChild, RenderObject* beforeChild) |
| 151 { | 158 { |
| 152 // Seamless iframes are considered part of an enclosing render flow thread f rom the parent document. This is necessary for them to look | 159 // Seamless iframes are considered part of an enclosing render flow thread f rom the parent document. This is necessary for them to look |
| 153 // up regions in the parent document during layout. | 160 // up regions in the parent document during layout. |
| 154 if (newChild && !newChild->isRenderFlowThread()) { | 161 if (newChild && !newChild->isRenderFlowThread()) { |
| 155 RenderBox* seamlessBox = enclosingSeamlessRenderer(document()); | 162 RenderBox* seamlessBox = enclosingSeamlessRenderer(document()); |
| 156 if (seamlessBox && seamlessBox->flowThreadContainingBlock()) | 163 if (seamlessBox && seamlessBox->flowThreadContainingBlock()) |
| 157 newChild->setFlowThreadState(seamlessBox->flowThreadState()); | 164 newChild->setFlowThreadState(seamlessBox->flowThreadState()); |
| 158 } | 165 } |
| 159 RenderBlock::addChild(newChild, beforeChild); | 166 RenderBlock::addChild(newChild, beforeChild); |
| (...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1165 ASSERT(m_layoutState == layoutState); | 1172 ASSERT(m_layoutState == layoutState); |
| 1166 #endif | 1173 #endif |
| 1167 | 1174 |
| 1168 if (layoutState) | 1175 if (layoutState) |
| 1169 layoutState->m_isPaginated = m_fragmenting; | 1176 layoutState->m_isPaginated = m_fragmenting; |
| 1170 | 1177 |
| 1171 if (m_flowThreadState != RenderObject::NotInsideFlowThread) | 1178 if (m_flowThreadState != RenderObject::NotInsideFlowThread) |
| 1172 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); | 1179 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); |
| 1173 } | 1180 } |
| 1174 | 1181 |
| 1182 ScopedCompositedScrollingUpdater::ScopedCompositedScrollingUpdater(RenderView* r enderView) | |
| 1183 : m_renderView(renderView) | |
| 1184 { | |
| 1185 if (m_renderView) | |
|
Julien - ping for review
2013/04/09 21:06:43
Cannot be NULL per your explanation.
| |
| 1186 m_renderView->m_scopedCompositedScrollingUpdatersCount++; | |
| 1187 } | |
| 1188 | |
| 1189 ScopedCompositedScrollingUpdater::ScopedCompositedScrollingUpdater(RenderLayer* layer, CompositedScrollingUpdateMode mode) | |
| 1190 : m_renderView(0) | |
| 1191 { | |
| 1192 if (!layer || !layer->acceleratedCompositingForOverflowScrollEnabled()) | |
| 1193 return; | |
| 1194 | |
| 1195 m_renderView = layer->renderer()->view(); | |
| 1196 m_renderView->m_scopedCompositedScrollingUpdatersCount++; | |
| 1197 | |
| 1198 if (mode == UpdateNeedsCompositedScrolling) | |
| 1199 m_renderView->m_pendingCompositedScrollingUpdates.add(layer); | |
| 1200 else if (mode == UpdateDescendantsAreContiguousInStackingOrder) | |
| 1201 m_renderView->m_pendingContiguityUpdates.add(layer); | |
| 1202 } | |
| 1203 | |
| 1204 ScopedCompositedScrollingUpdater::~ScopedCompositedScrollingUpdater() | |
| 1205 { | |
| 1206 if (!m_renderView) | |
|
Julien - ping for review
2013/04/09 21:06:43
Cannot be NULL per your explanation.
| |
| 1207 return; | |
| 1208 | |
| 1209 m_renderView->m_scopedCompositedScrollingUpdatersCount--; | |
| 1210 ASSERT(m_renderView->m_scopedCompositedScrollingUpdatersCount >= 0); | |
| 1211 if (!m_renderView->m_scopedCompositedScrollingUpdatersCount) { | |
|
Julien - ping for review
2013/04/09 21:06:43
Early return.
| |
| 1212 HashSet<RenderLayer*> pendingCompositedScrollingUpdates = m_renderView-> m_pendingCompositedScrollingUpdates; | |
| 1213 m_renderView->m_pendingCompositedScrollingUpdates.clear(); | |
| 1214 | |
| 1215 HashSet<RenderLayer*> pendingContiguityUpdates = m_renderView->m_pending ContiguityUpdates; | |
| 1216 m_renderView->m_pendingContiguityUpdates.clear(); | |
| 1217 | |
| 1218 if (!pendingContiguityUpdates.isEmpty()) { | |
|
Julien - ping for review
2013/04/09 21:06:43
I don't think we need an isEmpty check as the iter
| |
| 1219 HashSet<RenderLayer*> stackingContexts; | |
| 1220 for (HashSet<RenderLayer*>::iterator iter = pendingContiguityUpdates .begin(); iter != pendingContiguityUpdates.end(); ++iter) { | |
| 1221 if (RenderLayer* stackingContext = (*iter)->enclosingStackingCon text()) | |
| 1222 stackingContexts.add(stackingContext); | |
| 1223 } | |
| 1224 for (HashSet<RenderLayer*>::iterator iter = stackingContexts.begin() ; iter != stackingContexts.end(); ++iter) { | |
| 1225 (*iter)->updateLayerListsIfNeeded(); | |
| 1226 (*iter)->updateDescendantsAreContiguousInStackingOrder(); | |
| 1227 } | |
| 1228 } | |
| 1229 | |
| 1230 if (!pendingCompositedScrollingUpdates.isEmpty()) { | |
|
Julien - ping for review
2013/04/09 21:06:43
Same comment.
| |
| 1231 for (HashSet<RenderLayer*>::iterator iter = pendingCompositedScrolli ngUpdates.begin(); iter != pendingCompositedScrollingUpdates.end(); ++iter) | |
| 1232 (*iter)->updateNeedsCompositedScrolling(); | |
| 1233 } | |
| 1234 } | |
|
Julien - ping for review
2013/04/09 21:06:43
You do store the HashSet into local variables and
| |
| 1235 } | |
| 1236 | |
| 1175 } // namespace WebCore | 1237 } // namespace WebCore |
| OLD | NEW |