Branch: refs/heads/webkitglib/2.46
Home: https://github.com/WebKit/WebKit
Commit: 2a33afccdf088c43021ddde73d5dbc6b97d54e13
https://github.com/WebKit/WebKit/commit/2a33afccdf088c43021ddde73d5dbc6b97d54e13
Author: Jani Hautakangas <[email protected]>
Date: 2024-12-16 (Mon, 16 Dec 2024)
Changed paths:
M Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
Log Message:
-----------
Cherry-pick 287414@main (23bfb2f9346e).
https://bugs.webkit.org/show_bug.cgi?id=283914
REGRESSION(285820@main): [TextureMapper][GTK][WPE] ASSERTION FAILED:
textureIndex < m_textures.size() on luna.amazon.com
https://bugs.webkit.org/show_bug.cgi?id=283914
Reviewed by Fujii Hironori.
The needsUpdate state for flattened layers was incorrectly reset before the
layer was fully updated. This issue occurred when processing large layers
that required tiling, as the state was based on the number of tile textures
being greater than zero. This fix adjusts the logic to correctly account for
layers that require multiple tiles to render.
* Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:
Canonical link: https://commits.webkit.org/287414@main
Canonical link: https://commits.webkit.org/282416.365@webkitglib/2.46
Commit: 0ee188047a3060ed3b8ca592afba89300cc55f4c
https://github.com/WebKit/WebKit/commit/0ee188047a3060ed3b8ca592afba89300cc55f4c
Author: Timothy Hatcher <[email protected]>
Date: 2024-12-16 (Mon, 16 Dec 2024)
Changed paths:
M Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp
M Source/WebKit/UIProcess/API/APIContentRuleListStore.h
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStore.mm
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm
Log Message:
-----------
Cherry-pick 287319@main (fa5d8d81450b).
https://bugs.webkit.org/show_bug.cgi?id=283996
Crash at API::getContentRuleListSourceFromMappedFile().
https://webkit.org/b/283996
rdar://140450689
Reviewed by Alex Christensen.
Make the handling of getContentRuleListSourceFromMappedFile() more robust
by checking header sizes
to the mapped data size. This was failing when the version got bumped and
fallback to recompiling
from the original source was needed.
Improved mismatch version testing by dropping the version by one and
keeping all the compiled data
the same to test proper version upgrades from the original source.
Added two corrupt size tests to error on invalid data sizes or empty data
(missing source).
* Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:
(API::getContentRuleListSourceFromMappedFile): Added logging and size
checks.
(API::ContentRuleListStore::lookupContentRuleListFile): Check fileSize()
against the mapped data.
(API::ContentRuleListStore::invalidateContentRuleListVersion): Changed to
set the version back by one.
(API::ContentRuleListStore::corruptContentRuleListHeader): Added.
* Source/WebKit/UIProcess/API/APIContentRuleListStore.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStore.mm:
(-[WKContentRuleListStore
_corruptContentRuleListHeaderForIdentifier:usingCurrentVersion:]): Added.
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm:
(TEST_F(WKContentRuleListStoreTest, VersionMismatch)): Updated expectations
since source is preserved now.
(TEST_F(WKContentRuleListStoreTest, CorruptHeaderEmpty)): Added.
(TEST_F(WKContentRuleListStoreTest, CorruptHeaderRandom)): Added.
Canonical link: https://commits.webkit.org/287319@main
Canonical link: https://commits.webkit.org/282416.366@webkitglib/2.46
Commit: 8c6557aff455d0ea35bc709c7c44f2fb04e25625
https://github.com/WebKit/WebKit/commit/8c6557aff455d0ea35bc709c7c44f2fb04e25625
Author: Philippe Normand <[email protected]>
Date: 2024-12-16 (Mon, 16 Dec 2024)
Changed paths:
M Source/WebCore/platform/soup/PublicSuffixStoreSoup.cpp
Log Message:
-----------
Cherry-pick 287853@main (a8b6ea5c059f).
https://bugs.webkit.org/show_bug.cgi?id=284711
REGRESSION(287061@main): [SOUP] Prevent early destruction of the tld string
in PublicSuffixStore
https://bugs.webkit.org/show_bug.cgi?id=284711
Reviewed by Michael Catanzaro.
Make sure the string passed to soup_tld_get_base_domain() is not destroyed
before usage.
Canonical link: https://commits.webkit.org/287853@main
Canonical link: https://commits.webkit.org/282416.367@webkitglib/2.46
Commit: f3276d3ebeaf41ec85435c45a65192b597e5ced6
https://github.com/WebKit/WebKit/commit/f3276d3ebeaf41ec85435c45a65192b597e5ced6
Author: Sammy Gill <[email protected]>
Date: 2024-12-17 (Tue, 17 Dec 2024)
Changed paths:
A PerformanceTests/Layout/nested-grids-single-item-content-change.html
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
M Source/WebCore/rendering/RenderGrid.cpp
M Source/WebCore/rendering/RenderGrid.h
Log Message:
-----------
Cherry-pick 287890@main (6efee9d4dde0).
https://bugs.webkit.org/show_bug.cgi?id=279492
REGRESSION(281090@main): Sluggish animations on some shopify stores
https://bugs.webkit.org/show_bug.cgi?id=279492
rdar://135791322
Reviewed by Brandon Stewart.
In 281090@main, we added an extra bit of information for the grid to keep
track of on its
grid items. In particular, we expanded the grid's capabilities to keep
track of whether or
not any of its grid items needed to perform stretch alignment. This
included some extra
invalidation inside of GridTrackSizingAlgorithm::logicalHeightForGridItem,
as performing
layout on a grid item would clear its stretched size.
However, this seems to expose an issue in which we experience thrashing
when rerunning the
grid layout. This can become an issue because of 2 main aspects of grid
layout currently:
1.) We rerun the full grid track sizing algorithm each time (i.e. little
partial layout)
2.) Grid track sizing may need to query the intrinsic sizes of an item. If
an item was
previously stretched, we will clear that size, compute the intrinsic sizes
for track
sizing, and then stretch the item again.
These 2 issues unfortunately get compounded in the presence of nested grid
content.
This patch aims to address 2 by caching the intrinsic logical height of a
grid item
to try to avoid the adverse effects of recomputing it. This cache will
specifically be
used to cache the intrinsic logical heights of grid items that are computed
during the
first pass of row sizing. That means the values that it contains are only
valid for that
portion of the track sizing algorithm code, and the track sizing algorithm
should only
populate it with sizes during that step.
Availability -
The cache will live on RenderGrid, which will determine whether or not
it will be available to use by the rest of the code. This availability is
dependent on the
type of the current grid content. The cache is available to use if none
of the following are true:
1.) The grid is a subgrid
2.) Any of the items are a subgrid
3.) The grid is a masonry grid
4.) Any of the items are being baseline aligned (due to the intrinsic size
implications
of baseline-aligned grid items in the spec).
5.) The grid is contained in a fragmented flow.
Invalidation -
If we have an existing cache that is still valid to use during another
pass of layout (i.e. it is still available), then we may need to
invalidate the items.
1.) Before we run grid layout, we will check to see if any of the grid
item renderers have been dirtied. If so, we will then invalidate that
item if it is in the cache and recompute the intrinsic size during the
track sizing algorithm.
2.) If the grid experiences any sort of style mutation, we just
invalidate the entire cache.
3.) During track sizing, we may end up changing the inline constraints
that were used to compute the logical height in a previous pass. If this
is the case, then we need to invalidate the item in the cache as a
different set of constraints may result in a different logical height.
API -
This cache is exposed by RenderGrid via
intrinsicLogicalHeightsForRowSizingFirstPass()
so that callers can either query, invalidate, or populate it. Callers
should only expect
to be able to use the cache if it is made available by RenderGrid.
Inside logicalHeightForGridItem, we will check to see if this cache exists
and if it
contains a value we previously computed for the item. If we do not have a
value for this
item, we will just compute it and add it to the cache afterwards.
nested-grids-single-item-content-change.html was added as a performance
test to demonstrate the effectiveness of this change. On my M1 Pro MBP,
running this test went from ~950 runs/s to ~1900 runs/s.
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithmStrategy::logicalHeightForGridItem const):
(WebCore::GridTrackSizingAlgorithmStrategy::minContentContributionForGridItem
const):
(WebCore::GridTrackSizingAlgorithmStrategy::maxContentContributionForGridItem
const):
* Source/WebCore/rendering/RenderGrid.cpp:
(WebCore::RenderGrid::styleDidChange):
(WebCore::RenderGrid::layoutGrid):
(WebCore::RenderGrid::isSubgrid const):
(WebCore::RenderGrid::updateIntrinsicLogicalHeightsForRowSizingFirstPassCacheAvailability):
(WebCore::RenderGrid::intrinsicLogicalHeightsForRowSizingFirstPass const):
(WebCore::RenderGrid::canCreateIntrinsicLogicalHeightsForRowSizingFirstPassCache
const):
(WebCore::GridItemSizeCache::setSizeForGridItem):
(WebCore::GridItemSizeCache::sizeForItem const):
(WebCore::GridItemSizeCache::invalidateSizeForItem):
* Source/WebCore/rendering/RenderGrid.h:
Canonical link: https://commits.webkit.org/287890@main
Canonical link: https://commits.webkit.org/282416.368@webkitglib/2.46
Compare: https://github.com/WebKit/WebKit/compare/03755c44779c...f3276d3ebeaf
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes