| Index: Source/core/layout/LayoutBlock.cpp
 | 
| diff --git a/Source/core/layout/LayoutBlock.cpp b/Source/core/layout/LayoutBlock.cpp
 | 
| index 9486811773f21504ffaaa0fe8229eec62e0be7a7..537e928a68bb7a3b14a98b1b91aef76aed51f478 100644
 | 
| --- a/Source/core/layout/LayoutBlock.cpp
 | 
| +++ b/Source/core/layout/LayoutBlock.cpp
 | 
| @@ -162,9 +162,8 @@ LayoutBlock::LayoutBlock(ContainerNode* node)
 | 
|  static void removeBlockFromDescendantAndContainerMaps(LayoutBlock* block, TrackedDescendantsMap*& descendantMap, TrackedContainerMap*& containerMap)
 | 
|  {
 | 
|      if (OwnPtr<TrackedRendererListHashSet> descendantSet = descendantMap->take(block)) {
 | 
| -        TrackedRendererListHashSet::iterator end = descendantSet->end();
 | 
| -        for (TrackedRendererListHashSet::iterator descendant = descendantSet->begin(); descendant != end; ++descendant) {
 | 
| -            TrackedContainerMap::iterator it = containerMap->find(*descendant);
 | 
| +        for (auto& descendant : *descendantSet) {
 | 
| +            TrackedContainerMap::iterator it = containerMap->find(descendant);
 | 
|              ASSERT(it != containerMap->end());
 | 
|              if (it == containerMap->end())
 | 
|                  continue;
 | 
| @@ -369,9 +368,7 @@ void LayoutBlock::invalidatePaintOfSubtreesIfNeeded(PaintInvalidationState& chil
 | 
|  
 | 
|      // Take care of positioned objects. This is required as PaintInvalidationState keeps a single clip rect.
 | 
|      if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects()) {
 | 
| -        TrackedRendererListHashSet::iterator end = positionedObjects->end();
 | 
| -        for (TrackedRendererListHashSet::iterator it = positionedObjects->begin(); it != end; ++it) {
 | 
| -            LayoutBox* box = *it;
 | 
| +        for (auto* box : *positionedObjects) {
 | 
|  
 | 
|              // One of the renderers we're skipping over here may be the child's paint invalidation container,
 | 
|              // so we can't pass our own paint invalidation container along.
 | 
| @@ -1339,8 +1336,7 @@ void LayoutBlock::finishDelayUpdateScrollInfo()
 | 
|          OwnPtr<DelayedUpdateScrollInfoSet> infoSet(adoptPtr(gDelayedUpdateScrollInfoSet));
 | 
|          gDelayedUpdateScrollInfoSet = 0;
 | 
|  
 | 
| -        for (DelayedUpdateScrollInfoSet::iterator it = infoSet->begin(); it != infoSet->end(); ++it) {
 | 
| -            LayoutBlock* block = *it;
 | 
| +        for (auto* block : *infoSet) {
 | 
|              if (block->hasOverflowClip()) {
 | 
|                  block->layer()->scrollableArea()->updateAfterLayout();
 | 
|              }
 | 
| @@ -1411,8 +1407,8 @@ bool LayoutBlock::updateImageLoadingPriorities()
 | 
|          screenArea.intersect(objectBounds);
 | 
|      }
 | 
|  
 | 
| -    for (Vector<ImageResource*>::iterator it = images.begin(), end = images.end(); it != end; ++it)
 | 
| -        ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->notifyImageResourceVisibility(*it, status, screenArea);
 | 
| +    for (auto* imageResource : images)
 | 
| +        ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->notifyImageResourceVisibility(imageResource, status, screenArea);
 | 
|  
 | 
|      return true;
 | 
|  }
 | 
| @@ -1507,11 +1503,7 @@ void LayoutBlock::addOverflowFromPositionedObjects()
 | 
|      if (!positionedDescendants)
 | 
|          return;
 | 
|  
 | 
| -    LayoutBox* positionedObject;
 | 
| -    TrackedRendererListHashSet::iterator end = positionedDescendants->end();
 | 
| -    for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it) {
 | 
| -        positionedObject = *it;
 | 
| -
 | 
| +    for (auto* positionedObject : *positionedDescendants) {
 | 
|          // Fixed positioned elements don't contribute to layout overflow, since they don't scroll with the content.
 | 
|          if (positionedObject->style()->position() != FixedPosition)
 | 
|              addOverflowFromChild(positionedObject, toLayoutSize(positionedObject->location()));
 | 
| @@ -1691,20 +1683,16 @@ void LayoutBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayou
 | 
|      if (hasColumns())
 | 
|          view()->layoutState()->clearPaginationInformation(); // Positioned objects are not part of the column flow, so they don't paginate with the columns.
 | 
|  
 | 
| -    LayoutBox* r;
 | 
| -    TrackedRendererListHashSet::iterator end = positionedDescendants->end();
 | 
| -    for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it) {
 | 
| -        r = *it;
 | 
| -
 | 
| -        r->setMayNeedPaintInvalidation();
 | 
| +    for (auto* positionedObject : *positionedDescendants) {
 | 
| +        positionedObject->setMayNeedPaintInvalidation();
 | 
|  
 | 
| -        SubtreeLayoutScope layoutScope(*r);
 | 
| +        SubtreeLayoutScope layoutScope(*positionedObject);
 | 
|          // A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So
 | 
|          // if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e.
 | 
|          // it has static position.
 | 
| -        markFixedPositionObjectForLayoutIfNeeded(r, layoutScope);
 | 
| +        markFixedPositionObjectForLayoutIfNeeded(positionedObject, layoutScope);
 | 
|          if (info == LayoutOnlyFixedPositionedObjects) {
 | 
| -            r->layoutIfNeeded();
 | 
| +            positionedObject->layoutIfNeeded();
 | 
|              continue;
 | 
|          }
 | 
|  
 | 
| @@ -1712,38 +1700,38 @@ void LayoutBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayou
 | 
|          // non-positioned block.  Rather than trying to detect all of these movement cases, we just always lay out positioned
 | 
|          // objects that are positioned implicitly like this.  Such objects are rare, and so in typical DHTML menu usage (where everything is
 | 
|          // positioned explicitly) this should not incur a performance penalty.
 | 
| -        if (relayoutChildren || (r->style()->hasStaticBlockPosition(isHorizontalWritingMode()) && r->parent() != this))
 | 
| -            layoutScope.setChildNeedsLayout(r);
 | 
| +        if (relayoutChildren || (positionedObject->style()->hasStaticBlockPosition(isHorizontalWritingMode()) && positionedObject->parent() != this))
 | 
| +            layoutScope.setChildNeedsLayout(positionedObject);
 | 
|  
 | 
|          // If relayoutChildren is set and the child has percentage padding or an embedded content box, we also need to invalidate the childs pref widths.
 | 
| -        if (relayoutChildren && r->needsPreferredWidthsRecalculation())
 | 
| -            r->setPreferredLogicalWidthsDirty(MarkOnlyThis);
 | 
| +        if (relayoutChildren && positionedObject->needsPreferredWidthsRecalculation())
 | 
| +            positionedObject->setPreferredLogicalWidthsDirty(MarkOnlyThis);
 | 
|  
 | 
| -        if (!r->needsLayout())
 | 
| -            r->markForPaginationRelayoutIfNeeded(layoutScope);
 | 
| +        if (!positionedObject->needsLayout())
 | 
| +            positionedObject->markForPaginationRelayoutIfNeeded(layoutScope);
 | 
|  
 | 
|          // If we are paginated or in a line grid, go ahead and compute a vertical position for our object now.
 | 
|          // If it's wrong we'll lay out again.
 | 
|          LayoutUnit oldLogicalTop = 0;
 | 
| -        bool needsBlockDirectionLocationSetBeforeLayout = r->needsLayout() && view()->layoutState()->needsBlockDirectionLocationSetBeforeLayout();
 | 
| +        bool needsBlockDirectionLocationSetBeforeLayout = positionedObject->needsLayout() && view()->layoutState()->needsBlockDirectionLocationSetBeforeLayout();
 | 
|          if (needsBlockDirectionLocationSetBeforeLayout) {
 | 
| -            if (isHorizontalWritingMode() == r->isHorizontalWritingMode())
 | 
| -                r->updateLogicalHeight();
 | 
| +            if (isHorizontalWritingMode() == positionedObject->isHorizontalWritingMode())
 | 
| +                positionedObject->updateLogicalHeight();
 | 
|              else
 | 
| -                r->updateLogicalWidth();
 | 
| -            oldLogicalTop = logicalTopForChild(*r);
 | 
| +                positionedObject->updateLogicalWidth();
 | 
| +            oldLogicalTop = logicalTopForChild(*positionedObject);
 | 
|          }
 | 
|  
 | 
|          // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout() here instead of a full layout. Need
 | 
|          // to investigate why it does not trigger the correct invalidations in that case. crbug.com/350756
 | 
|          if (info == ForcedLayoutAfterContainingBlockMoved)
 | 
| -            r->setNeedsLayout(LayoutInvalidationReason::AncestorMoved, MarkOnlyThis);
 | 
| +            positionedObject->setNeedsLayout(LayoutInvalidationReason::AncestorMoved, MarkOnlyThis);
 | 
|  
 | 
| -        r->layoutIfNeeded();
 | 
| +        positionedObject->layoutIfNeeded();
 | 
|  
 | 
|          // Lay out again if our estimate was wrong.
 | 
| -        if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(*r) != oldLogicalTop)
 | 
| -            r->forceChildLayout();
 | 
| +        if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(*positionedObject) != oldLogicalTop)
 | 
| +            positionedObject->forceChildLayout();
 | 
|      }
 | 
|  
 | 
|      if (hasColumns())
 | 
| @@ -1753,9 +1741,8 @@ void LayoutBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayou
 | 
|  void LayoutBlock::markPositionedObjectsForLayout()
 | 
|  {
 | 
|      if (TrackedRendererListHashSet* positionedDescendants = positionedObjects()) {
 | 
| -        TrackedRendererListHashSet::iterator end = positionedDescendants->end();
 | 
| -        for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it)
 | 
| -            (*it)->setChildNeedsLayout();
 | 
| +        for (auto* descendant : *positionedDescendants)
 | 
| +            descendant->setChildNeedsLayout();
 | 
|      }
 | 
|  }
 | 
|  
 | 
| @@ -1964,10 +1951,7 @@ void LayoutBlock::removeFromTrackedRendererMaps(LayoutBox* descendant, TrackedDe
 | 
|      if (!containerSet)
 | 
|          return;
 | 
|  
 | 
| -    HashSet<LayoutBlock*>::iterator end = containerSet->end();
 | 
| -    for (HashSet<LayoutBlock*>::iterator it = containerSet->begin(); it != end; ++it) {
 | 
| -        LayoutBlock* container = *it;
 | 
| -
 | 
| +    for (auto* container : *containerSet) {
 | 
|          // FIXME: Disabling this assert temporarily until we fix the layout
 | 
|          // bugs associated with positioned objects not properly cleared from
 | 
|          // their ancestor chain before being moved. See webkit bug 93766.
 | 
| @@ -2009,30 +1993,24 @@ void LayoutBlock::removePositionedObjects(LayoutBlock* o, ContainingBlockState c
 | 
|      if (!positionedDescendants)
 | 
|          return;
 | 
|  
 | 
| -    LayoutBox* r;
 | 
| -
 | 
| -    TrackedRendererListHashSet::iterator end = positionedDescendants->end();
 | 
| -
 | 
|      Vector<LayoutBox*, 16> deadObjects;
 | 
| -
 | 
| -    for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it) {
 | 
| -        r = *it;
 | 
| -        if (!o || r->isDescendantOf(o)) {
 | 
| +    for (auto* positionedObject : *positionedDescendants) {
 | 
| +        if (!o || positionedObject->isDescendantOf(o)) {
 | 
|              if (containingBlockState == NewContainingBlock) {
 | 
| -                r->setChildNeedsLayout(MarkOnlyThis);
 | 
| -                if (r->needsPreferredWidthsRecalculation())
 | 
| -                    r->setPreferredLogicalWidthsDirty(MarkOnlyThis);
 | 
| +                positionedObject->setChildNeedsLayout(MarkOnlyThis);
 | 
| +                if (positionedObject->needsPreferredWidthsRecalculation())
 | 
| +                    positionedObject->setPreferredLogicalWidthsDirty(MarkOnlyThis);
 | 
|              }
 | 
|  
 | 
|              // It is parent blocks job to add positioned child to positioned objects list of its containing block
 | 
|              // Parent layout needs to be invalidated to ensure this happens.
 | 
| -            LayoutObject* p = r->parent();
 | 
| +            LayoutObject* p = positionedObject->parent();
 | 
|              while (p && !p->isLayoutBlock())
 | 
|                  p = p->parent();
 | 
|              if (p)
 | 
|                  p->setChildNeedsLayout();
 | 
|  
 | 
| -            deadObjects.append(r);
 | 
| +            deadObjects.append(positionedObject);
 | 
|          }
 | 
|      }
 | 
|  
 | 
| @@ -2078,9 +2056,7 @@ void LayoutBlock::dirtyForLayoutFromPercentageHeightDescendants(SubtreeLayoutSco
 | 
|      if (!descendants)
 | 
|          return;
 | 
|  
 | 
| -    TrackedRendererListHashSet::iterator end = descendants->end();
 | 
| -    for (TrackedRendererListHashSet::iterator it = descendants->begin(); it != end; ++it) {
 | 
| -        LayoutBox* box = *it;
 | 
| +    for (auto* box : *descendants) {
 | 
|          while (box != this) {
 | 
|              if (box->normalChildNeedsLayout())
 | 
|                  break;
 | 
| @@ -3833,10 +3809,7 @@ bool LayoutBlock::recalcChildOverflowAfterStyleChange()
 | 
|      if (!positionedDescendants)
 | 
|          return childrenOverflowChanged;
 | 
|  
 | 
| -    TrackedRendererListHashSet::iterator end = positionedDescendants->end();
 | 
| -    for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it) {
 | 
| -        LayoutBox* box = *it;
 | 
| -
 | 
| +    for (auto* box : *positionedDescendants) {
 | 
|          if (!box->needsOverflowRecalcAfterStyleChange())
 | 
|              continue;
 | 
|          LayoutBlock* block = toLayoutBlock(box);
 | 
| 
 |