| Index: Source/core/rendering/RenderBoxModelObject.cpp
 | 
| diff --git a/Source/core/rendering/RenderBoxModelObject.cpp b/Source/core/rendering/RenderBoxModelObject.cpp
 | 
| index 3b084c5fde5cc73a5bcbaac982dcae77e67fc05c..3868c44409e0721b697b8d2d0a52ba939bb86729 100644
 | 
| --- a/Source/core/rendering/RenderBoxModelObject.cpp
 | 
| +++ b/Source/core/rendering/RenderBoxModelObject.cpp
 | 
| @@ -37,8 +37,6 @@
 | 
|  #include "core/rendering/RenderInline.h"
 | 
|  #include "core/rendering/RenderLayer.h"
 | 
|  #include "core/rendering/RenderLayerCompositor.h"
 | 
| -#include "core/rendering/RenderNamedFlowThread.h"
 | 
| -#include "core/rendering/RenderRegion.h"
 | 
|  #include "core/rendering/RenderView.h"
 | 
|  #include "core/rendering/style/ShadowList.h"
 | 
|  #include "platform/geometry/TransformState.h"
 | 
| @@ -288,17 +286,14 @@ LayoutPoint RenderBoxModelObject::adjustedPositionRelativeToOffsetParent(const L
 | 
|      if (const RenderBoxModelObject* offsetParent = element->renderBoxModelObject()) {
 | 
|          if (offsetParent->isBox() && !offsetParent->isBody())
 | 
|              referencePoint.move(-toRenderBox(offsetParent)->borderLeft(), -toRenderBox(offsetParent)->borderTop());
 | 
| -        if (!isOutOfFlowPositioned() || flowThreadContainingBlock()) {
 | 
| +        if (!isOutOfFlowPositioned()) {
 | 
|              if (isRelPositioned())
 | 
|                  referencePoint.move(relativePositionOffset());
 | 
|              else if (isStickyPositioned())
 | 
|                  referencePoint.move(stickyPositionOffset());
 | 
|  
 | 
| -            // CSS regions specification says that region flows should return the body element as their offsetParent.
 | 
| -            // Since we will bypass the body’s renderer anyway, just end the loop if we encounter a region flow (named flow thread).
 | 
| -            // See http://dev.w3.org/csswg/css-regions/#cssomview-offset-attributes
 | 
|              RenderObject* current;
 | 
| -            for (current = parent(); current != offsetParent && !current->isRenderNamedFlowThread() && current->parent(); current = current->parent()) {
 | 
| +            for (current = parent(); current != offsetParent && current->parent(); current = current->parent()) {
 | 
|                  // FIXME: What are we supposed to do inside SVG content?
 | 
|                  if (!isOutOfFlowPositioned()) {
 | 
|                      if (current->isBox() && !current->isTableRow())
 | 
| @@ -307,11 +302,7 @@ LayoutPoint RenderBoxModelObject::adjustedPositionRelativeToOffsetParent(const L
 | 
|                  }
 | 
|              }
 | 
|  
 | 
| -            // Compute the offset position for elements inside named flow threads for which the offsetParent was the body.
 | 
| -            // See https://code.google.com/p/chromium/issues/detail?id=242168
 | 
| -            if (current->isRenderNamedFlowThread())
 | 
| -                referencePoint = toRenderNamedFlowThread(current)->adjustedPositionRelativeToOffsetParent(*this, referencePoint);
 | 
| -            else if (offsetParent->isBox() && offsetParent->isBody() && !offsetParent->isPositioned())
 | 
| +            if (offsetParent->isBox() && offsetParent->isBody() && !offsetParent->isPositioned())
 | 
|                  referencePoint.moveBy(toRenderBox(offsetParent)->topLeftLocation());
 | 
|          }
 | 
|      }
 | 
| @@ -385,7 +376,7 @@ LayoutSize RenderBoxModelObject::stickyPositionOffset() const
 | 
|      RenderLayer* enclosingClippingLayer = layer()->enclosingOverflowClipLayer(ExcludeSelf);
 | 
|      if (enclosingClippingLayer) {
 | 
|          RenderBox* enclosingClippingBox = toRenderBox(enclosingClippingLayer->renderer());
 | 
| -        LayoutRect clipRect = enclosingClippingBox->overflowClipRect(LayoutPoint(), 0); // FIXME: make this work in regions.
 | 
| +        LayoutRect clipRect = enclosingClippingBox->overflowClipRect(LayoutPoint());
 | 
|          constrainingRect = enclosingClippingBox->localToContainerQuad(FloatRect(clipRect), view()).boundingBox();
 | 
|      } else {
 | 
|          LayoutRect viewportRect = view()->frameView()->viewportConstrainedVisibleContentRect();
 | 
| @@ -626,7 +617,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co
 | 
|      if (clippedWithLocalScrolling) {
 | 
|          // Clip to the overflow area.
 | 
|          RenderBox* thisBox = toRenderBox(this);
 | 
| -        context->clip(thisBox->overflowClipRect(rect.location(), paintInfo.renderRegion));
 | 
| +        context->clip(thisBox->overflowClipRect(rect.location()));
 | 
|  
 | 
|          // Adjust the paint rect to reflect a scrolled content box with borders at the ends.
 | 
|          IntSize offset = thisBox->scrolledContentOffset();
 | 
| @@ -766,7 +757,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co
 | 
|  
 | 
|          // Now draw the text into the mask. We do this by painting using a special paint phase that signals to
 | 
|          // InlineTextBoxes that they should just add their contents to the clip.
 | 
| -        PaintInfo info(context, maskRect, PaintPhaseTextClip, PaintBehaviorForceBlackText, 0, paintInfo.renderRegion);
 | 
| +        PaintInfo info(context, maskRect, PaintPhaseTextClip, PaintBehaviorForceBlackText, 0);
 | 
|          context->setCompositeOperation(CompositeSourceOver);
 | 
|          if (box) {
 | 
|              RootInlineBox* root = box->root();
 | 
| @@ -2737,19 +2728,6 @@ void RenderBoxModelObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, Tra
 | 
|      if (!o)
 | 
|          return;
 | 
|  
 | 
| -    // The point inside a box that's inside a region has its coordinates relative to the region,
 | 
| -    // not the FlowThread that is its container in the RenderObject tree.
 | 
| -    if (o->isRenderFlowThread() && isRenderBlock()) {
 | 
| -        // FIXME: switch to Box instead of Block when we'll have range information for boxes as well, not just for blocks.
 | 
| -        RenderRegion* startRegion;
 | 
| -        RenderRegion* ignoredEndRegion;
 | 
| -        toRenderFlowThread(o)->getRegionRangeForBox(toRenderBlock(this), startRegion, ignoredEndRegion);
 | 
| -        // If there is no region to use the FlowThread, then there's no region range for the content in that FlowThread.
 | 
| -        // An API like elementFromPoint might crash without this check.
 | 
| -        if (startRegion)
 | 
| -            o = startRegion;
 | 
| -    }
 | 
| -
 | 
|      o->mapAbsoluteToLocalPoint(mode, transformState);
 | 
|  
 | 
|      LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint());
 | 
| 
 |