diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/FlowThreadController.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/rendering/FlowThreadController.cpp')
-rw-r--r-- | Source/WebCore/rendering/FlowThreadController.cpp | 80 |
1 files changed, 24 insertions, 56 deletions
diff --git a/Source/WebCore/rendering/FlowThreadController.cpp b/Source/WebCore/rendering/FlowThreadController.cpp index f69d3244c..9d493ca8d 100644 --- a/Source/WebCore/rendering/FlowThreadController.cpp +++ b/Source/WebCore/rendering/FlowThreadController.cpp @@ -40,14 +40,8 @@ namespace WebCore { -PassOwnPtr<FlowThreadController> FlowThreadController::create(RenderView* view) -{ - return adoptPtr(new FlowThreadController(view)); -} - FlowThreadController::FlowThreadController(RenderView* view) : m_view(view) - , m_currentRenderFlowThread(0) , m_isRenderNamedFlowThreadOrderDirty(false) , m_flowThreadsWithAutoLogicalHeightRegions(0) { @@ -60,21 +54,20 @@ FlowThreadController::~FlowThreadController() RenderNamedFlowThread& FlowThreadController::ensureRenderFlowThreadWithName(const AtomicString& name) { if (!m_renderNamedFlowThreadList) - m_renderNamedFlowThreadList = adoptPtr(new RenderNamedFlowThreadList()); + m_renderNamedFlowThreadList = std::make_unique<RenderNamedFlowThreadList>(); else { - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { if (flowRenderer->flowThreadName() == name) return *flowRenderer; } } - NamedFlowCollection* namedFlows = m_view->document().namedFlows(); + NamedFlowCollection& namedFlows = m_view->document().namedFlows(); // Sanity check for the absence of a named flow in the "CREATED" state with the same name. - ASSERT(!namedFlows->flowByName(name)); + ASSERT(!namedFlows.flowByName(name)); - auto flowRenderer = new RenderNamedFlowThread(m_view->document(), RenderFlowThread::createFlowThreadStyle(&m_view->style()), namedFlows->ensureFlowWithName(name)); + auto flowRenderer = new RenderNamedFlowThread(m_view->document(), RenderFlowThread::createFlowThreadStyle(&m_view->style()), namedFlows.ensureFlowWithName(name)); flowRenderer->initializeStyle(); m_renderNamedFlowThreadList->add(flowRenderer); @@ -88,21 +81,16 @@ RenderNamedFlowThread& FlowThreadController::ensureRenderFlowThreadWithName(cons void FlowThreadController::styleDidChange() { - RenderStyle& viewStyle = m_view->style(); - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + auto& viewStyle = m_view->style(); + for (auto& flowRenderer : *m_renderNamedFlowThreadList) flowRenderer->setStyle(RenderFlowThread::createFlowThreadStyle(&viewStyle)); - } } void FlowThreadController::layoutRenderNamedFlowThreads() { updateFlowThreadsChainIfNecessary(); - - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) flowRenderer->layoutIfNeeded(); - } } void FlowThreadController::registerNamedFlowContentElement(Element& contentElement, RenderNamedFlowThread& namedFlow) @@ -130,8 +118,7 @@ void FlowThreadController::updateFlowThreadsChainIfNecessary() // Remove the left-over flow threads. RenderNamedFlowThreadList toRemoveList; - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { if (flowRenderer->isMarkedForDestruction()) toRemoveList.add(flowRenderer); } @@ -139,8 +126,7 @@ void FlowThreadController::updateFlowThreadsChainIfNecessary() if (toRemoveList.size() > 0) setIsRenderNamedFlowThreadOrderDirty(true); - for (auto iter = toRemoveList.begin(), end = toRemoveList.end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : toRemoveList) { m_renderNamedFlowThreadList->remove(flowRenderer); flowRenderer->destroy(); } @@ -148,8 +134,7 @@ void FlowThreadController::updateFlowThreadsChainIfNecessary() if (isRenderNamedFlowThreadOrderDirty()) { // Arrange the thread list according to dependencies. RenderNamedFlowThreadList sortedList; - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { if (sortedList.contains(flowRenderer)) continue; flowRenderer->pushDependencies(sortedList); @@ -164,8 +149,7 @@ bool FlowThreadController::updateFlowThreadsNeedingLayout() { bool needsTwoPassLayout = false; - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { ASSERT(!flowRenderer->needsTwoPhasesLayout()); ASSERT(flowRenderer->inMeasureContentLayoutPhase()); if (flowRenderer->needsLayout() && flowRenderer->hasAutoLogicalHeightRegions()) @@ -182,8 +166,7 @@ bool FlowThreadController::updateFlowThreadsNeedingTwoStepLayout() { bool needsTwoPassLayout = false; - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { if (flowRenderer->needsTwoPhasesLayout()) { needsTwoPassLayout = true; break; @@ -198,8 +181,7 @@ bool FlowThreadController::updateFlowThreadsNeedingTwoStepLayout() void FlowThreadController::resetFlowThreadsWithAutoHeightRegions() { - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { if (flowRenderer->hasAutoLogicalHeightRegions()) { flowRenderer->markAutoLogicalHeightRegionsForLayout(); flowRenderer->invalidateRegions(); @@ -242,10 +224,10 @@ void FlowThreadController::updateFlowThreadsIntoOverflowPhase() void FlowThreadController::updateFlowThreadsIntoMeasureContentPhase() { - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { ASSERT(flowRenderer->inFinalLayoutPhase()); + flowRenderer->dispatchNamedFlowEvents(); flowRenderer->setLayoutPhase(RenderFlowThread::LayoutPhaseMeasureContent); } } @@ -263,31 +245,19 @@ void FlowThreadController::updateFlowThreadsIntoFinalPhase() } } -#if USE(ACCELERATED_COMPOSITING) -void FlowThreadController::updateRenderFlowThreadLayersIfNeeded() +void FlowThreadController::updateFlowThreadsLayerToRegionMappingsIfNeeded() { - // Walk the flow chain in reverse order because RenderRegions might become RenderLayers for the following flow threads. - for (auto iter = m_renderNamedFlowThreadList->rbegin(), end = m_renderNamedFlowThreadList->rend(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) flowRenderer->updateAllLayerToRegionMappingsIfNeeded(); - } -} -#endif - -bool FlowThreadController::isContentElementRegisteredWithAnyNamedFlow(const Element& contentElement) const -{ - return m_mapNamedFlowContentElement.contains(&contentElement); } void FlowThreadController::updateNamedFlowsLayerListsIfNeeded() { - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; + for (auto& flowRenderer : *m_renderNamedFlowThreadList) flowRenderer->layer()->updateLayerListsIfNeeded(); - } } -static inline bool compareZIndex(RenderLayer* first, RenderLayer* second) +static inline bool compareZIndexFlowThreadController(RenderLayer* first, RenderLayer* second) { return first->zIndex() < second->zIndex(); } @@ -296,9 +266,7 @@ static inline bool compareZIndex(RenderLayer* first, RenderLayer* second) // These layers are painted and hit-tested starting from RenderView not from regions. void FlowThreadController::collectFixedPositionedLayers(Vector<RenderLayer*>& fixedPosLayers) const { - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - RenderNamedFlowThread* flowRenderer = *iter; - + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { // If the named flow does not have any regions attached, a fixed element should not be // displayed even if the fixed element is positioned/sized by the viewport. if (!flowRenderer->hasRegions()) @@ -324,7 +292,7 @@ void FlowThreadController::collectFixedPositionedLayers(Vector<RenderLayer*>& fi } } - std::stable_sort(fixedPosLayers.begin(), fixedPosLayers.end(), compareZIndex); + std::stable_sort(fixedPosLayers.begin(), fixedPosLayers.end(), compareZIndexFlowThreadController); } #ifndef NDEBUG @@ -333,8 +301,8 @@ bool FlowThreadController::isAutoLogicalHeightRegionsCountConsistent() const if (!hasRenderNamedFlowThreads()) return !hasFlowThreadsWithAutoLogicalHeightRegions(); - for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { - if (!(*iter)->isAutoLogicalHeightRegionsCountConsistent()) + for (auto& flowRenderer : *m_renderNamedFlowThreadList) { + if (!flowRenderer->isAutoLogicalHeightRegionsCountConsistent()) return false; } |