New issue
Advanced search Search tips

Issue 797439 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 771643



Sign in to add a comment

[SPv175] Fragmentation of repeating fixed-position elements and table headers/footers

Project Member Reported by wangxianzhu@chromium.org, Dec 22 2017

Issue description

Fixed-position elements repeat in paged media. Table headers/footers repeat in paged media and multi-columns. For now we use special painting code to repeat them multiple times.

The main issue is wrong visual rects in SPv175. For SPv1 we force the slow visaul rect mapping path so that the result visual rect will cover all repeated parts. For Spv175 we map rect later in PaintChunksToCcLayer using GeometryMapper so we should have correct visual rect at the first place.

Another issue is that we unnecesorily repeated painting in each fragment for table headers/footers which requires us to skip display item cache.

We should create multiple FragmentData for objects that need to repeat in fragments. With that we can calculate correct visual rects, elimimate the slow path for visual rect mapping, remove special painting code, and enable display item caching for repeated paintings.

 
Owner: wangxianzhu@chromium.org
Status: Assigned (was: Available)
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/24176bfdc7b759743c6eacf04aaece861d92f483

commit 24176bfdc7b759743c6eacf04aaece861d92f483
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Tue Jan 09 00:27:57 2018

[SPv175+] Generate fragments for repeating table header/footer

- When calculating the bounding box of a repeating table header/footer
  in flow thread, expand the box to cover the original and all
  repeatings, so that we'll generate fragments for the repeatings.

- After fragments are generated, calculate a paint offset adjustment
  for each fragment in order to move each repeatings to its proper
  place in the fragment.

- The bounding box and paint offset adjustment will be inherited by
  descendants so that they will also generate multiple fragments and
  adjust paint offset of their repeatings.

- Use the paint offsets in fragments instead of the SPv1 paint offset
  during painting. All of the repeatings will be painted by the
  current fragment painting code, so the old repeating code is skipped
  for SPv175+.

Bug:  797439 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I32fb9853cc0684ff90d552238938dc6ac8f4de47
Reviewed-on: https://chromium-review.googlesource.com/846504
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527827}
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/fast/pagination/repeating-thead-tfoot-paged-x-expected.html
[add] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/fast/pagination/repeating-thead-tfoot-paged-x.html
[add] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/fast/pagination/repeating-thead-tfoot-paged-y-expected.html
[add] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/fast/pagination/repeating-thead-tfoot-paged-y.html
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
[add] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/virtual/spv175/fragmentation/README.txt
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/Source/core/paint/AdjustPaintOffsetScope.cpp
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/Source/core/paint/AdjustPaintOffsetScope.h
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
[modify] https://crrev.com/24176bfdc7b759743c6eacf04aaece861d92f483/third_party/WebKit/Source/core/paint/TableSectionPainter.cpp

Status: Fixed (was: Assigned)
Fixed repeating table headers/footers in non-paged media. Generating fragments for paged media (for repeating fixed-position and table headers/footers) will be another task.

Sign in to add a comment