[webkit-changes] [WebKit/WebKit] 4a0a44: [view-transitions] Resolving styles with a large s...

2024-05-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4a0a4473f9267a3fe5de4d7de102e1bb68140170
  
https://github.com/WebKit/WebKit/commit/4a0a4473f9267a3fe5de4d7de102e1bb68140170
  Author: Matt Woodrow 
  Date:   2024-05-29 (Wed, 29 May 2024)

  Changed paths:
M Source/WebCore/style/ElementRuleCollector.cpp
M Source/WebCore/style/RuleSet.cpp
M Source/WebCore/style/RuleSet.h

  Log Message:
  ---
  [view-transitions] Resolving styles with a large set of named view-transition 
elements is slow.
https://bugs.webkit.org/show_bug.cgi?id=274739


Reviewed by Antti Koivisto.

For every named element in a view transition, 4 styles are inserted in the UA 
style sheet.

View transitions currently restyle the entire view transition pseudo tree for 
changes to any of
them (since mutations are keyed to the owning element, which is the document 
element for the whole tree).

There are 4 named pseudo elements per view transition name, resulting in pretty 
slow O(n^2) restyling.

We can improve this somewhat by putting pseudo element selectors with a name 
argument (like
::view-transition-group(name)) into a hash map, so that we only need to iterate 
the somewhat-relevant ones.

* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::collectMatchingRules):
* Source/WebCore/style/RuleSet.cpp:
(WebCore::Style::RuleSet::addRule):
(WebCore::Style::RuleSet::traverseRuleDatas):
(WebCore::Style::RuleSet::shrinkToFit):
* Source/WebCore/style/RuleSet.h:
(WebCore::Style::RuleSet::namedPseudoElementRules const):

Canonical link: https://commits.webkit.org/279484@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 14d2ee: [view-transitions] Visible clipping at the end of ...

2024-05-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 14d2ee99d4aaacbe10cb5f00a01b783ee45a0708
  
https://github.com/WebKit/WebKit/commit/14d2ee99d4aaacbe10cb5f00a01b783ee45a0708
  Author: Matt Woodrow 
  Date:   2024-05-29 (Wed, 29 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block-clipped-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped.html
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Visible clipping at the end of animation on 
https://www.kvin.me/posts/cards
https://bugs.webkit.org/show_bug.cgi?id=274404


Reviewed by Alan Baradlay.

RenderLayer's use of RenderInline doesn't include any padding from its 
containing block in its position, and instead accounts for it
in the position of the lines boxes themselves.

This means that the computed (web visible) transform (using the renderer's 
position) for the ::view-transition-group doesn't
include the offset between the inline element and its container. It also means 
that an overflow:clip on the
::view-transition-image-pair applies the clip in the wrong coordinate space for 
the snapshots.

This change computes the offset between the position of the renderer, and that 
used by RenderLayer. It uses this
to adjust the computed transform, and the overflow rect of the snapshot so that 
they correctly account for the position of the
renderer.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block-clipped-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped.html:
 Added.
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::layerToLayoutOffset):
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setCapturedSize):
(WebCore::RenderViewTransitionCapture::layout):
(WebCore::RenderViewTransitionCapture::setSize): Deleted.
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::createRendererIfNeeded):

Canonical link: https://commits.webkit.org/279433@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4c7681: [view-transitions] Old snapshot for the root eleme...

2024-05-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4c7681b6487b2aa3283a4b92ca2796874fe06f4b
  
https://github.com/WebKit/WebKit/commit/4c7681b6487b2aa3283a4b92ca2796874fe06f4b
  Author: Matt Woodrow 
  Date:   2024-05-29 (Wed, 29 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background.html
R 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html
R 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html
M Source/WebCore/dom/ViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Old snapshot for the root element is misplaced when the 
page is scrolled.
https://bugs.webkit.org/show_bug.cgi?id=274403


Reviewed by Tim Nguyen.

This causes flashes on 
https://malcolmkee.com/blog/view-transition-api-in-react-app/#practical-use-cases

When capturing the root, the snapshot is of the visible viewport area, not the 
whole element.
Adjust the snapshot capture rect by the scroll position to account for this.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background-expected.html:
 Copied from 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background.html:
 Copied from 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background-expected.html:
 Renamed from 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background.html:
 Renamed from 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html.
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotElementVisualOverflowClippedToViewport):

Canonical link: https://commits.webkit.org/279432@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2058ec: [view-transitions] Captured root element with marg...

2024-05-28 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2058eceb3fd5f84b7d394aa7281110088f9f62e1
  
https://github.com/WebKit/WebKit/commit/2058eceb3fd5f84b7d394aa7281110088f9f62e1
  Author: Matt Woodrow 
  Date:   2024-05-28 (Tue, 28 May 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h

  Log Message:
  ---
  [view-transitions] Captured root element with margins display snapshots in 
incorrect position.
https://bugs.webkit.org/show_bug.cgi?id=274397


Reviewed by Tim Nguyen.

If the root element is captured in the view transition, then we effectively do 
snapshotting
of the RenderView instead.

Computing the element-to-screen transform should be skipped, since it would 
include any
margin on the root element relative the view.

Most of the code in RenderLayerBacking that prepares a captured layer for 
attachment
into the pseduo element tree also needs to operate on the RenderView's layer in 
this case,
so a new 'effectiveCapturedInViewTransition' added to make this simpler.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::copyElementBaseProperties):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint):
(WebCore::RenderLayerBacking::shouldClipCompositedBounds const):
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::effectiveCapturedInViewTransition const):
* Source/WebCore/rendering/RenderObject.h:

Canonical link: https://commits.webkit.org/279372@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f74645: [view-transitions] Async animation of snapshot pos...

2024-05-27 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f74645a452f8d62be08217bb1def567fd4d9b96e
  
https://github.com/WebKit/WebKit/commit/f74645a452f8d62be08217bb1def567fd4d9b96e
  Author: Matt Woodrow 
  Date:   2024-05-27 (Mon, 27 May 2024)

  Changed paths:
M Source/WebCore/animation/KeyframeEffect.cpp
M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp
M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp
M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.h

  Log Message:
  ---
  [view-transitions] Async animation of snapshot position via transform looks 
jumpy with sync animation of size
https://bugs.webkit.org/show_bug.cgi?id=274437


Reviewed by Cameron McCormack.

The default pseudo element structure results in an asynchronous animation of 
the snapshot position via
transform, and a sync animation of the width/height.

If there's any slowness at all on the main thread, then this looks super jumpy.

Also fixes a bug where Element::invalidateStyleForAnimation()'s forced 
composition update wasn't being
propagated to some pseudo elements, even if it originated from an animation on 
those pseudos.

* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::computeHasSizeDependentTransform):
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateAfterDescendants):
* Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateBackdropRenderer):
(WebCore::RenderTreeUpdater::GeneratedContent::updateWritingSuggestionsRenderer):
* Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.h:

Canonical link: https://commits.webkit.org/279362@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] d61142: Toggling visibility:hidden on the parent of a

2024-05-24 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d6114259cba014fee42ac469271069b0c4f887d4
  
https://github.com/WebKit/WebKit/commit/d6114259cba014fee42ac469271069b0c4f887d4
  Author: Matt Woodrow 
  Date:   2024-05-24 (Fri, 24 May 2024)

  Changed paths:
A 
LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden-expected.html
A LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden.html
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  Toggling visibility:hidden on the parent of a  can cause the previous 
frame's contents to be shown.
https://bugs.webkit.org/show_bug.cgi?id=274262


Reviewed by Simon Fraser.

We should only try to use 'copy' compositing mode to transfer the canvas buffer 
into the layer (and thus
omit any pixel clearing) if there is visible content to copy.

* 
LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden-expected.html:
 Added.
* LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden.html: 
Added.
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):

Canonical link: https://commits.webkit.org/279302@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 159906: [view-transitions] Mispositioned snapshots on http...

2024-05-23 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 159906e6201b73d5b59b2ac3aed6788b66c7a7e7
  
https://github.com/WebKit/WebKit/commit/159906e6201b73d5b59b2ac3aed6788b66c7a7e7
  Author: Matt Woodrow 
  Date:   2024-05-23 (Thu, 23 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-ref.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/platform/graphics/transforms/TransformState.cpp
M Source/WebCore/platform/graphics/transforms/TransformState.h
M Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp
M Source/WebCore/platform/graphics/transforms/TransformationMatrix.h
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h

  Log Message:
  ---
  [view-transitions] Mispositioned snapshots on 
https://codepen.io/bramus/full/mdowgYX
https://bugs.webkit.org/show_bug.cgi?id=272185
rdar://125931829

Reviewed by Simon Fraser.

We were previously unconditionally substracting the scroll position from the 
transform when positioning the snapshots.
This is incorrect in some cases, like when the element is fixed positioned.

This makes use of the existing TransformState/mapLocalToContainer code to 
correctly account for position:fixed when accumulating
transforms through ancestors.

It also adds support for flattening the 'tracked' transform when crossing 3d 
rendering context boundaries, by setting the 3rd row
and column of the TransformationMatrix to 0.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::copyElementBaseProperties):
* Source/WebCore/platform/graphics/transforms/TransformState.cpp:
(WebCore::TransformState::translateMappedCoordinates):
(WebCore::TransformState::flattenWithTransform):
* Source/WebCore/platform/graphics/transforms/TransformState.h:
* Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::flatten):
* Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:
* Source/WebCore/rendering/RenderObject.cpp:

[webkit-changes] [WebKit/WebKit] a0dd96: [view-transitions] Spinner animation on https://ww...

2024-05-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a0dd96a17f0a14f6ceab095230852d772289c052
  
https://github.com/WebKit/WebKit/commit/a0dd96a17f0a14f6ceab095230852d772289c052
  Author: Matt Woodrow 
  Date:   2024-05-22 (Wed, 22 May 2024)

  Changed paths:
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  [view-transitions] Spinner animation on 
https://www.kvin.me/posts/button-interaction jumps
https://bugs.webkit.org/show_bug.cgi?id=274400


Reviewed by Tim Nguyen.

When an element is captured in a view transition, its 'transform' gets applied 
to the
::view-transition-group pseudo element, and we stop it being applied to the 
layer
for the element itself.
This makes sure we don't accidentally put it back again with an async animation.

* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):

Canonical link: https://commits.webkit.org/279170@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] de3095: [view-transitions] Async animation of snapshot pos...

2024-05-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: de30955ecaa15582965bf1863c2c13f130e4db16
  
https://github.com/WebKit/WebKit/commit/de30955ecaa15582965bf1863c2c13f130e4db16
  Author: Matt Woodrow 
  Date:   2024-05-21 (Tue, 21 May 2024)

  Changed paths:
M Source/WebCore/animation/KeyframeEffect.cpp

  Log Message:
  ---
  [view-transitions] Async animation of snapshot position via transform looks 
jumpy with sync animation of size
https://bugs.webkit.org/show_bug.cgi?id=274437


Reviewed by Antoine Quint.

The default pseudo element structure results in an asynchronous animation of 
the snapshot position via
transform, and a sync animation of the width/height.

If there's any slowness at all on the main thread, then this looks super jumpy.

* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::computeHasSizeDependentTransform):

Canonical link: https://commits.webkit.org/279093@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 0a9688: [view-transitions] https://pokedex-dev.vercel.app/...

2024-05-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0a968814a2437db3e6cf179e6109a26c6be0e64f
  
https://github.com/WebKit/WebKit/commit/0a968814a2437db3e6cf179e6109a26c6be0e64f
  Author: Matt Woodrow 
  Date:   2024-05-21 (Tue, 21 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2.html
M Source/WebCore/rendering/RenderLayerCompositor.cpp

  Log Message:
  ---
  [view-transitions] https://pokedex-dev.vercel.app/pokemons incorrectly 
applies clips from ancestors of the captured element.
https://bugs.webkit.org/show_bug.cgi?id=274436


Reviewed by Tim Nguyen.

Effects from ancestors shouldn't be applied.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2.html:
 Added.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::clippedByAncestor const):

Canonical link: https://commits.webkit.org/279091@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a3c503: [view-transitions] https://pokedex-dev.vercel.app/...

2024-05-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a3c50349375a13f4f925ec6b5dba329ab1d5ac17
  
https://github.com/WebKit/WebKit/commit/a3c50349375a13f4f925ec6b5dba329ab1d5ac17
  Author: Matt Woodrow 
  Date:   2024-05-21 (Tue, 21 May 2024)

  Changed paths:
M Source/WebCore/css/MutableStyleProperties.cpp
M Source/WebCore/css/MutableStyleProperties.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h

  Log Message:
  ---
  [view-transitions] https://pokedex-dev.vercel.app/pokemons has super low 
framerate.
https://bugs.webkit.org/show_bug.cgi?id=274439


Reviewed by Tim Nguyen.

We invalidate the stylesheet every frame, resulting in way too much painting.

Instead, only invalidate the stylesheet if we actually inserted new styles.
Also invalidate layout, and the layer configuration for the pseudo if we
change those.

* Source/WebCore/css/MutableStyleProperties.cpp:
(WebCore::MutableStyleProperties::mergeAndOverrideOnConflict):
* Source/WebCore/css/MutableStyleProperties.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setSize):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:

Canonical link: https://commits.webkit.org/279049@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4e2c9b: Adding release logging for repeated deferrals of p...

2024-05-08 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4e2c9bd8f56ac5d7e7606ded13217a8004fe6d9d
  
https://github.com/WebKit/WebKit/commit/4e2c9bd8f56ac5d7e7606ded13217a8004fe6d9d
  Author: Matt Woodrow 
  Date:   2024-05-08 (Wed, 08 May 2024)

  Changed paths:
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h

  Log Message:
  ---
  Adding release logging for repeated deferrals of processNextQueuedMouseEvent.
https://bugs.webkit.org/show_bug.cgi?id=273908


Reviewed by Abrar Rahman Protyasha.

We defer calling processNextQueuedMouseEvent when receiving a mouse event, if 
the
previous one hasn't yet had a response from WebContent.

We should add release logging to catch if this happens too many times in a row,
since it's possibly stuck.

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleMouseEvent):
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
* Source/WebKit/UIProcess/WebPageProxy.h:

Canonical link: https://commits.webkit.org/278540@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] adf1f0: transform-style:preserve-3d doesn't work across di...

2024-05-08 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: adf1f00fb1ff19e7927fb3f519fe19e7d99caf22
  
https://github.com/WebKit/WebKit/commit/adf1f00fb1ff19e7927fb3f519fe19e7d99caf22
  Author: Matt Woodrow 
  Date:   2024-05-08 (Wed, 08 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014.html
M LayoutTests/platform/mac/TestExpectations
M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  ---
  transform-style:preserve-3d doesn't work across display:contents ancestors
https://bugs.webkit.org/show_bug.cgi?id=273627


Reviewed by Alan Baradlay.

When looking for the ancestor element to see if it has 'preserve-3d', any 
intermediate
ancestors with display:contents should be skipped.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014.html:
 Added.
* LayoutTests/platform/mac/TestExpectations:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::flattenedParent):
(WebCore::RenderLayer::ancestorLayerIsDOMParent const):

Canonical link: https://commits.webkit.org/278499@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b3f021: [view-transitions] Offscreen elements that are vis...

2024-05-06 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b3f0213101ac9e79466d8100303705d0906d07c7
  
https://github.com/WebKit/WebKit/commit/b3f0213101ac9e79466d8100303705d0906d07c7
  Author: Matt Woodrow 
  Date:   2024-05-06 (Mon, 06 May 2024)

  Changed paths:
M LayoutTests/TestExpectations
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/RenderBlock.cpp
M Source/WebCore/rendering/RenderBlock.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  [view-transitions] Offscreen elements that are visible onscreen via their 
pseudo are not rendered
https://bugs.webkit.org/show_bug.cgi?id=273751


Reviewed by Tim Nguyen.

Ensure that the snapshot code doesn't skip over offscreen position:fixed 
layers, since
we frequently want to capture layer regardless of whether they'd be visible for 
normal
painting.

Don't restrict the compositing bounds to the viewport for layers that are 
captured
in a view transition.

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::debugDescription const):
* Source/WebCore/rendering/RenderBlock.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayer):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::shouldClipCompositedBounds const):

Canonical link: https://commits.webkit.org/278439@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 26c33a: The RenderView layer shouldn't need to set shouldR...

2024-05-06 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 26c33a981702dd6c1df6d4d0da255b68290d47f8
  
https://github.com/WebKit/WebKit/commit/26c33a981702dd6c1df6d4d0da255b68290d47f8
  Author: Matt Woodrow 
  Date:   2024-05-06 (Mon, 06 May 2024)

  Changed paths:
M 
LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt
A 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
A 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-excessive-expected.txt
A 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-ok-expected.txt
M Source/WebCore/platform/graphics/GraphicsLayer.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  The RenderView layer shouldn't need to set shouldRasterize for backdrop 
filters.
https://bugs.webkit.org/show_bug.cgi?id=273611


Reviewed by Simon Fraser.

Doing so uses more memory, and shouldn't be needed if the RenderView is opaque.

Skip making the RenderView a backdrop root for the GraphicsLayers if its opaque.
Make sure any backdrop filters that will capture up to the root can still use 
the
opaque blur settings.

* LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt:
* LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt:
* LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt:
* 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt:
* 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt:
* LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt:
* 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-add-more-layers-expected.txt:
 Copied from 
LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt.
* 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-excessive-expected.txt:
 Copied from 
LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt.
* 
LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-ok-expected.txt:
 Copied from LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt.
* Source/WebCore/platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::flushCompositingState):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateBackdropRoot):

Canonical link: https://commits.webkit.org/278397@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 2e0c7a: [view-transitions] Support view transitions on top...

2024-05-02 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2e0c7a1325e77dfe9a67c60778af5ce27efa4c78
  
https://github.com/WebKit/WebKit/commit/2e0c7a1325e77dfe9a67c60778af5ce27efa4c78
  Author: Matt Woodrow 
  Date:   2024-05-02 (Thu, 02 May 2024)

  Changed paths:
