| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * Copyright (C) 2013 Google Inc. All rights reserved. |     2  * Copyright (C) 2013 Google Inc. All rights reserved. | 
|     3  * |     3  * | 
|     4  * Redistribution and use in source and binary forms, with or without |     4  * Redistribution and use in source and binary forms, with or without | 
|     5  * modification, are permitted provided that the following conditions are |     5  * modification, are permitted provided that the following conditions are | 
|     6  * met: |     6  * met: | 
|     7  * |     7  * | 
|     8  *     * Redistributions of source code must retain the above copyright |     8  *     * Redistributions of source code must retain the above copyright | 
|     9  * notice, this list of conditions and the following disclaimer. |     9  * notice, this list of conditions and the following disclaimer. | 
|    10  *     * Redistributions in binary form must reproduce the above |    10  *     * Redistributions in binary form must reproduce the above | 
| (...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1142   line_box.SetIsFirstAfterPageBreak(false); |  1142   line_box.SetIsFirstAfterPageBreak(false); | 
|  1143   LayoutState* layout_state = View()->GetLayoutState(); |  1143   LayoutState* layout_state = View()->GetLayoutState(); | 
|  1144   if (!layout_state->IsPaginated()) |  1144   if (!layout_state->IsPaginated()) | 
|  1145     return; |  1145     return; | 
|  1146   if (!IsPageLogicalHeightKnown()) |  1146   if (!IsPageLogicalHeightKnown()) | 
|  1147     return; |  1147     return; | 
|  1148   LayoutUnit page_logical_height = PageLogicalHeightForOffset(logical_offset); |  1148   LayoutUnit page_logical_height = PageLogicalHeightForOffset(logical_offset); | 
|  1149   LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( |  1149   LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( | 
|  1150       logical_offset, kAssociateWithLatterPage); |  1150       logical_offset, kAssociateWithLatterPage); | 
|  1151   int line_index = LineCount(&line_box); |  1151   int line_index = LineCount(&line_box); | 
|  1152   if (remaining_logical_height < line_height || |  1152   // We need to detect if we overlap a repeating footer and if so take the | 
 |  1153   // full remaining logical height as our strut to the next page. | 
 |  1154   LayoutUnit remaining_logical_height_including_footer = | 
 |  1155       remaining_logical_height - layout_state->HeightOffsetForTableFooters(); | 
 |  1156   if (remaining_logical_height_including_footer < line_height || | 
|  1153       (ShouldBreakAtLineToAvoidWidow() && |  1157       (ShouldBreakAtLineToAvoidWidow() && | 
|  1154        LineBreakToAvoidWidow() == line_index)) { |  1158        LineBreakToAvoidWidow() == line_index)) { | 
|  1155     LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( |  1159     LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( | 
|  1156         logical_offset, remaining_logical_height, line_height); |  1160         logical_offset, remaining_logical_height, line_height); | 
|  1157     LayoutUnit new_logical_offset = logical_offset + pagination_strut; |  1161     LayoutUnit new_logical_offset = logical_offset + pagination_strut; | 
|  1158     // Moving to a different page or column may mean that its height is |  1162     // Moving to a different page or column may mean that its height is | 
|  1159     // different. |  1163     // different. | 
|  1160     page_logical_height = PageLogicalHeightForOffset(new_logical_offset); |  1164     page_logical_height = PageLogicalHeightForOffset(new_logical_offset); | 
|  1161     if (line_height > page_logical_height) { |  1165     if (line_height > page_logical_height) { | 
|  1162       // Too tall to fit in one page / column. Give up. Don't push to the next |  1166       // Too tall to fit in one page / column. Give up. Don't push to the next | 
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1249     return logical_offset; |  1253     return logical_offset; | 
|  1250   LayoutUnit child_logical_height = LogicalHeightForChild(child); |  1254   LayoutUnit child_logical_height = LogicalHeightForChild(child); | 
|  1251   // Floats' margins do not collapse with page or column boundaries. |  1255   // Floats' margins do not collapse with page or column boundaries. | 
|  1252   if (child.IsFloating()) |  1256   if (child.IsFloating()) | 
|  1253     child_logical_height += |  1257     child_logical_height += | 
|  1254         MarginBeforeForChild(child) + MarginAfterForChild(child); |  1258         MarginBeforeForChild(child) + MarginAfterForChild(child); | 
|  1255   if (!IsPageLogicalHeightKnown()) |  1259   if (!IsPageLogicalHeightKnown()) | 
|  1256     return logical_offset; |  1260     return logical_offset; | 
|  1257   LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( |  1261   LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( | 
|  1258       logical_offset, kAssociateWithLatterPage); |  1262       logical_offset, kAssociateWithLatterPage); | 
|  1259   if (remaining_logical_height >= child_logical_height) |  1263   LayoutUnit remaining_logical_height_including_footer = | 
 |  1264       remaining_logical_height - | 
 |  1265       View()->GetLayoutState()->HeightOffsetForTableFooters(); | 
 |  1266   if (remaining_logical_height_including_footer >= child_logical_height) | 
|  1260     return logical_offset;  // It fits fine where it is. No need to break. |  1267     return logical_offset;  // It fits fine where it is. No need to break. | 
|  1261   LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( |  1268   LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( | 
|  1262       logical_offset, remaining_logical_height, child_logical_height); |  1269       logical_offset, remaining_logical_height, child_logical_height); | 
|  1263   if (pagination_strut == remaining_logical_height && |  1270   if (pagination_strut == remaining_logical_height && | 
|  1264       remaining_logical_height == PageLogicalHeightForOffset(logical_offset)) { |  1271       remaining_logical_height == PageLogicalHeightForOffset(logical_offset)) { | 
|  1265     // Don't break if we were at the top of a page, and we failed to fit the |  1272     // Don't break if we were at the top of a page, and we failed to fit the | 
|  1266     // content completely. No point in leaving a page completely blank. |  1273     // content completely. No point in leaving a page completely blank. | 
|  1267     return logical_offset; |  1274     return logical_offset; | 
|  1268   } |  1275   } | 
|  1269  |  1276  | 
| (...skipping 3472 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4742         include_block_overflows); |  4749         include_block_overflows); | 
|  4743 } |  4750 } | 
|  4744  |  4751  | 
|  4745 void LayoutBlockFlow::InvalidateDisplayItemClients( |  4752 void LayoutBlockFlow::InvalidateDisplayItemClients( | 
|  4746     PaintInvalidationReason invalidation_reason) const { |  4753     PaintInvalidationReason invalidation_reason) const { | 
|  4747   BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( |  4754   BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( | 
|  4748       invalidation_reason); |  4755       invalidation_reason); | 
|  4749 } |  4756 } | 
|  4750  |  4757  | 
|  4751 }  // namespace blink |  4758 }  // namespace blink | 
| OLD | NEW |