[webkit-changes] [WebKit/WebKit] 73e553: REGRESSION(279868 at main) Alaska Airlines sign in po...
mattwoodrow
noreply at github.com
Wed Sep 11 18:07:56 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 73e553cb35754cc9fea44929e20199de4fa0cb6b
https://github.com/WebKit/WebKit/commit/73e553cb35754cc9fea44929e20199de4fa0cb6b
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2024-09-11 (Wed, 11 Sep 2024)
Changed paths:
A LayoutTests/compositing/shared-backing/multiple-backing-sharing-providers-expected.html
A LayoutTests/compositing/shared-backing/multiple-backing-sharing-providers.html
M LayoutTests/fast/scrolling/ios/event-region-scale-transform-shared-expected.txt
M LayoutTests/fast/scrolling/ios/event-region-translate-transform-shared-expected.txt
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
Log Message:
-----------
REGRESSION(279868 at main) Alaska Airlines sign in popup loads behind the website's search field.
https://bugs.webkit.org/show_bug.cgi?id=279036
<rdar://134911588>
Reviewed by Simon Fraser.
This webpage had multiple backing store providers, and content was incorrectly
added to the back one, despite overlapping the front one.
The overlap test uses the bounds of the provider, not the to-be-added layer to
check if it overlaps, and the providers themselves didn't overlap.
This restricts multiple backing store providers to only be used when they're
clipped (as was previously the case), so we can be sure the added layer doesn't
extend beyond the bounds of the provider. This shouldn't break the performance
improvement, since we still allow other composited layers to be added infront.
It does mean in some cases we keep the scroll clipped backing store provider
open, and prevent accumulating sharing layers into a further forward unclipped
backing provider. I think given the support for multiple open clipped providers,
this is a good tradeoff.
Ideally, we'd allow accumulating bounds and adding to any provider, but that
seems like a riskier change, as we have to account for scrolling.
This also does a bit of cleanup, unifying the BackingSharingSnapshot and
preDescendantProviderStartLayer using a generation counter. It also adds a few
more comments, as I found the logic of why we end backing sharing sequences to
be hard to follow.
* LayoutTests/compositing/shared-backing/multiple-backing-sharing-providers-expected.html: Added.
* LayoutTests/compositing/shared-backing/multiple-backing-sharing-providers.html: Added.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::BackingSharingState::snapshot const):
(WebCore::RenderLayerCompositor::BackingSharingState::generation const):
(WebCore::RenderLayerCompositor::BackingSharingState::addBackingSharingCandidate):
(WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence):
(WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidateForLayer):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::updateBackingSharingBeforeDescendantTraversal):
(WebCore::RenderLayerCompositor::updateBackingSharingAfterDescendantTraversal):
* Source/WebCore/rendering/RenderLayerCompositor.h:
Canonical link: https://commits.webkit.org/283515@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list