M LayoutTests/TestExpectations
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/gtk/TestExpectations
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp

  Log Message:
  ---
  [view-transitions] Support view transitions on top layer elements
https://bugs.webkit.org/show_bug.cgi?id=265169


Reviewed by Tim Nguyen.

If the captured element is the document element, then the captured images 
should be
of the RenderView instead.

We already adjust the sizing to that of the view, this changes the actual 
snapshots to
happen from the view so that the top layer is included.

Changes the layer parenting for the new snapshot so that the RenderView's layer 
gets added
to the ::view-transition-new(pseudo), and the ::view-transition root pseudo get 
directly
parented in place of the RenderView.

The render tree for this situation is this:

Content-root
 |
 RenderView
   / \
   ::view-transition
\
   ::view-transition-group(root)
 |
   ::view-transition-image-pair(root)
 |
   ::view-transition-new(root)

We want to build a GraphicsLayer tree where the RenderView and all its contents 
(except the view-transition
tree) are attached to the ::view-transition-new.

Content-root
 |
::view-transition
 |
::view-transition-group(root)
 |
::view-transition-image-pair(root)
 |
::view-transition-new(root)
 |
 RenderView
 |
   

This happens by:

RenderLayerCompositor::collectViewTransitionNewContentLayers detects when the 
captured element is the ,
and adjusts to reparent the RenderView instead. This ensures the 'top layer' is 
included, as required.

RenderLayerCompositor::updateBackingAndHierarchy skips attaching the 
::view-transition's GraphicsLayer
to the parent obtained via the RenderLayer hierarchy (the RenderView's layer).

RenderLayerBacking::childForSuperlayers detects when it's a RenderView and will 
already be attached to
the ::view-transition-new, and forwards the request through to the 
::view-transition's RenderLayer,
so that ::view-transition gets attached to the parent of the RenderView instead.

Adds a new test for the ::view-transition-old(root) case.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html:
 Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::activeViewTransitionCapturedDocumentElement const):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotElementVisualOverflowClippedToViewport):
(WebCore::ViewTransition::documentElementIsCaptured const):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::isViewTransitionRoot const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::childForSuperlayers const):
(WebCore::RenderLayerBacking::childForSuperlayersExcludingViewTransitions 
const):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):

Canonical link: https://commits.webkit.org/278256@main



To unsubscribe from these emails, change your notification settings at 

[webkit-changes] [WebKit/WebKit] 84e133: [view-transitions] https://spotify-astro-transitio...

2024-05-01 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 84e133272f1e3d267014c0b78953c25750b3ed9b
  
https://github.com/WebKit/WebKit/commit/84e133272f1e3d267014c0b78953c25750b3ed9b
  Author: Matt Woodrow 
  Date:   2024-05-01 (Wed, 01 May 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped.html
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  [view-transitions] https://spotify-astro-transitions.vercel.app glitches due 
to incorrect layer position with overflow:hidden ancestor.
https://bugs.webkit.org/show_bug.cgi?id=273537


Reviewed by Tim Nguyen.

Rather than just moving the existing parent graphics layer rect (which isn't 
relevant, since this layer will be reparented),
use the rect that the pseudo (to which this layer will be reparented) 
represents directly. It still needs to be moved into the coordinate
space of the current compositing ancestor, since that's what the following code 
expects.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped.html:
 Added.
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):

Canonical link: https://commits.webkit.org/278230@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 85a241: inputNormalizeEdgesTransparent blur isn't availabl...

2024-04-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 85a241ca1e5f23b30574ccfa51d54f17b6e3932a
  
https://github.com/WebKit/WebKit/commit/85a241ca1e5f23b30574ccfa51d54f17b6e3932a
  Author: Matt Woodrow 
  Date:   2024-04-29 (Mon, 29 Apr 2024)

  Changed paths:
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCAFilters.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  ---
  inputNormalizeEdgesTransparent blur isn't available on all platforms.
https://bugs.webkit.org/show_bug.cgi?id=273280


Reviewed by Darin Adler.

We currently try to set this everywhere, but the key isn't always available.

We should use inputHardEdges instead, but since this looks worse, we should try 
to use
inputNormalizeEdges when we know the blurred area is opaque.

This detects when the layer that establishes a backdrop root also has an opaque
background color, and passes that down to descendants in order to pick the 
right blur
mode.

* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateBackdropFilters):
(WebCore::GraphicsLayerCA::updateBackdropRoot):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCAFilters.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayer.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(WebCore::PlatformCAFilters::setFiltersOnLayer):
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::setBackdropRootIsOpaque):
(WebCore::PlatformCALayerCocoa::setFilters):
* Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm:
(WebKit::RemoteAcceleratedEffectStack::applyEffectsFromMainThread const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::backdropRootIsOpaque const):
(WebKit::RemoteLayerTreeNode::setBackdropRootIsOpaque):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues):
* 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateAnimations):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::setBackdropRootIsOpaque):

Canonical link: https://commits.webkit.org/278155@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3ba31e: [view-transitions] Pseudo elements can't be captured.

2024-04-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3ba31ee3b3d5e5a87e409978bc11eb8aa0c7f1c5
  
https://github.com/WebKit/WebKit/commit/3ba31ee3b3d5e5a87e409978bc11eb8aa0c7f1c5
  Author: Matt Woodrow 
  Date:   2024-04-29 (Mon, 29 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/Node.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebCore/style/StyleAdjuster.cpp
M Source/WebCore/style/StyleAdjuster.h
M Source/WebCore/style/StyleResolver.cpp
M Source/WebCore/style/StyleResolver.h
M Source/WebCore/style/Styleable.cpp
M Source/WebCore/style/Styleable.h

  Log Message:
  ---
  [view-transitions] Pseudo elements can't be captured.
https://bugs.webkit.org/show_bug.cgi?id=273166


Reviewed by Tim Nguyen.

Pseudo elements (like ::backdrop) don't have an associated Element, so can't
be found by ViewTransition's forEachElementInPaintOrder.

Rather than holding an Element in CapturedElement, hold a Styleable instead
which can represent these pseudo elements as well.

Since the normal Styleable class uses an Element reference, introduces a
WeakStyleable object which uses a WeakPtr to an Element and can (maybe) be
converted back into a Styleable when needed.

Changes most of the ViewTransition code to operator on the RenderElement
from the Styleable, instead of the Element.

Adds capturedInViewTransition to Styleable, so that we can look this up
in cases where the renderer hasn't yet been created.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/Element.cpp:
(WebCore::operator<<):
* Source/WebCore/dom/Element.h:
(WebCore::Element::capturedInViewTransition const): Deleted.
(WebCore::Element::setCapturedInViewTransition): Deleted.
* Source/WebCore/dom/Node.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::effectiveViewTransitionName):
(WebCore::captureOverflowRect):
(WebCore::snapshotElementVisualOverflowClippedToViewport):
(WebCore::forEachRendererInPaintOrder):
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::captureNewState):
(WebCore::ViewTransition::activateViewTransition):
(WebCore::ViewTransition::clearViewTransition):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
(WebCore::ViewTransition::viewTransitionNewPseudoForCapturedElement):
(WebCore::forEachElementInPaintOrder): Deleted.
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::initializeStyle):
(WebCore::RenderElement::capturedInViewTransition const): Deleted.
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::paintList):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::capturedInViewTransition const):
(WebCore::RenderObject::setCapturedInViewTransition):
* Source/WebCore/style/Styleable.cpp:
(WebCore::Styleable::capturedInViewTransition const):
* Source/WebCore/style/Styleable.h:
(WebCore::WeakStyleable::operator bool const):
(WebCore::WeakStyleable::operator=):
(WebCore::WeakStyleable::styleable const):

Canonical link: https://commits.webkit.org/278123@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 500fd5: [view-transitions] css/css-view-transitions/conten...

2024-04-29 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 500fd5004df14f04bfeb13a58634e5506073d910
  
https://github.com/WebKit/WebKit/commit/500fd5004df14f04bfeb13a58634e5506073d910
  Author: Matt Woodrow 
  Date:   2024-04-29 (Mon, 29 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] css/css-view-transitions/content-with-clip.html fails due 
to duplicate pseudo renderers.
https://bugs.webkit.org/show_bug.cgi?id=273388


Reviewed by Tim Nguyen.

The root element is included in the old state, but not the new, and is the first
name in the namedElements map.

Each frame during updatePseudoElementTree, `buildPseudoElementGroup` is called
for the root, and nothing is created (as expected)..

currentGroup then gets moved to the previous sibling, which is nullptr, and then
is in a broken state for further iterations.

All other iterated names then create new renderers, without removing the
existing ones.

* LayoutTests/TestExpectations:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree):

Canonical link: https://commits.webkit.org/278120@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b4321a: [view-transitions] Handle overflow:hidden on ::vie...

2024-04-24 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b4321a0a6e7085a38a340b6353a0ddef31d9f5f8
  
https://github.com/WebKit/WebKit/commit/b4321a0a6e7085a38a340b6353a0ddef31d9f5f8
  Author: Matt Woodrow 
  Date:   2024-04-24 (Wed, 24 Apr 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden.html
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h

  Log Message:
  ---
  [view-transitions] Handle overflow:hidden on ::view-transition-new/old.
https://bugs.webkit.org/show_bug.cgi?id=273058


Reviewed by Tim Nguyen.

Implement updateFromStyle, and make sure setHasNonVisibleOverflow gets called 
if necessary. Normally this only
happens for RenderBlock subclasses, not RenderReplaced (which don't really 
support overflow properly yet, see
bug 273055).

If overflow is hidden, fall back to snapshotting each frame of the transition 
instead of using compositing
layer attachment, since overflow hidden isn't supported there either.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden.html:
 Added.
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::updateFromStyle):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:

Canonical link: https://commits.webkit.org/277959@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ff9cef: [view-transitions] Replaced content rect offset is...

2024-04-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ff9ceff0e3c78e5c80ff0d55f972f0a0f585352e
  
https://github.com/WebKit/WebKit/commit/ff9ceff0e3c78e5c80ff0d55f972f0a0f585352e
  Author: Matt Woodrow 
  Date:   2024-04-22 (Mon, 22 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h

  Log Message:
  ---
  [view-transitions] Replaced content rect offset isn't respected when using 
layer attachment.
https://bugs.webkit.org/show_bug.cgi?id=273057

Reviewed by Tim Nguyen.

If the 'replaced content rect' starts outside of the content box (like happens 
with
`object-fit: none;`), then the layer attachment path doesn't handle this 
correctly.

Moves the addition of the replaced content rect location into the stored local 
overflow,
rather than doing so in a temporary in the painting code.

Adjusts the position of the attached layer by the difference between the 
renderer's
visual overflow rect, and where the capture layer actually begins (the local 
overflow
rect for the capture).

* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::paintReplaced):
(WebCore::RenderViewTransitionCapture::layout):
(WebCore::RenderViewTransitionCapture::updateFromStyle):
(WebCore::RenderViewTransitionCapture::captureContentInset const):
(WebCore::RenderViewTransitionCapture::debugDescription const):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:

Canonical link: https://commits.webkit.org/277835@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 124d36: [view-transitions] View transition pseudo elements...

2024-04-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 124d36f180e38519cebcf56b356ea7e5e53b245b
  
https://github.com/WebKit/WebKit/commit/124d36f180e38519cebcf56b356ea7e5e53b245b
  Author: Matt Woodrow 
  Date:   2024-04-22 (Mon, 22 Apr 2024)

  Changed paths:
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h

  Log Message:
  ---
  [view-transitions] View transition pseudo elements should be anonymous.
https://bugs.webkit.org/show_bug.cgi?id=273056

Reviewed by Tim Nguyen.

We have existing code that expects renderers that return false from isAnonymous
to also have a valid Element.

Rather than making the view-transition pseudo elements not-anonymous, we
should instead change the consumers of isAnonymous so that these 
pseudo-renderers
can still be containing blocks.

* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::skipContainingBlockForPercentHeightCalculation const):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing const):
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::containingBlockForAutoHeightDetection const):
(WebCore::RenderBoxModelObject::requiresLayer const):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::isViewTransitionPseudo const): Deleted.
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::RenderObject):
(WebCore::shouldBeAnonymous): Deleted.
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isViewTransitionPseudo const):
(WebCore::RenderObject::isAnonymousForPercentageResolution const):
(WebCore::RenderObject::node const):

Canonical link: https://commits.webkit.org/277834@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 6e1c47: [view-transitions] view-transition-name should cau...

2024-04-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6e1c477fdf2bbdc8a92c50af9c3d8961e430b665
  
https://github.com/WebKit/WebKit/commit/6e1c477fdf2bbdc8a92c50af9c3d8961e430b665
  Author: Matt Woodrow 
  Date:   2024-04-22 (Mon, 22 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderInline.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderTableRow.cpp
M Source/WebCore/style/StyleAdjuster.cpp

  Log Message:
  ---
  [view-transitions] view-transition-name should cause flattening of 3d 
transforms.
https://bugs.webkit.org/show_bug.cgi?id=272951


Reviewed by Tim Nguyen.

Adjuster::adjust should force the used value of transform-style to flat, if
a view-transition-name value is present, or the element is captured in a view
transition.

Adds RenderElement::requiresRenderingConsolidationForViewTransition() for this
state (which can't be used for Adjuster unfortunately, since the style isn't
yet set), and switch other callsites to use it (so that we also get a layer
and backdrop root for the same conditions).

RenderLayerBacking can no longer rely on querying the name from style (since
it might be removed or changed), so adds 
viewTransitionNewPseudoForCapturedElement
for looking up the pseudo element via the captured elements list.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::viewTransitionNewPseudoForCapturedElement):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::requiresLayer const):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::capturedInViewTransition const):
(WebCore::RenderElement::requiresRenderingConsolidationForViewTransition const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::requiresLayer const):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
(WebCore::RenderLayer::computeCanBeBackdropRoot const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::requiresLayer const):
* Source/WebCore/style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjust const):

Canonical link: https://commits.webkit.org/277801@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 554ffc: [view-transitions] Image capture rectangle doesn't...

2024-04-18 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 554ffc8d53654f1534876ec80ce8857162e005b9
  
https://github.com/WebKit/WebKit/commit/554ffc8d53654f1534876ec80ce8857162e005b9
  Author: Matt Woodrow 
  Date:   2024-04-18 (Thu, 18 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/wpe/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h

  Log Message:
  ---
  [view-transitions] Image capture rectangle doesn't include positioned 
descendants.
https://bugs.webkit.org/show_bug.cgi?id=272875


Reviewed by Tim Nguyen.

Consolidate three different callers of 'localBoundingBox' into a single helper
'captureOverflowRect', or read from the previous value on 
RenderViewTransitionCapture.

Switch to using 'calculateLayerBounds' instead of 'localBoundingBox', since this
also recurses through descendant layers.

Adds a new flag 'PreserveAncestorFlags' to ensure that 
'UseLocalClipRectIfPossible'
isn't added when recursing through descendants (which incorrectly applies 
overflow
clipping to descendants that have a containing block outside).

If the captured element is the root element, use the snapshot containing block 
size
instead of the ink overflow rectangle.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::captureOverflowRect):
(WebCore::snapshotElementVisualOverflowClippedToViewport):
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::updatePseudoElementStyles):
(WebCore::snapshotNodeVisualOverflowClippedToViewport): Deleted.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:

Canonical link: https://commits.webkit.org/277714@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 84c369: [view-transitions] https://simple-set-demos.glitch...

2024-04-17 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 84c369e893d8167a747e771777a93565c0d7e9df
  
https://github.com/WebKit/WebKit/commit/84c369e893d8167a747e771777a93565c0d7e9df
  Author: Matt Woodrow 
  Date:   2024-04-17 (Wed, 17 Apr 2024)

  Changed paths:
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d.html
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/style/RenderStyleConstants.h
M Source/WebCore/style/StyleTreeResolver.cpp

  Log Message:
  ---
  [view-transitions] https://simple-set-demos.glitch.me/gross-cube-transition 
doesn't render 3d effects.
https://bugs.webkit.org/show_bug.cgi?id=272713


Reviewed by Tim Nguyen.

ancestorLayerIsDOMParent (used for determing if 'transform-style: preserve-3d'
from the parent should be applied) was only taking into account 'Element' 
ancestors.
Add support for also checking for pseudo-element parents in the view-transition
tree.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d.html:
 Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::ancestorLayerIsDOMParent const):
(WebCore::RenderLayer::participatesInPreserve3D const):
(WebCore::parentLayerIsDOMParent): Deleted.
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransformFlatteningLayer):
(WebCore::ancestorLayerIsDOMParent): Deleted.
* Source/WebCore/rendering/style/RenderStyleConstants.h:
(WebCore::parentPseudoElement):
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::makeResolutionContextForPseudoElement):

Canonical link: https://commits.webkit.org/277639@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 61f529: [view-transitions] Occasional fade while animating...

2024-04-17 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 61f529e65a3fce776e8c04a65ffda08901656751
  
https://github.com/WebKit/WebKit/commit/61f529e65a3fce776e8c04a65ffda08901656751
  Author: Matt Woodrow 
  Date:   2024-04-17 (Wed, 17 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/gtk/TestExpectations
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Occasional fade while animating on 
https://codepen.io/argyleink/pen/dyLNgpX.
https://bugs.webkit.org/show_bug.cgi?id=272184


Reviewed by Tim Nguyen.

Captured view-transition snapshots need to be rescaled when the intrinsic size 
of the image is
different to the layout size of the pseduo element.

The captured image covers the overflow rect of the original element, but the 
border-box subset
defines the intrinsic size.
This computes the scale factors required to scale the intrinsic size of the up 
the replaced
content size of the pseudo renderer. It then scales the overflow rect (in 
coordinates of
the original element) into coordinates for the pseudo renderer.

Painting of the pseudo element (both new and old variants) are updated to 
factor this
scale in to the draw commands or layer attributes.

Doing this sizing during painting correctly exposed bugs where the computed 
layout of
the pseduo renderer was incorrect.

ViewTransition:::copyElementBaseProperties is changed to use the 'frameRect' of 
the view
(instead of the 'contentsWidth') when computing the size of the root element, 
so that
space taken up by scrollbars isn't removed.

RenderObject's calculation of the 'IsAnonymous' flag is changed so that the 
view-transition
pseudo elements are not considered anonymous and then correctly can be 
containing blocks
for their descendants.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::shouldBeAnonymous):
(WebCore::RenderObject::RenderObject):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isRenderViewTransitionContainer const):
(WebCore::RenderObject::hasIntrinsicAspectRatio const):
(WebCore::RenderObject::node const):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::paintReplaced):
(WebCore::RenderViewTransitionCapture::layout):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
(WebCore::RenderViewTransitionCapture::scale const):
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree):
(WebCore::createRendererIfNeeded):

