Index: third_party/WebKit/Source/core/layout/LayoutBox.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp |
index 1ab0b71934851d9de35c961cbf2786a66a336f35..714418e5044de9582d0b490bc566333d7130a2c7 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp |
@@ -4403,12 +4403,21 @@ bool LayoutBox::hasUnsplittableScrollingOverflow() const |
|| (!style()->logicalMinHeight().isIntrinsicOrAuto() && style()->logicalMinHeight().isPositive() && (!style()->logicalMinHeight().hasPercent() || percentageLogicalHeightIsResolvable())); |
} |
-bool LayoutBox::isUnsplittableForPagination() const |
+LayoutBox::PaginationBreakability LayoutBox::paginationBreakability() const |
{ |
- return isReplaced() |
+ if (isReplaced() |
|| hasUnsplittableScrollingOverflow() |
|| (parent() && isWritingModeRoot()) |
- || (isOutOfFlowPositioned() && style()->position() == FixedPosition); |
+ || (isOutOfFlowPositioned() && style()->position() == FixedPosition)) |
+ return ForbidBreaks; |
+ |
+ bool checkColumnBreaks = flowThreadContainingBlock(); |
+ bool checkPageBreaks = !checkColumnBreaks && view()->layoutState()->pageLogicalHeight(); |
+ bool isUnsplittable = (checkColumnBreaks && style()->columnBreakInside() == PBAVOID) |
+ || (checkPageBreaks && style()->pageBreakInside() == PBAVOID); |
+ if (isUnsplittable) |
+ return AvoidBreaks; |
+ return AllowAnyBreaks; |
} |
LayoutUnit LayoutBox::lineHeight(bool /*firstLine*/, LineDirectionMode direction, LinePositionMode /*linePositionMode*/) const |