Index: Source/core/rendering/RenderView.cpp |
diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp |
index 0e3c3f240697022aa13ea42e511b8f3a59b63ed2..1d15878e9d682af4c0fd407a9e3f44c23492fe5d 100644 |
--- a/Source/core/rendering/RenderView.cpp |
+++ b/Source/core/rendering/RenderView.cpp |
@@ -192,67 +192,18 @@ void RenderView::checkLayoutState(const LayoutState& state) |
} |
#endif |
-static RenderBox* enclosingSeamlessRenderer(const Document& doc) |
-{ |
- Element* ownerElement = doc.seamlessParentIFrame(); |
- if (!ownerElement) |
- return 0; |
- return ownerElement->renderBox(); |
-} |
- |
void RenderView::addChild(RenderObject* newChild, RenderObject* beforeChild) |
eseidel
2014/01/25 02:07:04
This whole method can be removed.
|
{ |
- // Seamless iframes are considered part of an enclosing render flow thread from the parent document. This is necessary for them to look |
- // up regions in the parent document during layout. |
- if (newChild && !newChild->isRenderFlowThread()) { |
- RenderBox* seamlessBox = enclosingSeamlessRenderer(document()); |
- if (seamlessBox && seamlessBox->flowThreadContainingBlock()) |
- newChild->setFlowThreadState(seamlessBox->flowThreadState()); |
- } |
RenderBlock::addChild(newChild, beforeChild); |
} |
-bool RenderView::initializeLayoutState(LayoutState& state) |
+void RenderView::initializeLayoutState(LayoutState& state) |
{ |
- bool isSeamlessAncestorInFlowThread = false; |
- |
// FIXME: May be better to push a clip and avoid issuing offscreen repaints. |
state.m_clipped = false; |
- |
- // Check the writing mode of the seamless ancestor. It has to match our document's writing mode, or we won't inherit any |
- // pagination information. |
- RenderBox* seamlessAncestor = enclosingSeamlessRenderer(document()); |
- LayoutState* seamlessLayoutState = seamlessAncestor ? seamlessAncestor->view()->layoutState() : 0; |
- bool shouldInheritPagination = seamlessLayoutState && !m_pageLogicalHeight && seamlessAncestor->style()->writingMode() == style()->writingMode(); |
- |
- state.m_pageLogicalHeight = shouldInheritPagination ? seamlessLayoutState->m_pageLogicalHeight : m_pageLogicalHeight; |
- state.m_pageLogicalHeightChanged = shouldInheritPagination ? seamlessLayoutState->m_pageLogicalHeightChanged : m_pageLogicalHeightChanged; |
+ state.m_pageLogicalHeight = m_pageLogicalHeight; |
+ state.m_pageLogicalHeightChanged = m_pageLogicalHeightChanged; |
state.m_isPaginated = state.m_pageLogicalHeight; |
- if (state.m_isPaginated && shouldInheritPagination) { |
- // Set up the correct pagination offset. We can use a negative offset in order to push the top of the RenderView into its correct place |
- // on a page. We can take the iframe's offset from the logical top of the first page and make the negative into the pagination offset within the child |
- // view. |
- bool isFlipped = seamlessAncestor->style()->isFlippedBlocksWritingMode(); |
- LayoutSize layoutOffset = seamlessLayoutState->layoutOffset(); |
- LayoutSize iFrameOffset(layoutOffset.width() + seamlessAncestor->x() + (!isFlipped ? seamlessAncestor->borderLeft() + seamlessAncestor->paddingLeft() : |
- seamlessAncestor->borderRight() + seamlessAncestor->paddingRight()), |
- layoutOffset.height() + seamlessAncestor->y() + (!isFlipped ? seamlessAncestor->borderTop() + seamlessAncestor->paddingTop() : |
- seamlessAncestor->borderBottom() + seamlessAncestor->paddingBottom())); |
- |
- LayoutSize offsetDelta = seamlessLayoutState->m_pageOffset - iFrameOffset; |
- state.m_pageOffset = offsetDelta; |
- |
- // Set the current render flow thread to point to our ancestor. This will allow the seamless document to locate the correct |
- // regions when doing a layout. |
- if (seamlessAncestor->flowThreadContainingBlock()) { |
- flowThreadController()->setCurrentRenderFlowThread(seamlessAncestor->view()->flowThreadController()->currentRenderFlowThread()); |
- isSeamlessAncestorInFlowThread = true; |
- } |
- } |
- |
- // FIXME: We need to make line grids and exclusions work with seamless iframes as well here. Basically all layout state information needs |
- // to propagate here and not just pagination information. |
- return isSeamlessAncestorInFlowThread; |
} |
// The algorithm below assumes this is a full layout. In case there are previously computed values for regions, supplemental steps are taken |
@@ -333,7 +284,7 @@ void RenderView::layout() |
return; |
LayoutState state; |
- bool isSeamlessAncestorInFlowThread = initializeLayoutState(state); |
+ initializeLayoutState(state); |
m_pageLogicalHeightChanged = false; |
m_layoutState = &state; |
@@ -353,9 +304,6 @@ void RenderView::layout() |
#endif |
m_layoutState = 0; |
clearNeedsLayout(); |
- |
- if (isSeamlessAncestorInFlowThread) |
- flowThreadController()->setCurrentRenderFlowThread(0); |
} |
void RenderView::mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) const |