Canonical link: https://commits.webkit.org/277636@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 913ff8: [view-transitions] Visual overflow rect should be ...

2024-04-14 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 913ff8ca74490f55505e0e1211cda10dbd7ac43f
  
https://github.com/WebKit/WebKit/commit/913ff8ca74490f55505e0e1211cda10dbd7ac43f
  Author: Matt Woodrow 
  Date:   2024-04-14 (Sun, 14 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Visual overflow rect should be recomputed at every frame
https://bugs.webkit.org/show_bug.cgi?id=272496


Reviewed by Tim Nguyen.

The existing code only read the visual overflow rect of the old element, and 
used it for
both the new and old pseudo elements. The visual overflow of the new element 
should
be copied every frame, and updated on the relevant pseudo element.

This also exposed a bug where we were used the computed value for width and 
height as the
specified style for the group pseudo, instead of using the border-box size.

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left.html:
 Added.
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setImage):
(WebCore::RenderViewTransitionCapture::setSize):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::createRendererIfNeeded):

Canonical link: https://commits.webkit.org/277482@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 977b09: hideContentUntilPendingUpdate should not unconditi...

2024-04-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 977b091711224b2a2d8dffaaf449d13d064d9808
  
https://github.com/WebKit/WebKit/commit/977b091711224b2a2d8dffaaf449d13d064d9808
  Author: Matt Woodrow 
  Date:   2024-04-11 (Thu, 11 Apr 2024)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  ---
  hideContentUntilPendingUpdate should not unconditionally create a process 
throttler activity.
https://bugs.webkit.org/show_bug.cgi?id=272423


Reviewed by Tim Horton.

hideContentUntilPendingUpdate uses a round-trip to the WebContent process, 
where the reply is
bundled into the following layer transaction. This ensures that any previous 
IPC messages
from the UI process have been received, and we remain hidden until the next 
layer transaction
sent after those messages.

We don't need to hold a background activity and keep the WebProcess unsuspended 
during this
process, and applicationDidFinishSnapshottingAfterEnteringBackground is 
explicitly trying
to suspend with the intent that the un-hiding happens on the first paint after 
returning
from the background.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):

Canonical link: https://commits.webkit.org/277398@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3a5477: [view-transitions] Incorrect position when view tr...

2024-04-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3a5477d552d99df32f465dd33b9725df8c49e283
  
https://github.com/WebKit/WebKit/commit/3a5477d552d99df32f465dd33b9725df8c49e283
  Author: Matt Woodrow 
  Date:   2024-04-11 (Thu, 11 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Incorrect position when view transition is partially 
scrolled off viewport.
https://bugs.webkit.org/show_bug.cgi?id=270147


Reviewed by Tim Nguyen.

The ::view-transition-group pseudo-element is position:fixed, and thus attached 
to the initial
containing block. The computed transfrom from the old element to it's position 
as a child of this
pseudo needs to include the scroll position of the RenderView.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::copyElementBaseProperties):

Canonical link: https://commits.webkit.org/277371@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 703822: REGRESSION (274863@main): Safari loads website con...

2024-04-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 703822b1f44ff45ca41be77a163a7adef9478ab4
  
https://github.com/WebKit/WebKit/commit/703822b1f44ff45ca41be77a163a7adef9478ab4
  Author: Matt Woodrow 
  Date:   2024-04-11 (Thu, 11 Apr 2024)

  Changed paths:
A 
LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale-expected.html
A LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale.html
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/platform/graphics/ca/cocoa/WebTiledBackingLayer.mm

  Log Message:
  ---
  REGRESSION (274863@main): Safari loads website content at a lower resolution 
with in-process layers and backdrop-filter.
https://bugs.webkit.org/show_bug.cgi?id=272430


Reviewed by Simon Fraser.

WebTiledBackingLayer wasn't forwarding the contentScale/rasterizationScale onto 
the underlying CALayer,
and this value gets used when the layer forces rasterization as a backdrop root.

* 
LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale-expected.html:
 Added.
* LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale.html: 
Added.
* Source/WebCore/platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer createTileController:]):
(-[WebTiledBackingLayer setContentsScale:]):

Canonical link: https://commits.webkit.org/277370@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bf2e58: Text on daringfireball.net (with backdrop-filter) ...

2024-04-10 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bf2e585595911f4c963b4603c4e1fb32c444053e
  
https://github.com/WebKit/WebKit/commit/bf2e585595911f4c963b4603c4e1fb32c444053e
  Author: Matt Woodrow 
  Date:   2024-04-10 (Wed, 10 Apr 2024)

  Changed paths:
A LayoutTests/css3/filters/backdrop-filter-page-scale-expected.html
A LayoutTests/css3/filters/backdrop-filter-page-scale.html
M LayoutTests/platform/mac-wk1/TestExpectations
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp

  Log Message:
  ---
  Text on daringfireball.net (with backdrop-filter) looks fuzzy when zoomed in.
https://bugs.webkit.org/show_bug.cgi?id=272432


Reviewed by Simon Fraser.

UI-side compositing equivalent of bug 272430. We need to make sure the content 
scale
is forwarded to the underlying CALayer for the container, as well as the tile 
controller.

* LayoutTests/css3/filters/backdrop-filter-page-scale-expected.html: Added.
* LayoutTests/css3/filters/backdrop-filter-page-scale.html: Added.
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp:
(WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking):
(WebKit::PlatformCALayerRemoteTiledBacking::setContentsScale):

Canonical link: https://commits.webkit.org/277352@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ce9d97: [Site Isolation] Resizing the window causes render...

2024-04-10 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ce9d973285487efd092c8d5f8d4737e9506d5221
  
https://github.com/WebKit/WebKit/commit/ce9d973285487efd092c8d5f8d4737e9506d5221
  Author: Matt Woodrow 
  Date:   2024-04-10 (Wed, 10 Apr 2024)

  Changed paths:
M 
LayoutTests/http/tests/site-isolation/scrolling/basic-scrolling-tree-expected.txt
M Source/WebCore/page/Page.cpp

  Log Message:
  ---
  [Site Isolation] Resizing the window causes rendering issues inside 
cross-origin iframe.
https://bugs.webkit.org/show_bug.cgi?id=272419


Reviewed by Alex Christensen.

When Page::layoutIfNeeded tries to layout all documents (and flush their 
compositing
layers), it should do so for all root frames, not just the main frame.

* Source/WebCore/page/Page.cpp:
(WebCore::Page::layoutIfNeeded):

Canonical link: https://commits.webkit.org/277339@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ef653e: [view-transitions] Capturing the root background s...

2024-04-08 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ef653ed93c60ee008719cea7d3ef926d4725d203
  
https://github.com/WebKit/WebKit/commit/ef653ed93c60ee008719cea7d3ef926d4725d203
  Author: Matt Woodrow 
  Date:   2024-04-08 (Mon, 08 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Capturing the root background shows a white area at bottom
https://bugs.webkit.org/show_bug.cgi?id=272186


Reviewed by Tim Nguyen.

When capturing the image for the root element, we want to use the size of the
snapshot containing block, which covers the full view, not just the size of
the root element itself.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotNodeVisualOverflowClippedToViewport):

Canonical link: https://commits.webkit.org/277224@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 08b68e: [view-transitions] Visual overflow extending beyon...

2024-04-07 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 08b68eceb0a3c8e04f8dac5fb5c98bf3712e2956
  
https://github.com/WebKit/WebKit/commit/08b68eceb0a3c8e04f8dac5fb5c98bf3712e2956
  Author: Matt Woodrow 
  Date:   2024-04-07 (Sun, 07 Apr 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  [view-transitions] Visual overflow extending beyond the viewport causes 
incorrect snapshot positioning.
https://bugs.webkit.org/show_bug.cgi?id=272130


Reviewed by Tim Nguyen.

The RenderViewTransitionCapture renderer is created with visual overflow 
matching
the overflow of the element that will be captured.

If the RenderLayerBacking ends up with smaller compositedBounds() due to 
clipping, then
we need to adjust the layer positioning by the difference in the origins.

* LayoutTests/TestExpectations:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):

Canonical link: https://commits.webkit.org/277183@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7ffc7f: Backdrop-filter forces compositing on the root ele...

2024-03-27 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7ffc7f9fd02ae05936e368c7a7c2d6774ff1f6a9
  
https://github.com/WebKit/WebKit/commit/7ffc7f9fd02ae05936e368c7a7c2d6774ff1f6a9
  Author: Matt Woodrow 
  Date:   2024-03-27 (Wed, 27 Mar 2024)

  Changed paths:
A 
LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt
A 
LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root.html
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
A 
LayoutTests/platform/glib/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M LayoutTests/platform/mac-wk1/TestExpectations
A 
LayoutTests/platform/mac-wk1/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt
M 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt
A 
LayoutTests/platform/mac-wk1/layer-creation/will-change-on-normal-flow-content-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderView.cpp
M Tools/DumpRenderTree/TestOptions.cpp

  Log Message:
  ---
  Backdrop-filter forces compositing on the root element and uses extra memory.
https://bugs.webkit.org/show_bug.cgi?id=271340


Reviewed by Simon Fraser.

The backdrop-filter spec requires that the root element be a backdrop root, and 
creates a separate
compositing layer, separate from the base background color of the view. 
However, most tests are
expecting the base white color to be included in the captured backdrop.

I've filed https://github.com/w3c/fxtf-drafts/issues/557 to try resolve the 
spec/implementation mismatch.

This change makes the root element only a backdrop root if it also has one of 
the other grouping
graphics properties. Notably not included is the 'view-transition-name' 
property, since this is
present on the root as a default UA style.

It also changes RenderView::rootElementShouldPaintBaseBackground so that we 
don't paint the base
background color as part of the root element's background, if we did end up 
making the root element
a backdrop root.

It also ensures the default value of CSSUnprefixedBackdropFilterEnabled is 
always false for
WebKitLegacy, rather than correctly support root background rendering with 
backdrop filter.

* 
LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt:
 Added.
* 
LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root.html:
 Added.
* 

[webkit-changes] [WebKit/WebKit] 72a544: Backdrop-filter: blur() with a transparent backdro...

2024-03-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 72a54445957dedd746d7958426195091e80fe77a
  
https://github.com/WebKit/WebKit/commit/72a54445957dedd746d7958426195091e80fe77a
  Author: Matt Woodrow 
  Date:   2024-03-20 (Wed, 20 Mar 2024)

  Changed paths:
M Source/WebCore/platform/graphics/GraphicsLayerClient.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCAFilters.h
M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm

  Log Message:
  ---
  Backdrop-filter: blur() with a transparent backdrop renders incorrectly.
https://bugs.webkit.org/show_bug.cgi?id=176830


This sets the 'inputNormalizeEdgesTransparent' property on the CoreAnimation 
blur
filter function, required to get correct blur behaviour on the edge of a 
partially
transparent surface.

Reviewed by Simon Fraser.

I haven't found a good way to test this that isn't super fuzzy unfortunately.

This is only enabled when unprefixed backdrop filter is enabled, since it 
requires
a backdrop root (part of unprefixing) to restrict the blur area correctly.

* Source/WebCore/platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::cssUnprefixedBackdropFilterEnabled const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerCSSUnprefixedBackdropFilterEnabled 
const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCAFilters.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerCSSUnprefixedBackdropFilterEnabled
 const):
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(WebCore::PlatformCAFilters::setFiltersOnLayer):
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::setFilters):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::cssUnprefixedBackdropFilterEnabled const):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::cssUnprefixedBackdropFilterEnabled const):

Canonical link: https://commits.webkit.org/276430@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b3f5cc: Speedometer 3: buildTransaction spends a lot of ti...

2024-03-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b3f5ccb38cd2800b166d39aeb366186f94a38f93
  
https://github.com/WebKit/WebKit/commit/b3f5ccb38cd2800b166d39aeb366186f94a38f93
  Author: Matt Woodrow 
  Date:   2024-03-20 (Wed, 20 Mar 2024)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp

  Log Message:
  ---
  Speedometer 3: buildTransaction spends a lot of time destroying mach port 
objects.
https://bugs.webkit.org/show_bug.cgi?id=270549


Reviewed by Kimmo Kinnunen.

Flusing a RemoteImageBufferSetProxy waits on both the `didPrepareForDisplay` 
message
to be delivered to the WorkQueue, and the semaphore to be signaled when drawing 
command
flushing is completed.

This was previously required, since building of the transaction on the main 
thread was
blocked on the didPrepareForDisplay message, so it was delivered as early as 
possible.

The current state is that all waiting happens on a background thread, so 
there's no
longer any benefit to having two separate notifications.

This changes moves sending of the didPrepareForDisplay message to happen once 
drawing
flushing is completed, and removes the seamphore signaling.

This should be a small performance win in some cases, since we no longer need 
to allocate
and destroy the semaphore objects.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::RemoteImageBufferSet):
(WebKit::RemoteImageBufferSet::endPrepareForDisplay):
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
(WebKit::RemoteImageBufferSet::setFlushSignal): Deleted.
(WebKit::RemoteImageBufferSet::flush): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp:
(WebKit::RemoteImageBufferSetProxyFlushFence::create):
(WebKit::RemoteImageBufferSetProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferSetProxyFlushFence::RemoteImageBufferSetProxyFlushFence):
(WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync):
(WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence):
 Deleted.
(WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent): Deleted.
(WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal): Deleted.
(): Deleted.
(WebKit::RemoteImageBufferSetProxy::createFlushFence): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay):

Canonical link: https://commits.webkit.org/276421@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] afd161: REGRESSION(268173@main) Safari rendered bdiusa.com...

2024-03-18 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: afd16103076c8029ee4527728da0ff1926fc7483
  
https://github.com/WebKit/WebKit/commit/afd16103076c8029ee4527728da0ff1926fc7483
  Author: Matt Woodrow 
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
A LayoutTests/fast/clip/offscreen-transparency-clip-expected.html
A LayoutTests/fast/clip/offscreen-transparency-clip.html
M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  ---
  REGRESSION(268173@main) Safari rendered bdiusa.com as all white.
https://bugs.webkit.org/show_bug.cgi?id=270926


Reviewed by Simon Fraser.

We're using transparencyClipBox to determine the size of the transparency layer 
to push,
and it's returning an empty rectangle.

It recurses through descendants, and finds a child layer positioned way off to 
the left
of the screen (at -33553151).

Due to limits of int32, adding the bounds of that child into the original rect
(0,0) width=1686 height=18933.45, results in (-33554430,0) width=33554432 
height=18933.45
which no longer includes the visible area of the screen (except for the very 
left edge).

This fix moves the intersection with the dirty rect down to happen per-layer, 
so that
we clip before unioning the descendants in, and avoid this problem.

As the existing code comment mentions, it would still be preferable to take CSS 
clips
into account when computing these rectangles.

* LayoutTests/fast/clip/offscreen-transparency-clip-expected.html: Added.
* LayoutTests/fast/clip/offscreen-transparency-clip.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::transparencyClipBox):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::paintingExtent): Deleted.

Canonical link: https://commits.webkit.org/276294@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b6a5d7: [view-transitions] Computed transform for captured...

2024-03-07 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b6a5d7eb40fbaebf2bd491ea66de0b527ede0a7e
  
https://github.com/WebKit/WebKit/commit/b6a5d7eb40fbaebf2bd491ea66de0b527ede0a7e
  Author: Matt Woodrow 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp

  Log Message:
  ---
  [view-transitions] Computed transform for captured elements with 3d 
transforms is incorrect
https://bugs.webkit.org/show_bug.cgi?id=270428


Reviewed by Tim Nguyen.

This reverses the order that the matrices are concatenated when walking
ancestors. It also applies the inverse of the changes that will be applied
for transform-origin, since the computed transform already takes that into
account.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):

Canonical link: https://commits.webkit.org/275810@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 525f85: import-w3c-tests should rewrite reference file nam...

2024-03-06 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 525f853875c0dcaebc7df8ba2317ce8ab0734156
  
https://github.com/WebKit/WebKit/commit/525f853875c0dcaebc7df8ba2317ce8ab0734156
  Author: Matt Woodrow 
  Date:   2024-03-06 (Wed, 06 Mar 2024)

  Changed paths:
M Tools/Scripts/webkitpy/w3c/test_converter.py
M Tools/Scripts/webkitpy/w3c/test_importer.py

  Log Message:
  ---
  import-w3c-tests should rewrite reference file names in meta fuzzy 
annotations.
https://bugs.webkit.org/show_bug.cgi?id=270426


Reviewed by Jonathan Bedard.

* Tools/Scripts/webkitpy/w3c/test_converter.py:
(convert_for_webkit):
(_W3CTestConverter.__init__):
(_W3CTestConverter.convert_attributes_if_needed):
* Tools/Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.find_importable_tests):
(TestImporter.import_tests):

Canonical link: https://commits.webkit.org/275750@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] db2e97: [view-transitions] Reimport view-transitions WPTs.

2024-03-06 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: db2e977c3266b1fa5601ffd6aa305bd3e3584538
  
