Skip to content
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
merged 1 commit into from Aug 3, 2020

Conversation

@chromium-wpt-export-bot
Copy link
Collaborator

@chromium-wpt-export-bot chromium-wpt-export-bot commented Aug 1, 2020

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}

Copy link
Collaborator

@wpt-pr-bot wpt-pr-bot left a comment

The review process for this patch is being conducted in the Chromium project.

@chromium-wpt-export-bot chromium-wpt-export-bot force-pushed the chromium-export-cl-2333648 branch 7 times, most recently from 510da9a to 68e89e2 Aug 1, 2020
…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 chromium-wpt-export-bot force-pushed the chromium-export-cl-2333648 branch from 68e89e2 to b622b98 Aug 3, 2020
@chromium-wpt-export-bot chromium-wpt-export-bot merged commit 5111694 into master Aug 3, 2020
22 checks passed
22 checks passed
Azure Pipelines Build #20200803.44 succeeded
Details
Azure Pipelines (./wpt test-jobs) ./wpt test-jobs succeeded
Details
Azure Pipelines (affected tests without changes: Safari Technology Preview) affected tests without changes: Safari Technology Preview succeeded
Details
Azure Pipelines (affected tests: Safari Technology Preview) affected tests: Safari Technology Preview succeeded
Details
Azure Pipelines (wpt.fyi hook: safari-preview-affected-tests) wpt.fyi hook: safari-preview-affected-tests succeeded
Details
Azure Pipelines (wpt.fyi hook: safari-preview-affected-tests-without-changes) wpt.fyi hook: safari-preview-affected-tests-without-changes succeeded
Details
download-firefox-nightly Community-TC (pull_request)
Details
lint Community-TC (pull_request)
Details
sink-task Community-TC (pull_request)
Details
staging.wpt.fyi - chrome[experimental] Chrome results
Details
staging.wpt.fyi - firefox[experimental] Firefox results
Details
staging.wpt.fyi - safari[experimental] Safari results
Details
wpt-chrome-dev-results Community-TC (pull_request)
Details
wpt-chrome-dev-results-without-changes Community-TC (pull_request)
Details
wpt-chrome-dev-stability Community-TC (pull_request)
Details
wpt-decision-task Community-TC (pull_request)
Details
wpt-firefox-nightly-results Community-TC (pull_request)
Details
wpt-firefox-nightly-results-without-changes Community-TC (pull_request)
Details
wpt-firefox-nightly-stability Community-TC (pull_request)
Details
wpt.fyi - chrome[experimental] Chrome results
Details
wpt.fyi - firefox[experimental] Firefox results
Details
wpt.fyi - safari[experimental] Safari results
Details
@chromium-wpt-export-bot chromium-wpt-export-bot deleted the chromium-export-cl-2333648 branch Aug 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants