Changeset 162602 in webkit
- Timestamp:
- Jan 23, 2014 2:02:11 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r162601 r162602 1 2014-01-23 Andrei Bucur <abucur@adobe.com> 2 3 [CSS Regions] Convert regions iterator loops to range-based loops 4 https://bugs.webkit.org/show_bug.cgi?id=127464 5 6 Reviewed by Antti Koivisto. 7 8 Replace most of the iterator loops in the region implementation with 9 range based for loops. The for loops that iterate only over subsets 10 of collections have not been changed. 11 12 Tests: no new tests, this is a refactoring patch. 13 14 * dom/WebKitNamedFlow.cpp: 15 (WebCore::WebKitNamedFlow::firstEmptyRegionIndex): 16 (WebCore::WebKitNamedFlow::getRegionsByContent): 17 (WebCore::WebKitNamedFlow::getRegions): 18 (WebCore::WebKitNamedFlow::getContent): 19 * inspector/InspectorOverlay.cpp: 20 (WebCore::buildObjectForCSSRegionsHighlight): 21 * rendering/RenderFlowThread.cpp: 22 (WebCore::RenderFlowThread::validateRegions): 23 (WebCore::RenderFlowThread::updateLogicalWidth): 24 (WebCore::RenderFlowThread::computeLogicalHeight): 25 (WebCore::RenderFlowThread::repaintRectangleInRegions): 26 (WebCore::RenderFlowThread::removeRenderBoxRegionInfo): 27 (WebCore::RenderFlowThread::logicalWidthChangedInRegionsForBlock): 28 (WebCore::RenderFlowThread::clearRenderBoxRegionInfoAndCustomStyle): 29 (WebCore::RenderFlowThread::isAutoLogicalHeightRegionsCountConsistent): 30 (WebCore::RenderFlowThread::markAutoLogicalHeightRegionsForLayout): 31 (WebCore::RenderFlowThread::markRegionsForOverflowLayoutIfNeeded): 32 (WebCore::RenderFlowThread::updateRegionsFlowThreadPortionRect): 33 (WebCore::RenderFlowThread::collectLayerFragments): 34 (WebCore::RenderFlowThread::fragmentsBoundingBox): 35 * rendering/RenderNamedFlowFragment.cpp: 36 (WebCore::RenderNamedFlowFragment::setRegionObjectsRegionStyle): 37 (WebCore::RenderNamedFlowFragment::restoreRegionObjectsOriginalStyle): 38 * rendering/RenderNamedFlowThread.cpp: 39 (WebCore::RenderNamedFlowThread::clearContentElements): 40 (WebCore::RenderNamedFlowThread::nextRendererForNode): 41 (WebCore::RenderNamedFlowThread::dependsOn): 42 (WebCore::RenderNamedFlowThread::computeOversetStateForRegions): 43 (WebCore::RenderNamedFlowThread::checkInvalidRegions): 44 (WebCore::RenderNamedFlowThread::pushDependencies): 45 (WebCore::RenderNamedFlowThread::registerNamedFlowContentElement): 46 (WebCore::isContainedInElements): 47 (WebCore::RenderNamedFlowThread::getRanges): 48 (WebCore::RenderNamedFlowThread::checkRegionsWithStyling): 49 (WebCore::RenderNamedFlowThread::clearRenderObjectCustomStyle): 50 * rendering/RenderTreeAsText.cpp: 51 (WebCore::writeRenderRegionList): 52 1 53 2014-01-23 László Langó <llango.u-szeged@partner.samsung.com> 2 54 -
trunk/Source/WebCore/dom/WebKitNamedFlow.cpp
r161097 r162602 100 100 101 101 int countNonPseudoRegions = -1; 102 auto iter = regionList.begin();103 for (int index = 0; iter != regionList.end(); ++index, ++iter) {102 for (const auto& renderRegion : regionList) { 103 const RenderNamedFlowFragment* namedFlowFragment = toRenderNamedFlowFragment(renderRegion); 104 104 // FIXME: Pseudo-elements are not included in the list. 105 105 // They will be included when we will properly support the Region interface 106 106 // http://dev.w3.org/csswg/css-regions/#the-region-interface 107 const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter); 108 if (renderRegion->isPseudoElementRegion()) 107 if (namedFlowFragment->isPseudoElementRegion()) 109 108 continue; 110 109 countNonPseudoRegions++; 111 if ( renderRegion->regionOversetState() == RegionEmpty)110 if (namedFlowFragment->regionOversetState() == RegionEmpty) 112 111 return countNonPseudoRegions; 113 112 } … … 132 131 if (inFlowThread(contentNode->renderer(), m_parentFlowThread)) { 133 132 const RenderRegionList& regionList = m_parentFlowThread->renderRegionList(); 134 for (auto iter = regionList.begin(), end = regionList.end(); iter != end; ++iter) { 133 for (const auto& renderRegion : regionList) { 134 const RenderNamedFlowFragment* namedFlowFragment = toRenderNamedFlowFragment(renderRegion); 135 135 // FIXME: Pseudo-elements are not included in the list. 136 136 // They will be included when we will properly support the Region interface 137 137 // http://dev.w3.org/csswg/css-regions/#the-region-interface 138 const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter); 139 if (renderRegion->isPseudoElementRegion()) 138 if (namedFlowFragment->isPseudoElementRegion()) 140 139 continue; 141 if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion)) {142 ASSERT( renderRegion->generatingElement());143 regionElements.append(* renderRegion->generatingElement());140 if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), namedFlowFragment)) { 141 ASSERT(namedFlowFragment->generatingElement()); 142 regionElements.append(*namedFlowFragment->generatingElement()); 144 143 } 145 144 } … … 162 161 163 162 const RenderRegionList& regionList = m_parentFlowThread->renderRegionList(); 164 for (auto iter = regionList.begin(), end = regionList.end(); iter != end; ++iter) { 163 for (const auto& renderRegion : regionList) { 164 const RenderNamedFlowFragment* namedFlowFragment = toRenderNamedFlowFragment(renderRegion); 165 165 // FIXME: Pseudo-elements are not included in the list. 166 166 // They will be included when we will properly support the Region interface 167 167 // http://dev.w3.org/csswg/css-regions/#the-region-interface 168 const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter); 169 if (renderRegion->isPseudoElementRegion()) 168 if (namedFlowFragment->isPseudoElementRegion()) 170 169 continue; 171 ASSERT( renderRegion->generatingElement());172 regionElements.append(* renderRegion->generatingElement());170 ASSERT(namedFlowFragment->generatingElement()); 171 regionElements.append(*namedFlowFragment->generatingElement()); 173 172 } 174 173 … … 189 188 190 189 const NamedFlowContentElements& contentElementsList = m_parentFlowThread->contentElements(); 191 for (auto it = contentElementsList.begin(), end = contentElementsList.end(); it != end; ++it) { 192 Element* element = *it; 190 for (auto& element : contentElementsList) { 193 191 ASSERT(element->computedStyle()->flowThread() == m_parentFlowThread->flowThreadName()); 194 192 contentElements.append(*element); -
trunk/Source/WebCore/inspector/InspectorOverlay.cpp
r162374 r162602 435 435 436 436 const RenderRegionList& regionList = flowThread->renderRegionList(); 437 for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) { 438 RenderRegion* iterRegion = *iter; 437 for (auto& iterRegion : regionList) { 439 438 if (!iterRegion->isValid()) 440 439 continue; -
trunk/Source/WebCore/rendering/RenderFlowThread.cpp
r162523 r162602 162 162 bool firstRegionVisited = false; 163 163 164 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 165 RenderRegion* region = *iter; 164 for (auto& region : m_regionList) { 166 165 ASSERT(!region->needsLayout() || region->isRenderRegionSet()); 167 166 … … 366 365 { 367 366 LayoutUnit logicalWidth = initialLogicalWidth(); 368 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 369 RenderRegion* region = *iter; 367 for (auto& region : m_regionList) { 370 368 ASSERT(!region->needsLayout() || region->isRenderRegionSet()); 371 369 logicalWidth = std::max(region->pageLogicalWidth(), logicalWidth); … … 374 372 375 373 // If the regions have non-uniform logical widths, then insert inset information for the RenderFlowThread. 376 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 377 RenderRegion* region = *iter; 374 for (auto& region : m_regionList) { 378 375 LayoutUnit regionLogicalWidth = region->pageLogicalWidth(); 379 376 LayoutUnit logicalLeft = style().direction() == LTR ? LayoutUnit() : logicalWidth - regionLogicalWidth; … … 388 385 389 386 const LayoutUnit maxFlowSize = RenderFlowThread::maxLogicalHeight(); 390 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 391 RenderRegion* region = *iter; 387 for (auto& region : m_regionList) { 392 388 ASSERT(!region->needsLayout() || region->isRenderRegionSet()); 393 389 … … 435 431 CurrentRenderFlowThreadDisabler disabler(&view()); 436 432 437 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 438 RenderRegion* region = *iter; 439 433 for (auto& region : m_regionList) 440 434 region->repaintFlowThreadContent(repaintRect, immediate); 441 }442 435 } 443 436 … … 630 623 getRegionRangeForBox(box, startRegion, endRegion); 631 624 632 for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) { 633 RenderRegion* region = *iter; 625 for (auto& region : m_regionList) { 634 626 region->removeRenderBoxRegionInfo(box); 635 627 if (region == endRegion) … … 639 631 #ifndef NDEBUG 640 632 // We have to make sure we did not leave any RenderBoxRegionInfo attached. 641 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 642 RenderRegion* region = *iter; 633 for (auto& region : m_regionList) 643 634 ASSERT(!region->renderBoxRegionInfo(box)); 644 }645 635 #endif 646 636 … … 677 667 } 678 668 679 for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) { 680 RenderRegion* region = *iter; 669 for (auto& region : m_regionList) { 681 670 ASSERT(!region->needsLayout() || region->isRenderRegionSet()); 682 671 … … 746 735 bool insideOldRegionRange = false; 747 736 bool insideNewRegionRange = false; 748 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 749 RenderRegion* region = *iter; 750 737 for (auto& region : m_regionList) { 751 738 if (oldStartRegion == region) 752 739 insideOldRegionRange = true; … … 897 884 { 898 885 unsigned autoLogicalHeightRegions = 0; 899 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 900 const RenderRegion* region = *iter; 886 for (const auto& region : m_regionList) { 901 887 if (region->hasAutoLogicalHeight()) 902 888 autoLogicalHeightRegions++; … … 930 916 ASSERT(hasAutoLogicalHeightRegions()); 931 917 932 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 933 RenderRegion* region = *iter; 918 for (auto& region : m_regionList) { 934 919 if (!region->hasAutoLogicalHeight()) 935 920 continue; … … 946 931 return; 947 932 948 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 949 RenderRegion* region = *iter; 933 for (auto& region : m_regionList) 950 934 region->setNeedsSimplifiedNormalFlowLayout(); 951 }952 935 } 953 936 … … 960 943 m_regionIntervalTree.clear(); 961 944 m_regionIntervalTree.initIfNeeded(); 962 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 963 RenderRegion* region = *iter; 964 945 for (auto& region : m_regionList) { 965 946 // If we find an empty auto-height region, clear the computedAutoHeight value. 966 947 if (emptyRegionsSegment && region->hasAutoLogicalHeight()) … … 1082 1063 ASSERT(!m_regionsInvalidated); 1083 1064 1084 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 1085 RenderRegion* region = *iter; 1065 for (auto& region : m_regionList) 1086 1066 region->collectLayerFragments(layerFragments, layerBoundingBox, dirtyRect); 1087 }1088 1067 } 1089 1068 … … 1093 1072 1094 1073 LayoutRect result; 1095 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 1096 RenderRegion* region = *iter; 1074 for (auto& region : m_regionList) { 1097 1075 LayerFragments fragments; 1098 1076 region->collectLayerFragments(fragments, layerBoundingBox, LayoutRect::infiniteRect()); 1099 for (size_t i = 0; i < fragments.size(); ++i) { 1100 const LayerFragment& fragment = fragments.at(i); 1077 for (const auto& fragment : fragments) { 1101 1078 LayoutRect fragmentRect(layerBoundingBox); 1102 1079 fragmentRect.intersect(fragment.paginationClip); -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp
r161553 r162602 309 309 const NamedFlowContentElements& contentElements = namedFlow.contentElements(); 310 310 311 for (auto iter = contentElements.begin(), end = contentElements.end(); iter != end; ++iter) { 312 const Element* element = *iter; 311 for (const auto& element : contentElements) { 313 312 // The list of content nodes contains also the nodes with display:none. 314 313 if (!element->renderer()) … … 344 343 345 344 RenderObjectRegionStyleMap temp; 346 for (auto iter = m_renderObjectRegionStyle.begin(), end = m_renderObjectRegionStyle.end(); iter != end; ++iter) {347 RenderObject* object = const_cast<RenderObject*>( iter->key);345 for (auto& objectPair : m_renderObjectRegionStyle) { 346 RenderObject* object = const_cast<RenderObject*>(objectPair.key); 348 347 RefPtr<RenderStyle> objectRegionStyle = &object->style(); 349 RefPtr<RenderStyle> objectOriginalStyle = iter->value.style;348 RefPtr<RenderStyle> objectOriginalStyle = objectPair.value.style; 350 349 if (object->isRenderElement()) 351 350 toRenderElement(object)->setStyleInternal(*objectOriginalStyle); 352 351 353 bool shouldCacheRegionStyle = iter->value.cached;352 bool shouldCacheRegionStyle = objectPair.value.cached; 354 353 if (!shouldCacheRegionStyle) { 355 354 // Check whether we should cache the computed style in region. -
trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp
r161768 r162602 74 74 void RenderNamedFlowThread::clearContentElements() 75 75 { 76 for (auto it = m_contentElements.begin(), end = m_contentElements.end(); it != end; ++it) { 77 Element* contentElement = *it; 78 76 for (auto& contentElement : m_contentElements) { 79 77 ASSERT(contentElement); 80 78 ASSERT(contentElement->inNamedFlow()); … … 103 101 RenderObject* RenderNamedFlowThread::nextRendererForNode(Node* node) const 104 102 { 105 for (auto it = m_flowThreadChildList->begin(), end = m_flowThreadChildList->end(); it != end; ++it) {106 RenderObject* child = *it;103 const FlowThreadChildList& childList = *(m_flowThreadChildList.get()); 104 for (auto& child : childList) { 107 105 ASSERT(child->node()); 108 106 unsigned short position = node->compareDocumentPosition(child->node()); … … 166 164 167 165 // Recursively traverse the m_layoutBeforeThreadsSet. 168 for ( auto iterator = m_layoutBeforeThreadsSet.begin(), end = m_layoutBeforeThreadsSet.end(); iterator != end; ++iterator) {169 const RenderNamedFlowThread* beforeFlowThread = (*iterator).key;166 for (const auto& beforeFlowThreadPair : m_layoutBeforeThreadsSet) { 167 const auto& beforeFlowThread = beforeFlowThreadPair.key; 170 168 if (beforeFlowThread->dependsOn(otherRenderFlowThread)) 171 169 return true; … … 327 325 328 326 RenderRegion* lastReg = lastRegion(); 329 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) { 330 RenderRegion* region = *iter; 327 for (auto& region : m_regionList) { 331 328 LayoutUnit flowMin = height - (isHorizontalWritingMode() ? region->flowThreadPortionRect().y() : region->flowThreadPortionRect().x()); 332 329 LayoutUnit flowMax = height - (isHorizontalWritingMode() ? region->flowThreadPortionRect().maxY() : region->flowThreadPortionRect().maxX()); … … 364 361 { 365 362 Vector<RenderRegion*> newValidRegions; 366 for (auto iter = m_invalidRegionList.begin(), end = m_invalidRegionList.end(); iter != end; ++iter) { 367 RenderRegion* region = *iter; 363 for (auto& region : m_invalidRegionList) { 368 364 // The only reason a region would be invalid is because it has a parent flow thread. 369 365 ASSERT(!region->isValid() && region->parentNamedFlowThread()); … … 374 370 } 375 371 376 for (auto iter = newValidRegions.begin(), end = newValidRegions.end(); iter != end; ++iter) { 377 RenderRegion* region = *iter; 372 for (auto& region : newValidRegions) { 378 373 m_invalidRegionList.remove(region); 379 374 region->parentNamedFlowThread()->m_observerThreadsSet.remove(this); … … 393 388 copyToVector(m_observerThreadsSet, observers); 394 389 395 for (size_t i = 0; i < observers.size(); ++i) { 396 RenderNamedFlowThread* flowThread = observers.at(i); 390 for (auto& flowThread : observers) 397 391 flowThread->checkInvalidRegions(); 398 }399 392 } 400 393 … … 419 412 void RenderNamedFlowThread::pushDependencies(RenderNamedFlowThreadList& list) 420 413 { 421 for (auto iter = m_layoutBeforeThreadsSet.begin(), end = m_layoutBeforeThreadsSet.end(); iter != end; ++iter) {422 RenderNamedFlowThread* flowThread = (*iter).key;414 for (auto& flowThreadPair : m_layoutBeforeThreadsSet) { 415 auto& flowThread = flowThreadPair.key; 423 416 if (list.contains(flowThread)) 424 417 continue; … … 440 433 441 434 // Find the first content node following the new content node. 442 for (auto it = m_contentElements.begin(), end = m_contentElements.end(); it != end; ++it) { 443 Element* element = *it; 435 for (auto& element : m_contentElements) { 444 436 unsigned short position = contentElement.compareDocumentPosition(element); 445 437 if (position & Node::DOCUMENT_POSITION_FOLLOWING) { … … 551 543 static bool isContainedInElements(const Vector<Element*>& others, Element* element) 552 544 { 553 for (size_t i = 0; i < others.size(); i++) { 554 Element* other = others.at(i); 545 for (auto& other : others) { 555 546 if (other->contains(element)) 556 547 return true; … … 600 591 Vector<Element*> elements; 601 592 // eliminate the contentElements that are descendants of other contentElements 602 for (auto it = contentElements().begin(), end = contentElements().end(); it != end; ++it) { 603 Element* element = *it; 593 for (auto& element : contentElements()) { 604 594 if (!isContainedInElements(elements, element)) 605 595 elements.append(element); 606 596 } 607 597 608 for (size_t i = 0; i < elements.size(); i++) { 609 Element* contentElement = elements.at(i); 598 for (auto& contentElement : elements) { 610 599 if (!contentElement->renderer()) 611 600 continue; … … 745 734 { 746 735 bool hasRegionsWithStyling = false; 747 for ( auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) {748 RenderNamedFlowFragment* region = toRenderNamedFlowFragment(*iter);749 if ( region->hasCustomRegionStyle()) {736 for (const auto& region : m_regionList) { 737 const RenderNamedFlowFragment* namedFlowFragment = toRenderNamedFlowFragment(region); 738 if (namedFlowFragment->hasCustomRegionStyle()) { 750 739 hasRegionsWithStyling = true; 751 740 break; … … 759 748 // Clear the styles for the object in the regions. 760 749 // FIXME: Region styling is not computed only for the region range of the object so this is why we need to walk the whole chain. 761 for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) {762 RenderNamedFlowFragment* region = toRenderNamedFlowFragment(*iter);763 region->clearObjectStyleInRegion(object);750 for (auto& region : m_regionList) { 751 RenderNamedFlowFragment* namedFlowFragment = toRenderNamedFlowFragment(region); 752 namedFlowFragment->clearObjectStyleInRegion(object); 764 753 } 765 754 } -
trunk/Source/WebCore/rendering/RenderTreeAsText.cpp
r160598 r162602 658 658 static void writeRenderRegionList(const RenderRegionList& flowThreadRegionList, TextStream& ts, int indent) 659 659 { 660 for (RenderRegionList::const_iterator itRR = flowThreadRegionList.begin(); itRR != flowThreadRegionList.end(); ++itRR) { 661 RenderRegion* renderRegion = *itRR; 662 660 for (const auto& renderRegion : flowThreadRegionList) { 663 661 writeIndent(ts, indent); 664 662 ts << static_cast<const RenderObject*>(renderRegion)->renderName();
Note: See TracChangeset
for help on using the changeset viewer.