https://github.com/WebKit/WebKit/commit/db2e977c3266b1fa5601ffd6aa305bd3e3584538
  Author: Matt Woodrow 
  Date:   2024-03-06 (Wed, 06 Mar 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/imported/w3c/resources/resource-files.json
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/block-with-overflowing-text.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-offscreen-child.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-opacity-zero-child.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-visibility-mixed-descendants.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/content-with-transform-new-image.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/content-with-transform-old-image.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/far-away-capture.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/fractional-box-with-overflow-children-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/fractional-box-with-overflow-children-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-new-has-scrollbar.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-old-has-scrollbar.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-transition-destroyed-document-crash.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-transition.sub.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html
M 

[webkit-changes] [WebKit/WebKit] 222378: View transition new captures apply the transform t...

2024-02-28 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 22237898bafcf2f2a364d4a42c89215c27916af0
  
https://github.com/WebKit/WebKit/commit/22237898bafcf2f2a364d4a42c89215c27916af0
  Author: Matt Woodrow 
  Date:   2024-02-28 (Wed, 28 Feb 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  View transition new captures apply the transform twice.
https://bugs.webkit.org/show_bug.cgi?id=270209


Reviewed by Tim Nguyen.

The transform is added to the ::view-transform-group element
as a generated style, so we need to clear it from the reparented
GraphicsLayer.

* LayoutTests/TestExpectations:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateTransform):

Canonical link: https://commits.webkit.org/275439@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4c5820: [Gardening] Enable some view-transition test that ...

2024-02-27 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4c582037a107bdf7ad254e9860eca03b9d81e3be
  
https://github.com/WebKit/WebKit/commit/4c582037a107bdf7ad254e9860eca03b9d81e3be
  Author: Matt Woodrow 
  Date:   2024-02-27 (Tue, 27 Feb 2024)

  Changed paths:
M LayoutTests/platform/mac-wk2/TestExpectations

  Log Message:
  ---
  [Gardening] Enable some view-transition test that no longer crash.
https://bugs.webkit.org/show_bug.cgi?id=270014


Reviewed by Tim Nguyen.

These got fixed by 75312@main.

* LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/275420@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b560a1: Capturing the old view transition snapshot include...

2024-02-26 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b560a1bd3facf431c730f0c03dcffcd8923d94c8
  
https://github.com/WebKit/WebKit/commit/b560a1bd3facf431c730f0c03dcffcd8923d94c8
  Author: Matt Woodrow 
  Date:   2024-02-26 (Mon, 26 Feb 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h

  Log Message:
  ---
  Capturing the old view transition snapshot includes descendant 
view-transition.
https://bugs.webkit.org/show_bug.cgi?id=270056


Reviewed by Tim Nguyen.

The 'capture the image' algorithm should skip over descendant elements that
also have a view transition.

This changes snapshotNodeVisualOverflowClippedToViewport to call 'paint' on
the RenderLayer of the element with a view-transition directly rather than
calling it on the root elements Layer (with a subtree painting root set).

It adds a new PaintFlag 'PaintingSkipDescendantViewTransition' which skips 
descending
into child layers that are being separately captured in a view transition.

* LayoutTests/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotNodeVisualOverflowClippedToViewport):
(WebCore::ViewTransition::captureOldState):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):
* Source/WebCore/rendering/RenderLayer.h:

Canonical link: https://commits.webkit.org/275312@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] c76f59: View transition layers are positioned wrong if a c...

2024-02-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c76f59cd157b8728cdac41d7336553dc84c3297f
  
https://github.com/WebKit/WebKit/commit/c76f59cd157b8728cdac41d7336553dc84c3297f
  Author: Matt Woodrow 
  Date:   2024-02-25 (Sun, 25 Feb 2024)

  Changed paths:
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  View transition layers are positioned wrong if a clipping layer is present.
https://bugs.webkit.org/show_bug.cgi?id=270058


Reviewed by Tim Nguyen.

Positioning for a view-transition 'new' layer currently sets the origin of the
primary graphics rect to 0,0, but this doesn't move any clipping layers 
positioned
in updateClippingStackLayerGeometry.

We can instead adjust the position of the 'parent graphics layer rect' (since 
all
local layer positions are computed relative to that) to a value that results in 
0,0
being computed for the primary rect.

* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):

Canonical link: https://commits.webkit.org/275307@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 559ced: ::view-transition-group(*) has the same specificit...

2024-02-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 559ced3ec51e3eabb61e6a5ea6f66d204a1e60bf
  
https://github.com/WebKit/WebKit/commit/559ced3ec51e3eabb61e6a5ea6f66d204a1e60bf
  Author: Matt Woodrow 
  Date:   2024-02-25 (Sun, 25 Feb 2024)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/css/CSSSelector.cpp

  Log Message:
  ---
  ::view-transition-group(*) has the same specificity as 
::view-transition-group().
https://bugs.webkit.org/show_bug.cgi?id=270054
rdar://123606489>

Reviewed by Tim Nguyen.

* LayoutTests/TestExpectations:
* Source/WebCore/css/CSSSelector.cpp:
(WebCore::simpleSelectorSpecificity):

Canonical link: https://commits.webkit.org/275300@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 34e14b: View transition old snapshots incorrectly get scal...

2024-02-23 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 34e14bf3631972e46abcee10b0b72f0339e7a493
  
https://github.com/WebKit/WebKit/commit/34e14bf3631972e46abcee10b0b72f0339e7a493
  Author: Matt Woodrow 
  Date:   2024-02-23 (Fri, 23 Feb 2024)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/page/FrameSnapshotting.cpp
M Source/WebCore/page/FrameSnapshotting.h
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderInline.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderTableRow.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  View transition old snapshots incorrectly get scaled to the border-box size.
https://bugs.webkit.org/show_bug.cgi?id=269954


Reviewed by Tim Nguyen.

Drawing of the old snapshot rescales the image to the border-box size, even if
we captured a larger area.

We shouldn't apply scaling, just align the origin of the border-box in the 
snapshot
to the border-box origin of the pseudo element.

This records the overflow rect for which the snapshot is captured, and uses it
to adjust the overflow rect of the pseudo element and align the painting
position of the snapshot.

As a slight cleanup, merges the two createRendererIfNeeded lambdas into a single
static function.

* LayoutTests/TestExpectations:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotNodeVisualOverflowClippedToViewport):
(WebCore::ViewTransition::captureOldState):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
* Source/WebCore/page/FrameSnapshotting.h:
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::requiresLayer const):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::capturedInViewTransition const):
(WebCore::RenderElement::hasViewTransitionName const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::requiresLayer const):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
(WebCore::RenderLayer::computeCanBeBackdropRoot const):
* Source/WebCore/rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::requiresLayer const):
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setImage):
(WebCore::RenderViewTransitionCapture::paintReplaced):
(WebCore::RenderViewTransitionCapture::layout):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::createRendererIfNeeded):
(WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):

Canonical link: https://commits.webkit.org/275227@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 35cfdf: setupTransitionPseudoElements doesn't update the v...

2024-02-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 35cfdf3fdab6aa072eb6203618c0f7b6189aab66
  
https://github.com/WebKit/WebKit/commit/35cfdf3fdab6aa072eb6203618c0f7b6189aab66
  Author: Matt Woodrow 
  Date:   2024-02-21 (Wed, 21 Feb 2024)

  Changed paths:
M LayoutTests/TestExpectations
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/group-animation-for-root-transition-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/mix-blend-mode-only-on-transition-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/style/StyleResolver.cpp
M Source/WebCore/style/StyleResolver.h

  Log Message:
  ---
  setupTransitionPseudoElements doesn't update the view transition dynamic 
style sheet.
https://bugs.webkit.org/show_bug.cgi?id=265225


Reviewed by Tim Nguyen.

Refactors Resolver::setViewTransitionGroupStyle to take the pseduo element type,
and builds the appropriate selector, so that it can be used for all 
view-transition
pseudo elements.

Adds the generation of the view-transition dynamic style sheet styles to
ViewTransition::setupTransitionPseudoElements.

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/mix-blend-mode-only-on-transition-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::setupDynamicStyleSheet):
(WebCore::ViewTransition::setupTransitionPseudoElements):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/style/StyleResolver.cpp:
(WebCore::Style::viewTransitionSelector):
(WebCore::Style::Resolver::setViewTransitionStyles):
(WebCore::Style::Resolver::setViewTransitionGroupStyles): Deleted.
* Source/WebCore/style/StyleResolver.h:

Canonical link: https://commits.webkit.org/275144@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 7a77ef: Unprefixed backdrop filter should only be enabled ...

2024-02-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7a77efe3ef06baa7d9e64828b1c583cb090ebd01
  
https://github.com/WebKit/WebKit/commit/7a77efe3ef06baa7d9e64828b1c583cb090ebd01
  Author: Matt Woodrow 
  Date:   2024-02-21 (Wed, 21 Feb 2024)

  Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebKit/Shared/WebPreferencesDefaultValues.h
M Tools/DumpRenderTree/TestOptions.cpp
M Tools/WebKitTestRunner/TestOptions.cpp

  Log Message:
  ---
  Unprefixed backdrop filter should only be enabled when 
UNPREFIXED_BACKDROP_FILTER is true.
https://bugs.webkit.org/show_bug.cgi?id=269755


Reviewed by Tim Nguyen.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebKit/Shared/WebPreferencesDefaultValues.h:

Canonical link: https://commits.webkit.org/275088@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 136017: [view-transitions] Implement "capture the image" a...

2024-02-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1360173f7d2bb98f8b6d3eefa30d77620bd07c37
  
https://github.com/WebKit/WebKit/commit/1360173f7d2bb98f8b6d3eefa30d77620bd07c37
  Author: Matt Woodrow 
  Date:   2024-02-21 (Wed, 21 Feb 2024)

  Changed paths:
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Implement "capture the image" algorithm.
https://bugs.webkit.org/show_bug.cgi?id=265170


Reviewed by Tim Nguyen.

Uses 'snapshotNode' to capture the old image during 'captureOldState', and
implements `paintReplaced` on the renderer (in the same way RenderHTMLElement
does) to draw the old catpured image.

Forces composited layers to be created for the ::view-transition-new/old 
pseudos,
as well as the element with the view-transtion, and reparents the GraphicsLayer
from real element into pseduo, so that the new capture is displayed using the
live content. This also effectively stops the original element from being 
displayed
normally, as required by the spec.

* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::requiresLayer const):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::hasViewTransition const):
(WebCore::RenderElement::isViewTransitionPseudo const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
(WebCore::RenderLayer::computeCanBeBackdropRoot const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::requiresCompositingLayer const):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
(WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const):
* Source/WebCore/rendering/RenderLayerCompositor.h:
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setImage):
(WebCore::RenderViewTransition::paintReplaced):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree):
(WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):

Canonical link: https://commits.webkit.org/275087@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 142e54: ::view-transition-group dynamic styles doesn't com...

2024-02-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 142e5436fbfb59ae112dda82b4580a33fa6bec73
  
https://github.com/WebKit/WebKit/commit/142e5436fbfb59ae112dda82b4580a33fa6bec73
  Author: Matt Woodrow 
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/css/ComputedStyleExtractor.h
M Source/WebCore/dom/ViewTransition.cpp

  Log Message:
  ---
  ::view-transition-group dynamic styles doesn't compute the transform.
https://bugs.webkit.org/show_bug.cgi?id=269692


Reviewed by Tim Nguyen.

The dynamically computed style for :root::view-transition-group(transitionName)
should include 'a transform that would map capturedElement’s new element's
border box from the snapshot containing block origin to its current visual
position.'

* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::ComputedStyleExtractor::matrixTransformValue):
(WebCore::transformOperationAsCSSValue):
(WebCore::computedTransform):
(WebCore::matrixTransformValue): Deleted.
* Source/WebCore/css/ComputedStyleExtractor.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::copyElementBaseProperties):

Canonical link: https://commits.webkit.org/275080@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 066b75: [view-transitions] Implement "update pseudo-elemen...

2024-02-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 066b75f5a58bba233bfb505248d89ba1fbbc0e1f
  
https://github.com/WebKit/WebKit/commit/066b75f5a58bba233bfb505248d89ba1fbbc0e1f
  Author: Matt Woodrow 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderObject.h
A Source/WebCore/rendering/RenderViewTransitionCapture.cpp
A Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp
M Source/WebCore/style/ElementRuleCollector.cpp
M Source/WebCore/style/ElementRuleCollector.h
M Source/WebCore/style/StyleResolver.cpp
M Source/WebCore/style/StyleResolver.h
M Source/WebCore/style/StyleScope.cpp
M Source/WebCore/style/StyleScope.h
M Source/WebCore/style/StyleScopeRuleSets.cpp
M Source/WebCore/style/StyleScopeRuleSets.h

  Log Message:
  ---
  [view-transitions] Implement "update pseudo-element styles" algorithm.
https://bugs.webkit.org/show_bug.cgi?id=265224
rdar://118703293>

Reviewed by Tim Nguyen.

Implements the basic outline of capturing the computed style from both
the old and new elements, and using these to generate a style rule
for the selector ':root::view-transition-group(transitionName)'.

Adds a mostly empty RenderViewTransitionOld class that we will use
for the replaced snapshot content, but just acts as a placeholder
for the intrinsic size right now.

With these changes, the size of the transitioned element now gets
applied correctly to the :view-transition-new/old renderers, and
styles targetting them (like background color) correctly get
applied and rendered.

The next step is to implement the 'capture the image' algorithm
for new and old (likely splitting RenderViewTransformNew as a separate
class), so that we also include the replaced content.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::handleTransitionFrame):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
(WebCore::OrderedNamedElementsMap::map const):
(WebCore::OrderedNamedElementsMap::find const):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isRenderViewTransitionOld const):
* Source/WebCore/rendering/RenderViewTransitionOld.cpp: Added.
(WebCore::RenderViewTransitionOld::RenderViewTransitionOld):
(WebCore::RenderViewTransitionOld::setImage):
* Source/WebCore/rendering/RenderViewTransitionOld.h: Added.
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):
* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::ElementRuleCollector):
(WebCore::Style::ElementRuleCollector::matchUARules):
* Source/WebCore/style/ElementRuleCollector.h:
* Source/WebCore/style/StyleResolver.cpp:
(WebCore::Style::Resolver::applyMatchedProperties):
(WebCore::Style::Resolver::setViewTransitionGroupStyles):
* Source/WebCore/style/StyleResolver.h:
* Source/WebCore/style/StyleScope.cpp:
(WebCore::Style::Scope::createDocumentResolver):
* Source/WebCore/style/StyleScope.h:
* Source/WebCore/style/StyleScopeRuleSets.cpp:
(WebCore::Style::ScopeRuleSets::dynamicViewTransitionsStyle const):
* Source/WebCore/style/StyleScopeRuleSets.h:
(WebCore::Style::ScopeRuleSets::setDynamicViewTransitionsStyle):

Canonical link: https://commits.webkit.org/275005@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 251644: ::view-transition-group dynamic styles doesn't com...

2024-02-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2516446fe92ed2a8570e1a36a4ce2734fe77f8c2
  
https://github.com/WebKit/WebKit/commit/2516446fe92ed2a8570e1a36a4ce2734fe77f8c2
  Author: Matt Woodrow 
  Date:   2024-02-19 (Mon, 19 Feb 2024)

  Changed paths:
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/css/ComputedStyleExtractor.h
M Source/WebCore/dom/ViewTransition.cpp

  Log Message:
  ---
  ::view-transition-group dynamic styles doesn't compute the transform.
https://bugs.webkit.org/show_bug.cgi?id=269692


Reviewed by Tim Nguyen.

The dynamically computed style for :root::view-transition-group(transitionName)
should include 'a transform that would map capturedElement’s new element's
border box from the snapshot containing block origin to its current visual
position.'

* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::ComputedStyleExtractor::matrixTransformValue):
(WebCore::transformOperationAsCSSValue):
(WebCore::computedTransform):
(WebCore::matrixTransformValue): Deleted.
* Source/WebCore/css/ComputedStyleExtractor.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::copyElementBaseProperties):

Canonical link: https://commits.webkit.org/274964@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 115f02: [view-transitions] Implement "capture the image" a...

2024-02-18 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 115f0206bb9c8fc07b0f7d07d4e1001963b0557c
  
https://github.com/WebKit/WebKit/commit/115f0206bb9c8fc07b0f7d07d4e1001963b0557c
  Author: Matt Woodrow 
  Date:   2024-02-18 (Sun, 18 Feb 2024)

  Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderBoxModelObject.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp

  Log Message:
  ---
  [view-transitions] Implement "capture the image" algorithm.
https://bugs.webkit.org/show_bug.cgi?id=265170


Reviewed by Tim Nguyen and Simon Fraser.

Uses 'snapshotNode' to capture the old image during 'captureOldState', and
implements `paintReplaced` on the renderer (in the same way RenderHTMLElement
does) to draw the old catpured image.

Forces composited layers to be created for the ::view-transition-new/old 
pseudos,
as well as the element with the view-transtion, and reparents the GraphicsLayer
from real element into pseduo, so that the new capture is displayed using the
live content. This also effectively stops the original element from being 
displayed
normally, as required by the spec.

* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::requiresLayer const):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::hasViewTransition const):
(WebCore::RenderElement::isViewTransitionPseudo const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
(WebCore::RenderLayer::computeCanBeBackdropRoot const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::requiresCompositingLayer const):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
(WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const):
* Source/WebCore/rendering/RenderLayerCompositor.h:
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
(WebCore::RenderViewTransitionCapture::setImage):
(WebCore::RenderViewTransition::paintReplaced):
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree):
(WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):

Canonical link: https://commits.webkit.org/274957@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 95241f: Make CSSUnprefixedBackdropFilterEnabled an embedde...

2024-02-16 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 95241f778f52a004989c772bb68d6ac79006ee5e
  
https://github.com/WebKit/WebKit/commit/95241f778f52a004989c772bb68d6ac79006ee5e
  Author: Matt Woodrow 
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml

  Log Message:
  ---
  Make CSSUnprefixedBackdropFilterEnabled an embedder feature.
