New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reland "Use border box or layout overflow rect for layout shift tracking" #24843
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wpt-pr-bot
approved these changes
Aug 1, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The review process for this patch is being conducted in the Chromium project.
chromium-wpt-export-bot
force-pushed
the
chromium-export-cl-2333648
branch
7 times, most recently
from
August 3, 2020 16:58
510da9a
to
68e89e2
Compare
…ing" This reverts commit 491b5a9cbe75eb9cdde6e9e0b21e8246f441b086. The original CL was reverted because it caused failure on MSAN bots due to use of uninitialized value. The reason was that PaintInvalidatorContext::tree_builder_context_ pointed into an PrePaintTreeWalkContext entry in a vector, and the vector could be reallocated when we added new entries, causing the pointer in the parent PaintInvalidatorContext to point to an invalid address. Now remove PaintInvalidatorContext::tree_builder_context_ and add PaintInvalidatorContext::transform_ (which was the only used information from the parent PaintInvalidatorContext) to avoid the problem. Original change's description: > Revert "Use border box or layout overflow rect for layout shift tracking" > > This reverts commit 0933392f84b4bb96466bd86c0e814d96f63ba137. > > Reason for revert: ASAN/MSAN failures due to "use of uninitialized value"; see e.g. https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8873209606965810848/+/steps/browser_tests/0/logs/Deterministic_failure:_AllForms__x2f_FormStructureBrowserTest.DataDrivenHeuristics__x2f_148__status_FAILURE_/0 > > Original change's description: > > Use border box or layout overflow rect for layout shift tracking > > > > This CL addresses the following issues of layout shift tracking: > > - Changed visual overflows triggered layout shift report > > (originally filed as crbug.com/1090763). > > - Descendant layout overflows were not included in ancestor's layout > > shift report. > > - Unnecessary descendant layout shift report. > > - Slow visual rect calculation for LayoutInline and LayoutText. > > > > It includes the following changes > > - Track LayoutBoxes and LayoutTexts only. > > - Track both old and new starting points and visual representations > > instead of using location of visual rects as starting points. > > - For a LayoutBox, the local visual representation is the layout > > overflow rect if the LayoutBox has layout overflow and doesn't clip > > overflow. Otherwise use the border box rect. > > - For a LayoutText, suppose its shift causes shift of all contents > > in containing block logically below the LayoutText, and use that > > part of visual representation of the containing block as the visual > > representation of the shift. > > - Map both local starting points and local visual representations to > > the initial containing block and viewport. > > > > This has the following benefits: > > - More accurate starting points and visual representations, conforming > > to the specs; > > - Better performance by > > * avoiding unnecessary layout shift reports of descendants > > * avoiding slow LayoutInline and LayoutText visual rect calculation. > > - sizeof(LayoutObject) is reduced by 16 bytes because now we use the > > previous geometry data in LayoutBoxes for paint invalidation. > > > > Bug: 1108622 > > Change-Id: I7ebb4e250e7ca2a03b4dadea50034e300e55ad84 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2319538 > > Reviewed-by: Steve Kobes <skobes@chromium.org> > > Reviewed-by: Koji Ishii <kojii@chromium.org> > > Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#793806} > > TBR=wangxianzhu@chromium.org,skobes@chromium.org,kojii@chromium.org > > Change-Id: I590f2abc4a48ba65bdfe7a948ffce00b299f9e06 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 1108622 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2333578 > Reviewed-by: Peter Kasting <pkasting@chromium.org> > Commit-Queue: Peter Kasting <pkasting@chromium.org> > Cr-Commit-Position: refs/heads/master@{#793874} # Not skipping CQ checks because this is a reland. Bug: 1108622 Change-Id: I253a24799b6d2a3af346d4f65e3889217064b035 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2333648 Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#794218}
chromium-wpt-export-bot
force-pushed
the
chromium-export-cl-2333648
branch
from
August 3, 2020 19:43
68e89e2
to
b622b98
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This reverts commit 491b5a9cbe75eb9cdde6e9e0b21e8246f441b086.
The original CL was reverted because it caused failure on MSAN bots
due to use of uninitialized value.
The reason was that PaintInvalidatorContext::tree_builder_context_
pointed into an PrePaintTreeWalkContext entry in a vector, and the
vector could be reallocated when we added new entries, causing the
pointer in the parent PaintInvalidatorContext to point to an invalid
address.
Now remove PaintInvalidatorContext::tree_builder_context_ and add
PaintInvalidatorContext::transform_ (which was the only used information
from the parent PaintInvalidatorContext) to avoid the problem.
Original change's description:
Not skipping CQ checks because this is a reland.
Bug: 1108622
Change-Id: I253a24799b6d2a3af346d4f65e3889217064b035
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2333648
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#794218}