https://bugs.webkit.org/show_bug.cgi?id=269537


Reviewed by Cameron McCormack.

We want this setting to be conditionally enabled at compile time, and only 
'embedder' status allows varying default values.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:

Canonical link: https://commits.webkit.org/274863@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 810e27: [view-transitions] Implement "update pseudo-elemen...

2024-02-16 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 810e27d205f59629bff16d325ae44e5c4d2ea5e4
  
https://github.com/WebKit/WebKit/commit/810e27d205f59629bff16d325ae44e5c4d2ea5e4
  Author: Matt Woodrow 
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderObject.h
A Source/WebCore/rendering/RenderViewTransitionCapture.cpp
A Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp
M Source/WebCore/style/ElementRuleCollector.cpp
M Source/WebCore/style/ElementRuleCollector.h
M Source/WebCore/style/StyleResolver.cpp
M Source/WebCore/style/StyleResolver.h
M Source/WebCore/style/StyleScope.cpp
M Source/WebCore/style/StyleScope.h
M Source/WebCore/style/StyleScopeRuleSets.cpp
M Source/WebCore/style/StyleScopeRuleSets.h
M Source/WebCore/style/Styleable.cpp

  Log Message:
  ---
  [view-transitions] Implement "update pseudo-element styles" algorithm.
https://bugs.webkit.org/show_bug.cgi?id=265224
rdar://118703293>

Reviewed by Tim Nguyen.

Implements the basic outline of capturing the computed style from both
the old and new elements, and using these to generate a style rule
for the selector ':root::view-transition-group(transitionName)'.

Adds a mostly empty RenderViewTransitionOld class that we will use
for the replaced snapshot content, but just acts as a placeholder
for the intrinsic size right now.

With these changes, the size of the transitioned element now gets
applied correctly to the :view-transition-new/old renderers, and
styles targetting them (like background color) correctly get
applied and rendered.

The next step is to implement the 'capture the image' algorithm
for new and old (likely splitting RenderViewTransformNew as a separate
class), so that we also include the replaced content.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::handleTransitionFrame):
(WebCore::ViewTransition::copyElementBaseProperties):
(WebCore::ViewTransition::updatePseudoElementStyles):
* Source/WebCore/dom/ViewTransition.h:
(WebCore::OrderedNamedElementsMap::map const):
(WebCore::OrderedNamedElementsMap::find const):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isRenderViewTransitionOld const):
* Source/WebCore/rendering/RenderViewTransitionOld.cpp: Added.
(WebCore::RenderViewTransitionOld::RenderViewTransitionOld):
(WebCore::RenderViewTransitionOld::setImage):
* Source/WebCore/rendering/RenderViewTransitionOld.h: Added.
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
(WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup):
(WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup):
* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::ElementRuleCollector):
(WebCore::Style::ElementRuleCollector::matchUARules):
* Source/WebCore/style/ElementRuleCollector.h:
* Source/WebCore/style/StyleResolver.cpp:
(WebCore::Style::Resolver::applyMatchedProperties):
(WebCore::Style::Resolver::setViewTransitionGroupStyles):
* Source/WebCore/style/StyleResolver.h:
* Source/WebCore/style/StyleScope.cpp:
(WebCore::Style::Scope::createDocumentResolver):
* Source/WebCore/style/StyleScope.h:
* Source/WebCore/style/StyleScopeRuleSets.cpp:
(WebCore::Style::ScopeRuleSets::dynamicViewTransitionsStyle const):
* Source/WebCore/style/StyleScopeRuleSets.h:
(WebCore::Style::ScopeRuleSets::setDynamicViewTransitionsStyle):

Canonical link: https://commits.webkit.org/274817@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e89a58: [threaded-animation-resolution] Schedule animation...

2024-02-03 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e89a58c3716a2cee16351e230a760ed8e8e0358e
  
https://github.com/WebKit/WebKit/commit/e89a58c3716a2cee16351e230a760ed8e8e0358e
  Author: Matt Woodrow 
  Date:   2024-02-03 (Sat, 03 Feb 2024)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm

  Log Message:
  ---
  [threaded-animation-resolution] Schedule animation updates from 
RemoteScrollingCoordinatorProxy on the main thread
https://bugs.webkit.org/show_bug.cgi?id=268282
rdar://121839192

Reviewed by Simon Fraser.

In 273391@main we added support for scheduling animation resolution for macOS 
via RemoteLayerTreeEventDispatcher.
On iOS, where we don't use a scrolling thread, we schedule animations through 
RemoteScrollingCoordinatorProxy
using a dedicated CADisplayLink in a new WKAnimationDisplayLinkHandler. When 
that display link fires, we resolve
animations on the main thread by calling the new 
RemoteAcceleratedEffectStack::applyEffectsFromMainThread().

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm:
(WebKit::RemoteAcceleratedEffectStack::applyEffectsFromMainThread const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues):
* 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(-[WKAnimationDisplayLinkHandler initWithCoordinator:]):
(-[WKAnimationDisplayLinkHandler dealloc]):
(-[WKAnimationDisplayLinkHandler displayLinkFired:]):
(-[WKAnimationDisplayLinkHandler invalidate]):
(-[WKAnimationDisplayLinkHandler schedule]):
(-[WKAnimationDisplayLinkHandler pause]):
(WebKit::RemoteScrollingCoordinatorProxyIOS::~RemoteScrollingCoordinatorProxyIOS):
(WebKit::RemoteScrollingCoordinatorProxyIOS::animationsWereAddedToNode):
(WebKit::RemoteScrollingCoordinatorProxyIOS::animationsWereRemovedFromNode):
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateAnimations):

Canonical link: https://commits.webkit.org/274065@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4beae4: RemoteImageBufferSetProxy::didPrepareForDisplay ca...

2024-02-03 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4beae41dc6154ad2687f21a5fd87d09039e0d2af
  
https://github.com/WebKit/WebKit/commit/4beae41dc6154ad2687f21a5fd87d09039e0d2af
  Author: Matt Woodrow 
  Date:   2024-02-03 (Sat, 03 Feb 2024)

  Changed paths:
M Source/WebKit/Platform/IPC/StreamClientConnection.cpp
M Source/WebKit/Platform/IPC/StreamClientConnection.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
M 
Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h

  Log Message:
  ---
  RemoteImageBufferSetProxy::didPrepareForDisplay can be blocked by other main 
thread task.
https://bugs.webkit.org/show_bug.cgi?id=268506


Reviewed by Kimmo Kinnunen.

This message is received on the main thread, and blocks submission of the 
previous layer tree transaction.

It can be delayed by other work on the main thread, for arbitrary periods of 
time.

This changes makes it be delivered it to a WorkQueue instead to prevent this 
blocking.

* Source/WebKit/Platform/IPC/StreamClientConnection.cpp:
(IPC::StreamClientConnection::addWorkQueueMessageReceiver):
(IPC::StreamClientConnection::removeWorkQueueMessageReceiver):
* Source/WebKit/Platform/IPC/StreamClientConnection.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::~RemoteLayerWithRemoteRenderingBackingStore):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp:
(WebKit::RemoteImageBufferSetProxyFlushFence::create):
(WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence):
(WebKit::RemoteImageBufferSetProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent):
(WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal):
(WebKit::RemoteImageBufferSetProxy::didPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxy::shutdown):
(WebKit::RemoteImageBufferSetProxy::doShutdown):
(WebKit::RemoteImageBufferSetProxy::createFlushFence):
(WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync):
(WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxy::remoteBufferSetWasDestroyed):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h:
(WebKit::RemoteImageBufferSetProxy::WTF_GUARDED_BY_LOCK):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::didClose):
(WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackendProxy::dispatchMessage):
(WebKit::RemoteRenderingBackendProxy::didPrepareForDisplay): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
(WebKit::RemoteRenderingBackendProxy::workQueue):

Canonical link: https://commits.webkit.org/274047@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 77e5bb: Corrupt tiles when scrolling and selecting text qu...

2024-01-31 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 77e5bb39107371558f6ee94cf74b988d3231ab41
  
https://github.com/WebKit/WebKit/commit/77e5bb39107371558f6ee94cf74b988d3231ab41
  Author: Matt Woodrow 
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
A 
LayoutTests/compositing/repaint/needs-no-display-volatile-repaint-expected.html
A LayoutTests/compositing/repaint/needs-no-display-volatile-repaint.html
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp

  Log Message:
  ---
  Corrupt tiles when scrolling and selecting text quickly.
https://bugs.webkit.org/show_bug.cgi?id=268430


Reviewed by Simon Fraser.

If ensureBufferForDisplay returns 
SwapBuffersDisplayRequirement::NeedsNoDisplay, then we don't want
to call prepareForDisplay. The latter copies pixels from the old front buffer 
into the new one,
and when no display is required there wasn't a front/back swap, so no copy 
needed.

This caused issues because we also set 'm_previouslyPaintedRect` to the 
(empty!) dirty area,
effectively recording that the front and back buffers were identical, despite 
it likely
not being true. The next attempt to paint these buffers would omit a 
back-to-front copy,
thinking the buffers were identical, and then we'd do a partial update on top 
of stale content.

This happens when scrolling, since scrolling tiles get pooled (and made 
volatile), then
recycled.

* 
LayoutTests/compositing/repaint/needs-no-display-volatile-repaint-expected.html:
 Added.
* LayoutTests/compositing/repaint/needs-no-display-volatile-repaint.html: Added.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync):

Canonical link: https://commits.webkit.org/273838@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 247a81: Add a layout test for volatile front buffer (forci...

2024-01-30 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 247a813a16d6f0364d32806a035e0a4e5d52ac32
  
https://github.com/WebKit/WebKit/commit/247a813a16d6f0364d32806a035e0a4e5d52ac32
  Author: Matt Woodrow 
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
A LayoutTests/compositing/repaint/needs-no-display-volatile-expected.html
A LayoutTests/compositing/repaint/needs-no-display-volatile.html
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  ---
  Add a layout test for volatile front buffer (forcing a sync GPUP swap).
https://bugs.webkit.org/show_bug.cgi?id=267749


Reviewed by Simon Fraser.

Adds a new 'markFrontBufferVolatileForTesting' function to Internals, which sets
the volatile state on the current front buffer of the Element's layer.

Adds a test that uses this, and would catch the failure from bug 267300.

* LayoutTests/compositing/repaint/needs-no-display-volatile-expected.html: 
Added.
* LayoutTests/compositing/repaint/needs-no-display-volatile.html: Added.
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::markFrontBufferVolatileForTesting):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::markFrontBufferVolatileForTesting):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayer.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::markFrontBufferVolatileForTesting):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::markFrontBufferVolatile):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::markFrontBufferVolatileForTesting):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay):
(WebKit::RemoteLayerBackingStoreCollection::markFrontBufferVolatileForTesting):
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::prepareToDisplay):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::markFrontBufferVolatileForTesting):

Canonical link: https://commits.webkit.org/273814@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e20379: Corrupt/missing tile content on tab switch.

2024-01-24 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e203798dcce88cf721d6c2061ca00a63b9811c3d
  
https://github.com/WebKit/WebKit/commit/e203798dcce88cf721d6c2061ca00a63b9811c3d
  Author: Matt Woodrow 
  Date:   2024-01-24 (Wed, 24 Jan 2024)

  Changed paths:
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h

  Log Message:
  ---
  Corrupt/missing tile content on tab switch.
https://bugs.webkit.org/show_bug.cgi?id=268025


Reviewed by Simon Fraser.

Creating a flusher for a RemoteLayerBackingStore now waits for backend handles 
to
be delivered as well as flushing any drawing. We need to call this even when 
the dirty
region is empty, so that we get handles delivered.

Adds an enum to describe what we want to wait for, so that can avoid flushing 
the drawing
(or creating a flusher entirely) if no drawing commands have been issued.

https://bugs.webkit.org/show_bug.cgi?id=267749 (PR #22958) adds a test that 
will catch this.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::paintContents):
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm:
(WebKit::RemoteLayerWithInProcessRenderingBackingStore::createFlusher):
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::createFlusher):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp:
(WebKit::RemoteImageBufferSetProxyFlushFence::create):
(WebKit::RemoteImageBufferSetProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent):
(WebKit::RemoteImageBufferSetProxyFlushFence::RemoteImageBufferSetProxyFlushFence):
(WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync):
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h:

Canonical link: https://commits.webkit.org/273475@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e183df: [threaded-animation-resolution] Schedule animation...

2024-01-23 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e183df84221ef46786e71200591e6ef284ebc4d0
  
https://github.com/WebKit/WebKit/commit/e183df84221ef46786e71200591e6ef284ebc4d0
  Author: Matt Woodrow 
  Date:   2024-01-23 (Tue, 23 Jan 2024)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm

  Log Message:
  ---
  [threaded-animation-resolution] Schedule animation updates from 
RemoteLayerTreeEventDispatcher on the scrolling thread.
https://bugs.webkit.org/show_bug.cgi?id=266026


Reviewed by Simon Fraser.

RemoteLayerTreeEventDispatcher can update the current set of animations at the
same time it applies any asynchronous scrolls.

This should align them with rendering updates (when scroll synchronisation
succeeds), and make it simpler to integrate scroll-linked animations

iOS doesn't use RemoteLayerTreeEventDispatcher/scrolling thread, so will
need a separate solution to schedule animation updates.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm:
(WebKit::RemoteAcceleratedEffectStack::initEffectsFromMainThread):
(WebKit::RemoteAcceleratedEffectStack::applyEffectsFromScrollingThread const):
(WebKit::RemoteAcceleratedEffectStack::clear):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
(WebKit::RemoteLayerTreeDrawingAreaProxy::animationCurrentTime const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::animationCurrentTime const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::effectStack const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::~RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues):
* 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp:
(WebKit::RemoteLayerTreeEventDispatcher::startOrStopDisplayLinkOnMainThread):
(WebKit::RemoteLayerTreeEventDispatcher::didRefreshDisplay):
(WebKit::RemoteLayerTreeEventDispatcher::delayedRenderingUpdateDetectionTimerFired):
(WebKit::RemoteLayerTreeEventDispatcher::waitForRenderingUpdateCompletionOrTimeout):
(WebKit::RemoteLayerTreeEventDispatcher::scrollingTreeWasRecentlyActive):
(WebKit::RemoteLayerTreeEventDispatcher::lockForAnimationChanges):
(WebKit::RemoteLayerTreeEventDispatcher::unlockForAnimationChanges):
(WebKit::RemoteLayerTreeEventDispatcher::animationsWereAddedToNode):
(WebKit::RemoteLayerTreeEventDispatcher::animationsWereRemovedFromNode):
(WebKit::RemoteLayerTreeEventDispatcher::updateAnimations):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h:
(WebKit::RemoteLayerTreeEventDispatcher::animationsLock):
* 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm:
(WebKit::RemoteScrollingCoordinatorProxyMac::willCommitLayerAndScrollingTrees):
(WebKit::RemoteScrollingCoordinatorProxyMac::didCommitLayerAndScrollingTrees):

Canonical link: https://commits.webkit.org/273391@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] e0a425: Speedometer 3: WebContent spends a lot of time in ...

2024-01-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e0a42565e3a2879ec1e7c1bc87937dc2d8b779eb
  
https://github.com/WebKit/WebKit/commit/e0a42565e3a2879ec1e7c1bc87937dc2d8b779eb
  Author: Matt Woodrow 
  Date:   2024-01-22 (Mon, 22 Jan 2024)

  Changed paths:
M 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.h
M Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
A 
Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

  Log Message:
  ---
  Speedometer 3: WebContent spends a lot of time in 
RemoteImageBufferProxy::ensureBackendCreated.
https://bugs.webkit.org/show_bug.cgi?id=266728


Reviewed by Kimmo Kinnunen.

Synchronously waiting on the ImageBufferBackendHandle for an ImageBufferSet can 
block the main thread while
trying to serialize a transaction.

This splits the response to prepareImageBufferSetsForDisplay into two parts, 
one that is only present when needed
as a sync reponse, and another as a separate message returned asynchronously.

The new response message 'DidPrepareForDisplay' stores the resulting buffer 
backend handles on the
RemoteImageBufferSetProxy and notifies a Condition, so that they can be waited 
on from a different thread.

RemoteLayerTree transaction serialization on the main thread now just 
serializes an identifier for the image
buffer set and doesn't block.

The transaction flusher thread waits for any incoming backend handles (as well 
as the existing wait on drawing
flushing), and builds a hashamp of image buffer set identifier to response data 
and appends this on to the
remote layer tree transaction.

RemoteLayerTreeDrawingAreaProxy uses the trailing hashmap to copy across any 
needed backend handles from the
response hashmap into the appropriate RemoteLayerBackingStoreProperties.

* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
(WebKit::RemoteRenderingBackend::identifier):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_must_be_moved):
(class_template_headers):
(headers_for_type):
* Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.h:
* 

[webkit-changes] [WebKit/WebKit] 243963: REGRESSION (271261@main): [ Monterey Ventura Debug...

2024-01-21 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2439631889affe94ff5c0abaa592025f2dcf6c68
  
https://github.com/WebKit/WebKit/commit/2439631889affe94ff5c0abaa592025f2dcf6c68
  Author: Matt Woodrow 
  Date:   2024-01-21 (Sun, 21 Jan 2024)

  Changed paths:
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp

  Log Message:
  ---
  REGRESSION (271261@main): [ Monterey Ventura Debug ] ASSERTION FAILED: 
isValid() in std::unique_ptr 
WebCore::ScrollingStateTree::commit(LayerRepresentation::Type)
https://bugs.webkit.org/show_bug.cgi?id=267655


Reviewed by Simon Fraser.

ThreadedScrollingCoordinator updates the scrolling tree state at the start of
the rendering update (before rAF callbacks), so that async scrolls can be
performed if the rendering update takes too long.

We need to make sure the compositing layer tree is up to date in order for
this to be valid.

* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp:
(WebCore::ThreadedScrollingCoordinator::willStartRenderingUpdate):

Canonical link: https://commits.webkit.org/273275@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] f57f00: Add a way to test RemoteLayerBackingStore's copy-f...

2024-01-18 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f57f00ab6a22c7b846e9dda0fa296da77aa48e23
  
https://github.com/WebKit/WebKit/commit/f57f00ab6a22c7b846e9dda0fa296da77aa48e23
  Author: Matt Woodrow 
  Date:   2024-01-18 (Thu, 18 Jan 2024)

  Changed paths:
A LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html
A 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html
A 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html
A 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region.html
M LayoutTests/platform/gtk/TestExpectations
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ImageBuffer.cpp
M Source/WebCore/platform/graphics/ImageBuffer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
M Tools/WebKitTestRunner/TestInvocation.cpp
M Tools/WebKitTestRunner/TestInvocation.h

  Log Message:
  ---
  Add a way to test RemoteLayerBackingStore's copy-forward code.
https://bugs.webkit.org/show_bug.cgi?id=266674


Reviewed by Kimmo Kinnunen.

We can't currently test this, because WKTR always forces a full repaint.

This adds a 'dontForceRepaint()' option to the test runner, to request that no 
repaint is done
at the end of the test, and for it to just capture whatever pixel contents are 
currently available.

It also adds a purgeFrontBuffer/purgeBackBuffer method to the Internals 
interface, which try to
purge (faked via clearing the buffer contents) the relevant layer buffer for 
the element.

It adds three new tests, which would have caught each of the recent bugs 
(271908@main, 272069@main,
272304@main) in this area.

* LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html: 
Added.
* 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html:
 Added.
* 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html:
 Added.
* 
LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html: 
Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region.html: Added.
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::purgeFrontBufferForTesting):
(WebCore::GraphicsLayer::purgeBackBufferForTesting):
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::forcePurgeForTesting):
* Source/WebCore/platform/graphics/ImageBuffer.h:
* Source/WebCore/platform/graphics/ImageBufferBackend.h:
(WebCore::ImageBufferBackend::forcePurgeForTesting):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::purgeFrontBufferForTesting):

[webkit-changes] [WebKit/WebKit] 15c2dd: REGRESSION (273059@main-273058@main?): [ Sonoma IO...

2024-01-17 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 15c2dd6a0dd36311302c3f56390dc7ea79485bfa
  
https://github.com/WebKit/WebKit/commit/15c2dd6a0dd36311302c3f56390dc7ea79485bfa
  Author: Matt Woodrow 
  Date:   2024-01-17 (Wed, 17 Jan 2024)

  Changed paths:
M LayoutTests/platform/ios-wk2/TestExpectations
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  ---
  REGRESSION (273059@main-273058@main?): [ Sonoma IOS 17 Debug ] ASSERTION 
FAILED in virtual WebCore::GraphicsContext::~GraphicsContext() for 
imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noopener.html
https://bugs.webkit.org/show_bug.cgi?id=267595


Reviewed by Kimmo Kinnunen.

Ensure that we restore any saved state when releasing a RemoteImageBufferSet.

This can happen during test when we destroy a RemoteRenderingBackend in the 
middle of drawing,
and is the same as we already do for RemoteImageBuffer.

* LayoutTests/platform/ios-wk2/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::~RemoteImageBufferSet):

Canonical link: https://commits.webkit.org/273141@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3eabc1: RemoteImageBufferSet is leaked if the RemoteRender...

2024-01-15 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3eabc15ebb801d9eb0ba7386f82a26ed9337b201
  
https://github.com/WebKit/WebKit/commit/3eabc15ebb801d9eb0ba7386f82a26ed9337b201
  Author: Matt Woodrow 
  Date:   2024-01-15 (Mon, 15 Jan 2024)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp

  Log Message:
  ---
  RemoteImageBufferSet is leaked if the RemoteRenderingBackend is destroyed 
without removing them manually.
https://bugs.webkit.org/show_bug.cgi?id=267563
rdar://120057571>

Reviewed by Mike Wyrzykowski.

There's a reference cycle between m_remoteImageBufferSets on the
RemoteRenderingBackend, and m_backend on RemoteImageBufferSet.

Normally we remove them from the hash map manually, but if we shut
down the rendering backend entirely, any remaining sets (and the
rendering backend) are leaked.

* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::workQueueUninitialize):

Canonical link: https://commits.webkit.org/273054@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 39ec74: [Books] Returning from Lock Screen shows a flash o...

2024-01-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 39ec746c46ceb11d77d4f0f65be943905484289c
  
https://github.com/WebKit/WebKit/commit/39ec746c46ceb11d77d4f0f65be943905484289c
  Author: Matt Woodrow 
  Date:   2024-01-11 (Thu, 11 Jan 2024)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm

  Log Message:
  ---
  [Books] Returning from Lock Screen shows a flash of missing content
https://bugs.webkit.org/show_bug.cgi?id=267300


Reviewed by Simon Fraser.

If we've included an ImageBufferSet with an empty dirty region in the prepare 
for display
set, then we always need to return a valid buffer handle.

This happens when we think the front buffer is volatile (as happens when the 
screen is locked),
and we want to confirm that the contents are still there. If they are, no 
drawing is needed,
but we still need to update the buffer handle.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay):
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStore::prepareToDisplay):

Canonical link: https://commits.webkit.org/272932@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5ce41d: Wikipedia video control icon backgrounds flicker.

2023-12-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5ce41d80d50760401a9399bc7cb3d3be7b97b58e
  
https://github.com/WebKit/WebKit/commit/5ce41d80d50760401a9399bc7cb3d3be7b97b58e
  Author: Matt Woodrow 
  Date:   2023-12-20 (Wed, 20 Dec 2023)

  Changed paths:
A LayoutTests/compositing/repaint/copy-forward-clear-rect-expected.html
A LayoutTests/compositing/repaint/copy-forward-clear-rect.html
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  ---
  Wikipedia video control icon backgrounds flicker.
https://bugs.webkit.org/show_bug.cgi?id=266726


Reviewed by Simon Fraser.

The previous code always required a full repaint of the layer whenever a buffer 
was allocated,
so the copy-forward code didn't run on the second paint of a layer. This meant 
the copy-forward
code, and the 'buffer is already clear' optimization were mutually exclusive.

The new code uses copy-forward and partial repaints whenever possible, even if 
the front buffer
was newly allocated (or existing, but purged).

The copy-forward code tries to only copy pixels that won't be re-drawn this 
frame, but is rounded
out to a single rectangle, not a complex region.

If the copy-forwards ends up copying pixels that we'll also drawn this frame, 
we can no longer
consider the buffer to be 'clear' and have to manually clear the paint region.

* LayoutTests/compositing/repaint/copy-forward-clear-rect-expected.html: Added.
* LayoutTests/compositing/repaint/copy-forward-clear-rect.html: Added.
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::prepareBufferForDisplay):

Canonical link: https://commits.webkit.org/272394@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bdc9ba: jsc_fuz/wktr: null ptr deref in WebCore::GraphicsL...

2023-12-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bdc9ba2c424d1d7e95f86e454b3d08b0dd136ee7
  
https://github.com/WebKit/WebKit/commit/bdc9ba2c424d1d7e95f86e454b3d08b0dd136ee7
  Author: Matt Woodrow 
  Date:   2023-12-20 (Wed, 20 Dec 2023)

  Changed paths:
A LayoutTests/fast/canvas/offscreen-giant-expected.html
A LayoutTests/fast/canvas/offscreen-giant.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac-monterey/TestExpectations
M Source/WTF/wtf/unix/UnixFileDescriptor.h
M 
Source/WebCore/platform/graphics/ca/cocoa/GraphicsLayerAsyncContentsDisplayDelegateCocoa.mm
M Source/WebCore/platform/graphics/cocoa/DynamicContentScalingDisplayList.h
M Source/WebKit/Platform/SharedMemory.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M Source/WebKit/Shared/ShareableBitmap.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  ---
  jsc_fuz/wktr: null ptr deref in 
WebCore::GraphicsLayerAsyncContentsDisplayDelegateCocoa::tryCopyToLayer(WebCore::ImageBuffer&)
https://bugs.webkit.org/show_bug.cgi?id=262640


Reviewed by Kimmo Kinnunen.

This adds support for setDelegatedContents on a PlatformCALayerRemote having a 
generic ImageBufferBackendHandle (which includes
shared memory), instead of only MachSendRight.

Adds an explicit copy constructor to SharedMemoryHandle, UnixFileDescriptor and 
CGDisplayList to match MachSendRight and make
this possible.

Also switches Protection::ReadWrite to Protection::ReadOnly for the 
RemoteLayerBackingStore callers, since we were already using
this for tryCopyToLayer, and we need the ::map() call in the UI process to not 
try ask for extra permissions.

* Source/WTF/wtf/unix/UnixFileDescriptor.h:
(WTF::UnixFileDescriptor::UnixFileDescriptor):
* Source/WebKit/Platform/SharedMemory.h:
* Source/WebKit/Shared/RemoteLayerTree/CGDisplayList.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::setDelegatedContents):
(WebKit::RemoteLayerBackingStoreProperties::layerContentsBufferFromBackendHandle):
* Source/WebKit/Shared/ShareableBitmap.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::setDelegatedContents):
(WebKit::PlatformCALayerRemote::setRemoteDelegatedContents):

Originally-landed-as: 267815.262@safari-7617-branch (8ac19464ff91). 
rdar://119570861
Canonical link: https://commits.webkit.org/272365@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3614ef: Web content renders blank on tab switch.

2023-12-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3614ef890007d387d7a8dc9c809eb80d645c275b
  
https://github.com/WebKit/WebKit/commit/3614ef890007d387d7a8dc9c809eb80d645c275b
  Author: Matt Woodrow 
  Date:   2023-12-19 (Tue, 19 Dec 2023)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  ---
  Web content renders blank on tab switch.
https://bugs.webkit.org/show_bug.cgi?id=266655


Reviewed by Simon Fraser.

m_previouslyPaintedRect is used to minimize the copy-forward rect when we know 
the new
front buffer is also previous-previous-front-buffer (N-2). In that case we only 
need to
copy the pixels drawn last time (into N-1), minus the pixel we're going to draw 
this time.

If the buffer is N-2, but it's been purged, then that also needs to skip the 
optimization,
so we clear m_previouslyPaintedRect.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):

Canonical link: https://commits.webkit.org/272304@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 9941ce: REGRESSION: Black banners on webpage, sometimes co...

2023-12-14 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9941ce56b7a17396d18b9328222046d86d300551
  
https://github.com/WebKit/WebKit/commit/9941ce56b7a17396d18b9328222046d86d300551
  Author: Matt Woodrow 
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h

  Log Message:
  ---
  REGRESSION: Black banners on webpage, sometimes content doesn't fully render 
when tab switching.
https://bugs.webkit.org/show_bug.cgi?id=266429


Reviewed by Tim Horton.

If we're forcing a full display due to the existing front buffer being volatile 
and purged, then
we also need to reset the dirty region to the full bounds of the layer.

This stops us attempting a copy-forward from the old (purged) front buffer, and 
also makes sure
we clip to the full bounds, not what the web process thought the dirty region 
would be.

When the front buffer is potentially volatile, the web process always 
synchronously waits
for the response of this code, so the dirty region on that side should be 
updated correctly
already.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:

Canonical link: https://commits.webkit.org/272069@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 5061d1: Nullptr crash in RemoteLayerBackingStoreCollection...

2023-12-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5061d1d61741d68e0e0b9f60dbd2afcf1ac64558
  
https://github.com/WebKit/WebKit/commit/5061d1d61741d68e0e0b9f60dbd2afcf1ac64558
  Author: Matt Woodrow 
  Date:   2023-12-11 (Mon, 11 Dec 2023)

  Changed paths:
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm

  Log Message:
  ---
  Nullptr crash in 
RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay.
https://bugs.webkit.org/show_bug.cgi?id=266263


Reviewed by Jean-Yves Avenard.

'backingStore' is a WeakPtr& and might be null, so we need to check it.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay):

Canonical link: https://commits.webkit.org/271911@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8c21d1: Invalid layer contents when navigating and hoverin...

2023-12-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8c21d17d0a028e2002f8361b0b93c02785473dcb
  
https://github.com/WebKit/WebKit/commit/8c21d17d0a028e2002f8361b0b93c02785473dcb
  Author: Matt Woodrow 
  Date:   2023-12-11 (Mon, 11 Dec 2023)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  ---
  Invalid layer contents when navigating and hovering on slack and Facebook.
https://bugs.webkit.org/show_bug.cgi?id=266255


Reviewed by Mike Wyrzykowski.

Sometimes when hovering text entries on slack, the previous highlight isn't 
fully removed.
Likewise, navigating between the profile page and home page on Facebook can 
leave remnants
of the rendering of the previous page.

The code is resetting the graphics context clip to remove any partial-update 
clips applied
from a previous draw into that context. Unfortunately this was happening after 
the copy
forward draw, not before. This moves it up, so that we're not clipped to the 
old draw region.

It would be nice to add a test here.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::prepareBufferForDisplay):

Canonical link: https://commits.webkit.org/271908@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] cc12d0: Second div within a rotated and overflow:hidden pa...

2023-12-11 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389
  
https://github.com/WebKit/WebKit/commit/cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389
  Author: Matt Woodrow 
  Date:   2023-12-11 (Mon, 11 Dec 2023)

  Changed paths:
A 
LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html
A LayoutTests/compositing/layer-creation/overlap-transformed-clip.html
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  ---
  Second div within a rotated and overflow:hidden parent div does not render.
https://bugs.webkit.org/show_bug.cgi?id=265480


Reviewed by Simon Fraser.

RenderLayerCompositor::addToOverlapMap takes layer overlap bounds in the root 
coordinate space, computes
the clip in the root coordinate space and intersect them.

RenderLayer::calculateClipRects was only ever applying an offset when 
converting clips to an ancestor coordinate
space, which is incorrect if there is a non-tranlation transform (like the 
rotation in the testcase).

The incorrect clip resulted in an empty overlap area, and us drawing the green 
div into the backing store behind
the composited (3d transformed) div.

This makes calculateClipRects transform the clip quad, not just the top-left 
point.

* 
LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html: 
Added.
* LayoutTests/compositing/layer-creation/overlap-transformed-clip.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::intersectsWithAncestor):

Canonical link: https://commits.webkit.org/271894@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] cd9671: 60 second hang loading WebGPU samples page.

2023-12-10 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cd96716c74c6706c65e9792fa94d26ab170ab673
  
https://github.com/WebKit/WebKit/commit/cd96716c74c6706c65e9792fa94d26ab170ab673
  Author: Matt Woodrow 
  Date:   2023-12-10 (Sun, 10 Dec 2023)

  Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  ---
  60 second hang loading WebGPU samples page.
https://bugs.webkit.org/show_bug.cgi?id=266113


Reviewed by Mike Wyrzykowski.

Front buffer allocation can fail, if the surface dimensions are too big. This 
test
was trying to allocate a surface 19k high.

We should still notify the signal in this case, since there's no point leaving 
the
web process waiting arbitrarily. We still don't render any content for that 
layer,
but that's the existing behaviour.

* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::flush):

Canonical link: https://commits.webkit.org/271854@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 3dd074: Sync wait in RemoteLayerWithRemoteRenderingBacking...

2023-12-08 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3dd074a9e5d206e613ec48c3d3f57388f00c62c6
  
https://github.com/WebKit/WebKit/commit/3dd074a9e5d206e613ec48c3d3f57388f00c62c6
  Author: Matt Woodrow 
  Date:   2023-12-08 (Fri, 08 Dec 2023)

  Changed paths:
M Source/WTF/wtf/text/TextStream.h
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h
M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.messages.in
A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/Platform/IPC/StreamClientConnection.h
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
A Source/WebKit/Shared/RemoteImageBufferSetIdentifier.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/SwapBuffersDisplayRequirement.h
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/Sources.txt
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/BufferIdentifierSet.h
M Source/WebKit/WebProcess/GPU/graphics/BufferIdentifierSet.serialization.in
M Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.cpp
M Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.h
M 
Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.serialization.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
A Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M 
Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in
M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h

  Log Message:
  ---
  Sync wait in 
RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoresForDisplay
 delays rendering.
https://bugs.webkit.org/show_bug.cgi?id=265295


Reviewed by Kimmo Kinnunen.

In order to start issuing rendering commands for a layer, we need to determine 
which ImageBuffer is not
in-use and can be drawn to. We also need to know if the existing pixel contents 
have been discarded due
to being marked volatile. Both of these checks can only be done in the GPU 
process, so the previous
behaviour was to have a synchronous call to prepareBackingStoresForDisplay at 
the start of rendering.

This changes makes that process asynchronous (in the common case), by moving 
management of the buffer
triplet (front, back, secondary back) to the GPU process, and making the choice 
of which buffer is used
opaque from the perspective of the web process.

For each frame, the WebProcess allocates a new image buffer identifier (via 
RemoteDisplayListRecorderProxy),
and the GPU process asynchronously ensures that this is mapped to the right 
ImageBuffer (either by picking
an available one, or allocating if needed, similar to how recycling IOSurfaces 
from the pool happens). It
also queues copying of the pixels from the previous frame, clipping to the new 
draw region, and clearing the
draw region.

The only case where this isn't possible 

[webkit-changes] [WebKit/WebKit] 052b3e: REGRESSION(271529@main): Volatility timer stops be...

2023-12-07 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 052b3e14ae006698e648810fe1182afb2f76bef3
  
https://github.com/WebKit/WebKit/commit/052b3e14ae006698e648810fe1182afb2f76bef3
  Author: Matt Woodrow 
  Date:   2023-12-07 (Thu, 07 Dec 2023)

  Changed paths:
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm

  Log Message:
  ---
  REGRESSION(271529@main): Volatility timer stops before all surfaces are made 
volatile and never completes.
https://bugs.webkit.org/show_bug.cgi?id=266034


Reviewed by Dan Glastonbury.

If `identifiers` is empty it means we didn't collect any right now, not that
there weren't any to be collected.

We should only stop the timer if `collectedAllRemoteRenderingBuffers` is true
(as well as `successfullyMadeBackingStoreVolatile`).

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatileFromTimer):

Canonical link: https://commits.webkit.org/271704@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 12198a: RemoteLayerBackingStoreCollection doesn't support ...

2023-12-04 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12198a179de6bbb9c9e7da80441dfe77a3d71c27
  
https://github.com/WebKit/WebKit/commit/12198a179de6bbb9c9e7da80441dfe77a3d71c27
  Author: Matt Woodrow 
  Date:   2023-12-04 (Mon, 04 Dec 2023)

  Changed paths:
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
A 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
A 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
A 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h
A 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm
R 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h
R 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm

  Log Message:
  ---
  RemoteLayerBackingStoreCollection doesn't support mixing remote rendering 
with in process rendering.
https://bugs.webkit.org/show_bug.cgi?id=265617


Reviewed by Tim Horton.

We currently have a polymorphic RemoteLayerBackingStoreCollection object, which
 requires an upfront decision about whether in-process or remote rendering will
be used.

We should instead have a single RemoteLayerBackingStoreCollection which supports
mixing in-process and remote RemoteLayerBackingStore objects as needed.

This merges RemoteLayerBackingStoreCollection with the 'WithRemoteRendering' 
variant,
and the resulting code checks the type of each backing stores and handles them
separately (for functions that require it).

RemoteLayerBackingStore is split to have two subclasses ('Remote' and 
'InProcess'),
and code that only applies to that situation is moved out of the base class.

We still currently only create a single type of backing store based on the 
global
flag, but mixing types should now be supported.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::isRemoteLayerWithRemoteRenderingBackingStore 
const):
(WebKit::RemoteLayerBackingStore::isRemoteLayerWithInProcessRenderingBackingStore
 const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::ensureFrontBuffer):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): Deleted.
(WebKit::RemoteLayerBackingStore::applySwappedBuffers): Deleted.
(WebKit::RemoteLayerBackingStore::prepareToDisplay): Deleted.
(WebKit::RemoteLayerBackingStore::prepareBuffers): Deleted.
(WebKit::RemoteLayerBackingStore::setBufferVolatile): Deleted.
(WebKit::RemoteLayerBackingStore::setBufferNonVolatile): Deleted.
(WebKit::RemoteLayerBackingStore::setFrontBufferNonVolatile): Deleted.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
(WebKit::RemoteLayerBackingStoreCollection::layerTreeContext const):
(WebKit::RemoteLayerBackingStoreCollection::markInProcessBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed): 
Deleted.
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile): Deleted.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::RemoteLayerBackingStoreCollection):
(WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay):
(WebKit::RemoteLayerBackingStoreCollection::createRemoteLayerBackingStore):
(WebKit::RemoteLayerBackingStoreCollection::markInProcessBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatileAfterReachabilityChange):
(WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::tryMarkAllBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatileFromTimer):
(WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed):
(WebKit::RemoteLayerBackingStoreCollection::collectRemoteRenderingBackingStoreBufferIdentifiersToMarkVolatile):
(WebKit::RemoteLayerBackingStoreCollection::collectAllRemoteRenderingBufferIdentifiersToMarkVolatile):
(WebKit::RemoteLayerBackingStoreCollection::sendMarkBuffersVolatile):
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile): Deleted.
(WebKit::RemoteLayerBackingStoreCollection::allocateBufferForBackingStore): 
Deleted.
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
 

[webkit-changes] [WebKit/WebKit] b6b745: Avoid calling updateCompositingLayers() more than ...

2023-11-28 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b6b74556b8e6ecc165a8e1edb5fc73cc8e5853c2
  
https://github.com/WebKit/WebKit/commit/b6b74556b8e6ecc165a8e1edb5fc73cc8e5853c2
  Author: Matt Woodrow 
  Date:   2023-11-28 (Tue, 28 Nov 2023)

  Changed paths:
M LayoutTests/compositing/overflow/scrolling-without-painting.html
M LayoutTests/compositing/overflow/updating-scrolling-content.html
M LayoutTests/compositing/scrolling/touch-scroll-to-clip.html
M LayoutTests/compositing/updates/no-style-change-updates.html
M LayoutTests/editing/editable-region/iframe-expected.txt
M LayoutTests/fast/css/transform-function-perspective-crash.html
M LayoutTests/fast/scrolling/iframe-scrollable-after-back.html
M 
LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hit-test.html
M 
LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html
M LayoutTests/inspector/layers/layerTreeDidChange.html
M 
LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt
M LayoutTests/platform/mac-wk1/TestExpectations
M LayoutTests/platform/wpe/TestExpectations
M LayoutTests/platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt
M 
LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html
M 
LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html
M 
LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html
M 
LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed.html
M LayoutTests/tiled-drawing/scrolling/clamp-out-of-bounds-scrolls.html
M LayoutTests/tiled-drawing/scrolling/scrolling-tree-after-scroll.html
M LayoutTests/tiled-drawing/scrolling/slow-scrolling.html
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/page/LocalDOMWindow.cpp
M Source/WebCore/page/LocalFrameView.cpp
M Source/WebCore/page/LocalFrameView.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderTreeAsText.cpp

  Log Message:
  ---
  Avoid calling updateCompositingLayers() more than once before each render.
https://bugs.webkit.org/show_bug.cgi?id=84393


Reviewed by Simon Fraser.

Calling updateCompositingLayers after each layout causes unnecessary work, since
the layers might change again before rendering.

This change defers this work until Page::updateRendering if possible, and 
improves
performance on pages that force layout flushes outside of rendering.

* LayoutTests/compositing/overflow/scrolling-without-painting.html:
* LayoutTests/compositing/overflow/updating-scrolling-content.html:
* LayoutTests/compositing/scrolling/touch-scroll-to-clip.html:
* LayoutTests/compositing/updates/no-style-change-updates.html:
* LayoutTests/editing/editable-region/iframe-expected.txt:
* LayoutTests/fast/css/transform-function-perspective-crash.html:
* LayoutTests/fast/scrolling/iframe-scrollable-after-back.html:
* 
LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hit-test.html:
* 
LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html:
* LayoutTests/inspector/layers/layerTreeDidChange.html:
* 
LayoutTests/platform/gtk/compositing/scrolling/touch-scroll-to-clip-expected.txt:
 Copied from 
LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt.
* 
LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt:
* LayoutTests/platform/mac-wk1/TestExpectations:
* LayoutTests/platform/wpe/TestExpectations:
* LayoutTests/platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt:
* 
LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html:
* 
LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html:
* 
LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html:
* 
LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed.html:
* LayoutTests/tiled-drawing/scrolling/clamp-out-of-bounds-scrolls.html:
* LayoutTests/tiled-drawing/scrolling/scrolling-tree-after-scroll.html:
* LayoutTests/tiled-drawing/scrolling/slow-scrolling.html:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::updateLayout):
(WebCore::Document::implicitClose):
* Source/WebCore/dom/Document.h:
(WebCore::Document::updateLayout):
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
* Source/WebCore/dom/Element.cpp:

[webkit-changes] [WebKit/WebKit] 7445f2: RemoteLayerTreeDrawingAreaProxy::hideContentUntilP...

2023-11-28 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7445f27231c062a847ee5f57970d5a950e66bf17
  
https://github.com/WebKit/WebKit/commit/7445f27231c062a847ee5f57970d5a950e66bf17
  Author: Matt Woodrow 
  Date:   2023-11-28 (Tue, 28 Nov 2023)

  Changed paths:
M Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp
M Source/WebKit/UIProcess/API/gtk/PageClientImpl.h
M Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp
M Source/WebKit/UIProcess/API/wpe/PageClientImpl.h
M 
Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
M 
Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
M Source/WebKit/UIProcess/DrawingAreaProxy.cpp
M Source/WebKit/UIProcess/DrawingAreaProxy.h
M Source/WebKit/UIProcess/PageClient.h
M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h
M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
M Source/WebKit/UIProcess/ios/WKContentView.h
M Source/WebKit/UIProcess/ios/WKContentView.mm
M Source/WebKit/UIProcess/mac/PageClientImplMac.h
M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
M Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h
M Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
M Source/WebKit/UIProcess/mac/WebViewImpl.h
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
M Source/WebKit/UIProcess/playstation/PageClientImpl.cpp
M Source/WebKit/UIProcess/playstation/PageClientImpl.h
M Source/WebKit/UIProcess/wc/DrawingAreaProxyWC.cpp
M Source/WebKit/UIProcess/wc/DrawingAreaProxyWC.h
M Source/WebKit/UIProcess/win/PageClientImpl.cpp
M Source/WebKit/UIProcess/win/PageClientImpl.h

  Log Message:
  ---
  RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate on a 
provisional DrawingAreaProxy can hide the page forever.
https://bugs.webkit.org/show_bug.cgi?id=265404


Reviewed by Chris Dumez.

DrawingAreaProxy always accesses the WebPageProxy to use its process' 
connection to send messages.
If the DrawingAreaProxy was created for a ProvisionalPageProxy, then this isn't 
the right connection.

The result is that a DispatchAfterEnsuringDrawing message can be sent to the 
wrong process, and we'll end up
hiding the layer tree indefinitely (even after the provisional page has been 
committed).

This change stores the right WebProcessProxy on DrawingAreaProxy, and changes 
all message sending to
go through that. It also implements IPC::MessageSender on DrawingAreaProxy to 
make this simpler.

* Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::createDrawingAreaProxy):
* Source/WebKit/UIProcess/API/gtk/PageClientImpl.h:
* Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::createDrawingAreaProxy):
* Source/WebKit/UIProcess/API/wpe/PageClientImpl.h:
* 
Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
(WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingAreaProxyCoordinatedGraphics):
(WebKit::DrawingAreaProxyCoordinatedGraphics::forceUpdateIfNeeded):
(WebKit::DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange):
(WebKit::DrawingAreaProxyCoordinatedGraphics::adjustTransientZoom):
(WebKit::DrawingAreaProxyCoordinatedGraphics::commitTransientZoom):
(WebKit::DrawingAreaProxyCoordinatedGraphics::update):
(WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateGeometry):
(WebKit::DrawingAreaProxyCoordinatedGraphics::discardBackingStore):
* 
Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h:
* Source/WebKit/UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::DrawingAreaProxy):
(WebKit::DrawingAreaProxy::messageSenderConnection const):
(WebKit::DrawingAreaProxy::messageSenderDestinationID const):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
* Source/WebKit/UIProcess/DrawingAreaProxy.h:
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::initializeWebPage):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):

[webkit-changes] [WebKit/WebKit] 923ed5: hideContentUntilPendingUpdate callbacks can be pro...

2023-11-13 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 923ed5177ec09a0a5a1e5d9c8a3f40e5cb1c1a9f
  
https://github.com/WebKit/WebKit/commit/923ed5177ec09a0a5a1e5d9c8a3f40e5cb1c1a9f
  Author: Matt Woodrow 
  Date:   2023-11-13 (Mon, 13 Nov 2023)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  ---
  hideContentUntilPendingUpdate callbacks can be processed too late after the 
transaction and cause flickering.
https://bugs.webkit.org/show_bug.cgi?id=264531


Reviewed by Tim Horton.

The callbacks for DispatchAfterEnsuringDrawing get processed at the end of the 
transaction, after we've already told
the client that we've committed the transaction. In some cases, this can cause 
them to be included as a separate CA
commit, and cause flickering.

This adds a pre-transaction check for a callback for 
hideContentUntilPendingUpdate, and clears the reply id, so that we
re-attach the root layer as part of the main commit.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):

Canonical link: https://commits.webkit.org/270672@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] a6666b: markAllBackingStoreVolatileFromTimer can stop the ...

2023-11-09 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ab946bcc31afdea756373119ae86622de3c3
  
https://github.com/WebKit/WebKit/commit/ab946bcc31afdea756373119ae86622de3c3
  Author: Matt Woodrow 
  Date:   2023-11-09 (Thu, 09 Nov 2023)

  Changed paths:
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm

  Log Message:
  ---
  markAllBackingStoreVolatileFromTimer can stop the volatility timer too soon 
and not mark all surfaces as volatile.
https://bugs.webkit.org/show_bug.cgi?id=264229


Reviewed by Simon Fraser.

RemoteLayerWithRemoteRenderingBackingStoreCollection::markAllBackingStoreVolatileFromTimer
 stops the volatility timer if the operation is successful, since there should 
be no further backing stores to mark volatile.

This is an async operation though, and it's possible for 
markBackingStoreVolatileAfterReachabilityChange to have been called in the 
interim and there are now new backing stores that aren't yet volatile.

This change ensures that we reschedule the volatility timer if any 
markBackingStoreVolatileAfterReachabilityChange don't succesfully mark the 
relevant surfaces as volatile.

* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::markBackingStoreVolatileAfterReachabilityChange):

Canonical link: https://commits.webkit.org/270486@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bb4da5: Multiple iframes in same isolated process results ...

2023-11-08 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bb4da53917de7e7e3788b43bf8b9aba9ee81d718
  
https://github.com/WebKit/WebKit/commit/bb4da53917de7e7e3788b43bf8b9aba9ee81d718
  Author: Matt Woodrow 
  Date:   2023-11-08 (Wed, 08 Nov 2023)

  Changed paths:
A LayoutTests/http/tests/site-isolation/double-iframe-expected.html
A LayoutTests/http/tests/site-isolation/double-iframe.html
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

  Log Message:
  ---
  Multiple iframes in same isolated process results in one of them not being 
drawn.
https://bugs.webkit.org/show_bug.cgi?id=264356


Reviewed by Alex Christensen.

RemoteLayerBackingStoreCollection::willCommitLayerTree collects all the backing 
stores that were unreachable,
and includes that list in the transaction so that the UI process can ensure the 
buffer references are removed.

This changes moves that call until we've finished building all the 
transactions, so that were not considering
buffers only used in latter transactions to be unreachable for the first 
transaction.

It also adds a new 'willBuildTransaction' function. The set of backing stores 
that need display is a property
of the transaction (where we call prepareBuffersForDisplay, and then paint 
them), so we want to clear this
state per-transaction, not per rendering update.

* LayoutTests/http/tests/site-isolation/double-iframe-expected.html: Added.
* LayoutTests/http/tests/site-isolation/double-iframe.html: Added.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::willFlushLayers):
(WebKit::RemoteLayerBackingStoreCollection::willBuildTransaction):
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):

Canonical link: https://commits.webkit.org/270399@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 84aabd: REGRESSION (266237@main): Poster circle animation ...

2023-11-06 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 84aabd280f9ab479463a9701fd52a3d3c95b347d
  
https://github.com/WebKit/WebKit/commit/84aabd280f9ab479463a9701fd52a3d3c95b347d
  Author: Matt Woodrow 
  Date:   2023-11-06 (Mon, 06 Nov 2023)

  Changed paths:
M Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h
M Source/WebCore/platform/graphics/transforms/TransformOperation.h
M Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp
M Source/WebCore/platform/graphics/transforms/TransformationMatrix.h

  Log Message:
  ---
  REGRESSION (266237@main): Poster circle animation is not continuous
https://bugs.webkit.org/show_bug.cgi?id=263569


Reviewed by Simon Fraser.

This is the same as the existing hasBig3DRotation rotation issue, where CA 
animates the shortest path between 3d rotations,
because we represent them as matrices.

Previously our computed matrices for rotate(180deg) didn’t have integer values, 
due to a float rounding issue during deg->rad.

The new change computes the rotation matrix exactly, and now there’s no longer 
a defined direction for a 180deg rotation and
we sometimes end up with a ‘backwards’ rotation.

This adds an option to not do the snapping when we compute matrices for CA, so 
that the existing behavior is preserved.

* Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h:
* Source/WebCore/platform/graphics/transforms/TransformOperation.h:
(WebCore::TransformOperation::applyUnrounded const):
* Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::rotate3d):
(WebCore::TransformationMatrix::rotate):
(WebCore::TransformationMatrix::rotateRadians):
* Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:

Canonical link: https://commits.webkit.org/270294@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 359bfd: screenrant.com: webcontent blank for several secon...

2023-10-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 359bfd90327f3b91f80398c53404a03e6a19eecd
  
https://github.com/WebKit/WebKit/commit/359bfd90327f3b91f80398c53404a03e6a19eecd
  Author: Matt Woodrow 
  Date:   2023-10-25 (Wed, 25 Oct 2023)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  ---
  screenrant.com: webcontent blank for several seconds upon resume
https://bugs.webkit.org/show_bug.cgi?id=263614


Reviewed by Tim Horton.

The existing code for hideContentUntilPendingUpdate waited for 
`nextLayerTreeTransactionID()`, which is usually the
next layer tree transaction to come from the WebProcess (and may already be in 
the incoming message queue).
The exception is when we've already received the `willCommitLayerTree` message, 
but not the `commitLayerTree` one
(probably because it's still working on buffer flushing). In that case it's the 
second layer tree transaction after
the current point.

In some cases that means we hide the layer tree, only to immediately show it 
again.

This changes the code to use a DispatchAfterEnsuringDrawing() IPC message, so 
that we show the content on the
next presentation update after the current set of IPC messages being sent to 
the WebProcess have been received.

It tracks the AsyncReplyID of any request in flight, so that if we get a second 
we can cancel the existing one and
replace it, thus extending the hidden state to the new deadline.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):

Canonical link: https://commits.webkit.org/269776@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4bd0c1: TestWebKitAPI.GPUProcess.WebProcessTerminationAfte...

2023-10-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4bd0c17eea89ee6f3c609105a538196e5d518886
  
https://github.com/WebKit/WebKit/commit/4bd0c17eea89ee6f3c609105a538196e5d518886
  Author: Matt Woodrow 
  Date:   2023-10-25 (Wed, 25 Oct 2023)

  Changed paths:
M Source/WebKit/Platform/IPC/Connection.cpp
M Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp

  Log Message:
  ---
  TestWebKitAPI.GPUProcess.WebProcessTerminationAfterTooManyGPUProcessCrashes 
is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=263338


Reviewed by Kimmo Kinnunen.

nderingBackendProxy::ensureGPUProcessConnection can create both the main 
connection to the GPU process, and then send the
creation for the stream connection over that.

If the GPUP crashes before that main connection finishes connecting, then the 
message containing the stream connection
constructor is still in m_outgoingMessages.

We then block the main thread waiting on a sync message from the stream 
connection. We can’t process the incoming did
close message from the main connection, since we’re blocking the thread, and 
the stream connection doesn’t stop waiting
because the construction handle is still alive.

Making Connection::connectionDidClose() also clear m_outgoingMessages fixes the 
timeout.

* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::connectionDidClose):
* Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp:
(TestWebKitAPI::MockTestSyncMessage::name):
(TestWebKitAPI::MockTestSyncMessage::arguments):
(TestWebKitAPI::MockTestSyncMessage::MockTestSyncMessage):
(TestWebKitAPI::TEST_F):

Canonical link: https://commits.webkit.org/269773@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] dff0f0: Layer contents are not invalidated when the GPUP c...

2023-10-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dff0f0bbe2c58d24fb850b3f4caaa8fb019b73b4
  
https://github.com/WebKit/WebKit/commit/dff0f0bbe2c58d24fb850b3f4caaa8fb019b73b4
  Author: Matt Woodrow 
  Date:   2023-10-19 (Thu, 19 Oct 2023)

  Changed paths:
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h
M 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebProcess.cpp

  Log Message:
  ---
  Layer contents are not invalidated when the GPUP crashes.
https://bugs.webkit.org/show_bug.cgi?id=263211


Reviewed by Simon Fraser.

GPUP crashes result in any remote image buffers have new backends created in 
the new process, but nothing currently notifies the rendering code that we need 
to repaint the pixel contents.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
(WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed):
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h:
* 
Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm:
(WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::gpuProcessConnectionWasDestroyed):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::gpuProcessConnectionWasDestroyed):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::gpuProcessConnectionWasDestroyed):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::gpuProcessConnectionWasDestroyed):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::gpuProcessConnectionClosed):

Canonical link: https://commits.webkit.org/269546@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ee5c4b: waitForDidUpdateActivityState can block for 250ms ...

2023-10-18 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ee5c4b70a09cc5c2050d08b3bf0005c06b3cf3db
  
https://github.com/WebKit/WebKit/commit/ee5c4b70a09cc5c2050d08b3bf0005c06b3cf3db
  Author: Matt Woodrow 
  Date:   2023-10-18 (Wed, 18 Oct 2023)

  Changed paths:
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  ---
  waitForDidUpdateActivityState can block for 250ms waiting for a message that 
isn't pending.
https://bugs.webkit.org/show_bug.cgi?id=263275


Reviewed by Simon Fraser.

RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState sends a 
didRefreshDisplay message
to the web content process (if one was pending) to ensure that the web process 
knows it can commit
a new layer tree.

If the incoming CommitLayerTree message didn't include the right activity state 
change, then we
wait again, but don't send a new didRefreshDisplay, and we wait for a message 
that isn't coming.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):

Canonical link: https://commits.webkit.org/269486@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] b6fc29: Composited mix-blend-mode inside backdrop-filter d...

2023-09-26 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b6fc29dd94bdc86d254249e952947f1ca287dd11
  
https://github.com/WebKit/WebKit/commit/b6fc29dd94bdc86d254249e952947f1ca287dd11
  Author: Matt Woodrow 
  Date:   2023-09-26 (Tue, 26 Sep 2023)

  Changed paths:
A 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode-expected.html
A 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode.html
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

  Log Message:
  ---
  Composited mix-blend-mode inside backdrop-filter doesn't use the 
backdrop-filter as its composited group.
https://bugs.webkit.org/show_bug.cgi?id=149553


Reviewed by Simon Fraser.

Backdrop-filter creates a stacking context (and isolated group for blend 
modes), so we should add child layers
onto the primary layer, not as siblings of the backdrop layer.

* 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode-expected.html:
 Added.
* 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode.html:
 Added.
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateSublayerList):

Canonical link: https://commits.webkit.org/268477@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 93bef5: Combining backface-visibility:hidden and backdrop-...

2023-09-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 93bef5855560f6abc5817869e36e81473204974f
  
https://github.com/WebKit/WebKit/commit/93bef5855560f6abc5817869e36e81473204974f
  Author: Matt Woodrow 
  Date:   2023-09-25 (Mon, 25 Sep 2023)

  Changed paths:
A 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility-expected.html
A 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility.html
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

  Log Message:
  ---
  Combining backface-visibility:hidden and backdrop-filter stops the backface 
from being hidden.
https://bugs.webkit.org/show_bug.cgi?id=249952


Reviewed by Simon Fraser.

Structural layers created for backdrop-filter should still have the double 
sided property set.

* 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility-expected.html:
 Added.
* 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility.html:
 Added.
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateBackfaceVisibility):

Canonical link: https://commits.webkit.org/268427@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] ad3536: Backdrop-filter: blur() with a transparent backdro...

2023-09-25 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ad353604370c322f67b905d964c46a1d744105fb
  
https://github.com/WebKit/WebKit/commit/ad353604370c322f67b905d964c46a1d744105fb
  Author: Matt Woodrow 
  Date:   2023-09-25 (Mon, 25 Sep 2023)

  Changed paths:
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm

  Log Message:
  ---
  Backdrop-filter: blur() with a transparent backdrop renders incorrectly.
https://bugs.webkit.org/show_bug.cgi?id=176830


Reviewed by Simon Fraser.

I haven't found a good way to test this that isn't super fuzzy unfortunately.

* Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
(WebCore::PlatformCAFilters::setFiltersOnLayer):

Canonical link: https://commits.webkit.org/268426@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] c950ad: Add unprefixed backdrop-filter behind a pref.

2023-09-24 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c950ad9bd9cc4f7d07bafd0cf2e739bc9421740d
  
https://github.com/WebKit/WebKit/commit/c950ad9bd9cc4f7d07bafd0cf2e739bc9421740d
  Author: Matt Woodrow 
  Date:   2023-09-24 (Sun, 24 Sep 2023)

  Changed paths:
M LayoutTests/TestExpectations
M 
LayoutTests/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter-expected.txt
M 
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/inheritance-expected.txt
M 
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M 
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M 
LayoutTests/platform/ios/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt
M 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M 
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt
M 
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WTF/wtf/PlatformEnable.h
M Source/WebCore/animation/CSSPropertyAnimation.cpp
M Source/WebCore/animation/KeyframeEffect.cpp
M Source/WebCore/css/CSSProperties.json
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/platform/animation/AcceleratedEffect.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/style/WillChangeData.cpp

  Log Message:
  ---
  Add unprefixed backdrop-filter behind a pref.
https://bugs.webkit.org/show_bug.cgi?id=261923


Reviewed by Simon Fraser.

We want to start being able to test this, before it's fully ready.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/PlatformEnable.h:
* Source/WebCore/animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::computeHasReferenceFilter):
(WebCore::acceleratedPropertyDidChange):
* Source/WebCore/css/CSSProperties.json:
* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle const):
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::acceleratedPropertyFromCSSProperty):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::cssToGraphicsLayerProperty):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForAnimation const):
* Source/WebCore/rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
(WebCore::WillChangeData::canBeBackdropRoot const):
(WebCore::WillChangeData::propertyCreatesStackingContext):
(WebCore::propertyTriggersCompositing):

Canonical link: https://commits.webkit.org/268367@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 8e7519: Implement the 'backdrop root' concept for backdrop...

2023-09-23 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8e751933d8eb396635770f297097ea577893dbba
  
https://github.com/WebKit/WebKit/commit/8e751933d8eb396635770f297097ea577893dbba
  Author: Matt Woodrow 
  Date:   2023-09-23 (Sat, 23 Sep 2023)

  Changed paths:
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/platform/glib/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M 
LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M Source/JavaScriptCore/inspector/protocol/LayerTree.json
M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
M Source/WebCore/platform/graphics/GraphicsLayer.cpp
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/style/WillChangeData.cpp
M Source/WebCore/rendering/style/WillChangeData.h
M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
M Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js
M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  ---
  Implement the 'backdrop root' concept for backdrop-filter.
https://bugs.webkit.org/show_bug.cgi?id=261717


Reviewed by Simon Fraser.

https://drafts.fxtf.org/filter-effects-2/#backdrop-root
Backdrop-filter should only uses the backdrop of the content behind up to the 
nearest backdrop-root, which isn't yet implemented.

Unfortunately no new WPT passes yet, due to other platform rendering issues, 
but this gets us much closer to spec compliance.

* Source/JavaScriptCore/inspector/protocol/LayerTree.json:
* Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setIsBackdropRoot):
(WebCore::GraphicsLayer::isBackdropRoot const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:

[webkit-changes] [WebKit/WebKit] f20a3c: ASSERTION FAILED: foundContainer on media/modern-m...

2023-09-22 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f20a3ce20e867a081396437e684de72bf8d52320
  
https://github.com/WebKit/WebKit/commit/f20a3ce20e867a081396437e684de72bf8d52320
  Author: Matt Woodrow 
  Date:   2023-09-22 (Fri, 22 Sep 2023)

  Changed paths:
A 
LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block-expected.html
A 
LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block.html
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebCore/rendering/RenderGeometryMap.cpp

  Log Message:
  ---
  ASSERTION FAILED: foundContainer on 
media/modern-media-controls/pip-support/pip-support-click.html.
https://bugs.webkit.org/show_bug.cgi?id=258325


Reviewed by Simon Fraser.

Running layout for a subtree calls RenderGeometryMap::pushMappingsToAncestor 
with a nullptr ancestor layer to push
all the mappings up to the RenderView. Since we don't have an ancestor layer, 
we instead walk up the render tree.

The render tree container walk can jump over repaint containers (see 
containerForElement in RenderObject.cpp) to
the nearest containing block ancestor.

The expected behaviour for pushMappingsToAncestor is that the ancestor layer 
provided is the nearest repaint container,
so that any render tree walk with be bounded by that. In this case we don't 
have one, so we fail to push mappings for
repaint containers in some cases and then crash when trying to find them later.

This adds code for the nullptr case, and breaks the render tree walk down into 
per-layer-ancestor chunks to prevent
this.

Also adds a test that crashes without the fix.

* 
LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block-expected.html:
 Added.
* 
LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block.html:
 Added.
* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebCore/rendering/RenderGeometryMap.cpp:
(WebCore::RenderGeometryMap::pushMappingsToAncestor):

Canonical link: https://commits.webkit.org/268304@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] bbffe1: css/filter-effects/backdrop-filter-plus-filter.htm...

2023-09-20 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bbffe15319f386bd5e7e7790d84cd7c5aab46ebb
  
https://github.com/WebKit/WebKit/commit/bbffe15319f386bd5e7e7790d84cd7c5aab46ebb
  Author: Matt Woodrow 
  Date:   2023-09-20 (Wed, 20 Sep 2023)

  Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/gtk/TestExpectations
M LayoutTests/platform/wpe/TestExpectations
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

  Log Message:
  ---
  css/filter-effects/backdrop-filter-plus-filter.html fails because the filter 
isn't set on the structural layer.
https://bugs.webkit.org/show_bug.cgi?id=261664


Reviewed by Simon Fraser.

If we have a structural layer to wrap the backdrop layer and primary layer, 
then the filter should be applied to that outer layer to affect both.

* LayoutTests/TestExpectations:
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateFilters):
(WebCore::GraphicsLayerCA::ensureStructuralLayer):

Canonical link: https://commits.webkit.org/268187@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 4f2634: Mix-blend-mode incorrectly blends with view base c...

2023-09-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4f26343f6d0bd701a726e1967b7d65cd24f98d51
  
https://github.com/WebKit/WebKit/commit/4f26343f6d0bd701a726e1967b7d65cd24f98d51
  Author: Matt Woodrow 
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
R LayoutTests/css3/blending/blend-mode-body-child-expected.html
R LayoutTests/css3/blending/blend-mode-body-child.html
R LayoutTests/css3/blending/blend-mode-body-composited-child-expected.html
R LayoutTests/css3/blending/blend-mode-body-composited-child.html
R 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-expected.html
R 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-ref.html
R 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-expected.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-ref.html
A 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac-wk1/TestExpectations
M LayoutTests/svg/css/mix-blend-mode-with-inline-svg.html
M Source/WebCore/rendering/BackgroundPainter.cpp
M Source/WebCore/rendering/RenderLayerInlines.h
M Source/WebCore/rendering/RenderView.cpp
M Source/WebCore/rendering/RenderView.h

  Log Message:
  ---
  Mix-blend-mode incorrectly blends with view base color.
https://bugs.webkit.org/show_bug.cgi?id=261708


Reviewed by Simon Fraser.

Mix-blend-mode on an element that blends into the 'Root Element Group' should 
have only the root element's background color, or transparent if none. We're 
including the opaque white base color of the RenderView too, which is incorrect.

This change changes BackgroundPainter so that we only draw the base color if 
it's ok to draw it as part of the root element background (if the root 
background isn't an isolated group).

It also changes RenderView to make sure we do paint the base color (for 
iframes, particularly) if the root element won't be painting it.

Removes some tests (including one WPT) that were explicitly trying to test the 
wrong thing (and failed on everything except WebKit).

* LayoutTests/css3/blending/blend-mode-body-child-expected.html: Removed.
* LayoutTests/css3/blending/blend-mode-body-child.html: Removed.
* LayoutTests/css3/blending/blend-mode-body-composited-child-expected.html: 
Removed.
* LayoutTests/css3/blending/blend-mode-body-composited-child.html: Removed.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-expected.html:
 Removed.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-ref.html:
 Removed.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div.html:
 Removed.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group.html:
 Added.
* LayoutTests/svg/css/mix-blend-mode-with-inline-svg.html:
* Source/WebCore/rendering/BackgroundPainter.cpp:
(WebCore::BackgroundPainter::paintFillLayer):
* Source/WebCore/rendering/RenderLayerInlines.h:
(WebCore::RenderLayer::hasNonOpacityTransparency const):
* Source/WebCore/rendering/RenderView.cpp:
(WebCore::RenderView::paintBoxDecorations):
(WebCore::RenderView::rootElementShouldPaintBaseBackground const):
* Source/WebCore/rendering/RenderView.h:

Canonical link: https://commits.webkit.org/268173@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


[webkit-changes] [WebKit/WebKit] 75e7dc: Implement the 'backdrop root' concept for backdrop...

2023-09-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 75e7dc79cac94cf706b9f77f016cbd4c805b4719
  
https://github.com/WebKit/WebKit/commit/75e7dc79cac94cf706b9f77f016cbd4c805b4719
  Author: Matt Woodrow 
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
M 
LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt
M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt
M 
LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
M Source/JavaScriptCore/inspector/protocol/LayerTree.json
M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
M Source/WebCore/platform/graphics/GraphicsLayer.cpp
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h
M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/style/WillChangeData.cpp
M Source/WebCore/rendering/style/WillChangeData.h
M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
M Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js
M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  ---
  Implement the 'backdrop root' concept for backdrop-filter.
https://bugs.webkit.org/show_bug.cgi?id=261717


Reviewed by Simon Fraser.

https://drafts.fxtf.org/filter-effects-2/#backdrop-root
Backdrop-filter should only uses the backdrop of the content behind up to the 
nearest backdrop-root, which isn't yet implemented.

Unfortunately no new WPT passes yet, due to other platform rendering issues, 
but this gets us much closer to spec compliance.

* Source/JavaScriptCore/inspector/protocol/LayerTree.json:
* Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setIsBackdropRoot):
(WebCore::GraphicsLayer::isBackdropRoot const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setIsBackdropRoot):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateBackdropRoot):
(WebCore::GraphicsLayerCA::ensureStructuralLayer):
(WebCore::GraphicsLayerCA::layerChangeAsString):
(WebCore::GraphicsLayerCA::changeLayerTypeTo):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayer.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::setIsBackdropRoot):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::shouldBeBackdropRootCandidate const):
(WebCore::RenderLayer::setIsBackdropRootCandidate):
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
(WebCore::RenderLayer::hasBackdropFilterDescendantsWithoutRoot const):
(WebCore::RenderLayer::setHasBackdropFilterDescendantsWithoutRoot):
(WebCore::RenderLayer::isBackdropRootCandidate const):
(WebCore::RenderLayer::isBackdropRoot const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateBackdropRoot):

[webkit-changes] [WebKit/WebKit] 0f4cd6: css/filter-effects/backdrop-filter-containing-bloc...

2023-09-19 Thread mattwoodrow
  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0f4cd6871883de54429c34b5e162609d0c1c2005
  
https://github.com/WebKit/WebKit/commit/0f4cd6871883de54429c34b5e162609d0c1c2005
  Author: Matt Woodrow 
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElementInlines.h
M Source/WebCore/rendering/style/WillChangeData.cpp
M Source/WebCore/rendering/style/WillChangeData.h

  Log Message:
  ---
  css/filter-effects/backdrop-filter-containing-block.html fails because 
backdrop-filter doesn't create a containing block.
https://bugs.webkit.org/show_bug.cgi?id=261662


Reviewed by Simon Fraser.

Backdrop-filter should establish a containing block for absolute and fixed 
position descendants, except if it's on the root element.

* LayoutTests/TestExpectations:
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::adjustFragmentedFlowStateOnContainingBlockChangeIfNeeded):
* Source/WebCore/rendering/RenderElementInlines.h:
(WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):
(WebCore::RenderElement::canContainFixedPositionObjects const):
* Source/WebCore/rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForAbsolutelyPositioned const):
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
* Source/WebCore/rendering/style/WillChangeData.h:

Canonical link: https://commits.webkit.org/268161@main


___
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes


  1   2   3   >