Skip to content

Conversation

@mnutt
Copy link
Member

@mnutt mnutt commented Jun 26, 2025

This should bring us current with WebKit/WebKit@f2a8160.

mwyrzykowski and others added 30 commits June 10, 2025 08:04
…rchitectures

https://bugs.webkit.org/show_bug.cgi?id=294005
rdar://152554233

Reviewed by Tadeu Zagallo.

The workaround from 295250@main when shader validation was enabled
was initially only reproducible on Apple9 devices, but we found
a repro for Apple8, so remove the architecture gating.

* Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp:
(WGSL::Metal::FunctionDefinitionWriter::emitNecessaryHelpers):

Canonical link: https://commits.webkit.org/295816@main
Update tests expectations. Remove tests passing.

* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/gtk/TestExpectations:
* LayoutTests/platform/wpe/TestExpectations:

Canonical link: https://commits.webkit.org/295817@main
https://bugs.webkit.org/show_bug.cgi?id=294000
rdar://problem/152549205

Reviewed by Charlie Wolfe.

Address safe cpp warnings in Quad.h. This also fixes css/DeprecatedCSSOMRect.h and css/Rect.h.

 * Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
 * Source/WebCore/css/CSSPropertyInitialValues.cpp:
 (WebCore::isNumber):
 * Source/WebCore/css/RectBase.h:
 (WebCore::RectBase::left const):
 (WebCore::RectBase::protectedTop const): Deleted.
 (WebCore::RectBase::protectedRight const): Deleted.
 (WebCore::RectBase::protectedBottom const): Deleted.
 (WebCore::RectBase::protectedLeft const): Deleted.

Canonical link: https://commits.webkit.org/295818@main
https://bugs.webkit.org/show_bug.cgi?id=293179
<rdar://problem/151655455>

Reviewed by Antti Koivisto.

Do not dismiss empty block containers as list marker parent candidates.

In findParentOfEmptyOrFirstLineBox, we travers the list item's subtree to find
an insertion position for the list marker.
While the first block container with inline content is the preferred insertion point,
skipping empty block containers results in constructing anonymous block parent.
(inline level list marker next to (empty) block level container)
We should also consider block containers with inline boxes even when they
do not generate visible content (e.g. <div><span></span></div>).

This patch introduces the concept of 'fallback parent' which is used when
no candidate with inline content is found.

* LayoutTests/fast/inline/list-item-marker-with-empty-list-expected.html: Added.
* LayoutTests/fast/inline/list-item-marker-with-empty-list.html: Added.
* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::parentCandidateForMarker):
(WebCore::RenderTreeBuilder::List::updateItemMarker):
(WebCore::getParentOfFirstLineBox): Deleted.

Canonical link: https://commits.webkit.org/295819@main
rdar://152190645
https://bugs.webkit.org/show_bug.cgi?id=293710

Reviewed by Tim Nguyen and Antti Koivisto.

At-rules like @Keyframes or @position-try restrict what CSS properties
can be declared in the rule. This logic is present in the "slow"-path
parser (CSSPropertyParser) but not in the fast path parser. Since it's
rare to parse at-rules with declarations inside anyway, this patch
forces declarations inside at-rules to use the slow path instead
of the fast path.

* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-cssom-expected.txt:
* Source/WebCore/css/parser/CSSParserFastPaths.cpp:
(WebCore::parseKeywordValue):
(WebCore::CSSParserFastPaths::maybeParseValue):

Canonical link: https://commits.webkit.org/295820@main
…ts code is slightly incorrect (follow-up)

https://bugs.webkit.org/show_bug.cgi?id=294001
rdar://152550042

Reviewed by Aditya Keerthi.

In 295726@main, I forgot to clean up WKIntelligenceSmartReplyTextEffectCoordinator in a few place
as I did with WKIntelligenceReplacementTextEffectCoordinator.swift.

* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceSmartReplyTextEffectCoordinator.swift:
(startAnimation(for:)):
(startAnimation(for:completion:)): Deleted.
(startAnimationAsync(for:)): Deleted.

Canonical link: https://commits.webkit.org/295821@main
https://bugs.webkit.org/show_bug.cgi?id=293928
rdar://problem/152461354

Reviewed by Tim Nguyen.

Fix Safe CPP warnings in RenderSlider.

* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations:
* Source/WebCore/rendering/RenderSlider.cpp:
(WebCore::RenderSlider::element const):
(WebCore::RenderSlider::inDragMode const):
(WebCore::RenderSlider::valueRatio const):
* Source/WebCore/rendering/RenderSlider.h:

Canonical link: https://commits.webkit.org/295822@main
https://bugs.webkit.org/show_bug.cgi?id=294018

Reviewed by Sam Weinig.

web-platform-tests/wpt#52924 removes the Signature-based SRI tests from
the rest of the Integrity-Policy tests. This PR imports that.

Upstream commit: web-platform-tests/wpt@6ba4f8f

* LayoutTests/imported/w3c/web-platform-tests/subresource-integrity/integrity-policy/script.https.html: Remove signature test.

Canonical link: https://commits.webkit.org/295823@main
…tructureStubClearingWatchpoint should hold an owner PolymorphicAccessJITStub and check if their owner is destroyed

https://bugs.webkit.org/show_bug.cgi?id=288985
rdar://144722637

Reviewed by Yusuke Suzuki.

StructureTransitionStructureStubClearingWatchpoint and AdaptiveValueStructureStubClearingWatchpoint keep a
JSObject within their ObjectPropertyCondition. However, during program execution, we could no longer have
a live PolymorphicAccessJITStub associated with the watchpoint. Since these watchpoints don't check if the
owner JITStub is live, they may still attempt to fire. This means that they could attempt to access a dead
object, which was cleaned up during a GC pass. This patch ensures that these watchpoints don't fire and do
nothing if their owner JITStub is no longer alive, meaning that they can no longer UAF their key's object.

Additionally, we modify the PolymorphicAccessJITStub to separate isCodeImmutable and isGCAware. These
properties are not related, but the old code set them together since we would only care about immutability
if we were a GC-aware JIT stub. However, we can set immutability at the beginning, allowing us to only set
isGCAware when we add a watchpoint that requires GC awareness. This is required since the two StubClearing
watchpoints hold references to objects, meaning they need to be GC aware. With these fixes, we are able to
ensure that watchpoints are invalidated or silenced when objects they refer to are dead.

* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::addWatchpoint):
(JSC::ensureReferenceAndInstallWatchpoint):
(JSC::ensureReferenceAndAddWatchpoint):
(JSC::InlineCacheCompiler::compile):
(JSC::InlineCacheCompiler::compileOneAccessCaseHandler):
* Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.cpp:
(JSC::StructureTransitionStructureStubClearingWatchpoint::fireInternal):
(JSC::AdaptiveValueStructureStubClearingWatchpoint::handleFire):
* Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:
* Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:
(JSC::GCAwareJITStubRoutine::GCAwareJITStubRoutine):
(JSC::GCAwareJITStubRoutine::makeGCAware):
(JSC::PolymorphicAccessJITStubRoutine::PolymorphicAccessJITStubRoutine):
(JSC::PolymorphicAccessJITStubRoutine::addGCAwareWatchpoint):
(JSC::MarkingGCAwareJITStubRoutine::MarkingGCAwareJITStubRoutine):
(JSC::GCAwareJITStubRoutineWithExceptionHandler::GCAwareJITStubRoutineWithExceptionHandler):
(JSC::createICJITStubRoutine):
(JSC::createPreCompiledICJITStubRoutine):
* Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h:
(JSC::GCAwareJITStubRoutine::create):
(JSC::PolymorphicAccessJITStubRoutine::ownerIsDead const):
* Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:
(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):

Originally-landed-as: 289651.245@safari-7621-branch (be9f31f7acec). rdar://151707889
Canonical link: https://commits.webkit.org/295824@main
https://bugs.webkit.org/show_bug.cgi?id=293908
rdar://152439605

Reviewed by Brent Fulgham.

This patch adds a setting, which can be used to conditionalize sandbox rules related to debugging.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebKit/Shared/Sandbox/common.sb:

Canonical link: https://commits.webkit.org/295825@main
… nested grid and subgrid content.

https://bugs.webkit.org/show_bug.cgi?id=291827
rdar://149704403

Reviewed by Alan Baradlay.

In 287890@main, we introduced a new cache for grid layout to use by
storing the intrinsic logical height of its grid items. That commit
message gives the explanation for the cause of the performance
regression, but the TLDR is:

We can experience some thrashing when we have deeply nested grid content
that is also stretching. This is because the track sizing algorithm will
query its item for its intrinsic logical height, and on relayout, we will
setNeedsLayout on those items to get that information. This behavior can
become pathological if those items are grid themselves.

The cache in 287890@main stores those sizes for grid to use without
needing to perform layout on those items. However, we restricted the
availability of this cache to limit the scope and risk of the initial
implementation. One of these restrictions was to not create that cache
in the presence of subgrids. As a result, any pages with subgrids and a
similar content structure of nested grids/subgrids can experience the
same performance problem that 287890@main attempted to address.

It seems like at one point, lobste.rs experienced this issue when the
website changed. This content structure no longer appears on the site at
this point, although that state is still accessible via the
Wayback Machine (see the link in the bugzilla).

The content seems to have been of the form:
<grid>
  <subgrid column/>
  <subgrid columns/>
  <grid>
    ...
  </grid>
</grid>

which was used in the comments section.

In this patch, we expand the availability of this cache to include when
the RenderGrid is subgridded in the columns or has a grid item which is
a subgrid columns. This should be okay for the following reason:

1.) A grid with subgridded columns and *not* rows will create its own
rows that are independent from the root grid. As a result, it will
perform track sizing on those rows and will need the cache for the exact
same reason.
2.) The shared columns should not impose a restriction on the cache
since the only time it should be used is for the first pass of row
sizing.

However, we impose an additional restriction to limit the cache if there
are any orthogonal subgrids. This is mostly just as a simplification to
not have to worry about dealing with the writing mode flips.

This mostly resolves the issue on lobste.rs as we can now load the page,
but there are still some visual glitches when resizing the viewport quickly.
This is because there are some row subgrids on the page, although not as
many, in which we still experience some slowness. I plan to address this
in a follow-up patch as this will require some additional logic to
handle it.

The performance test that was added went from ~3 runs/s -> 55k runs/s
on my M1 Ultra Studio.

Canonical link: https://commits.webkit.org/295826@main
https://bugs.webkit.org/show_bug.cgi?id=293929
rdar://152461747

Reviewed by Sam Weinig.

This patch builds on Bug 293059, and switches from deprecated AppKit methods to the
modern equivalents. There is no change in behavior.

* Source/WebKitLegacy/mac/WebInspector/WebNodeHighlight.mm:
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
(-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
* Source/WebKitLegacy/mac/WebView/WebFullScreenController.mm:
(-[WebFullScreenController enterFullScreen:willEnterFullscreen:didEnterFullscreen:]):
(-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]):
(-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]):
* Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:
(-[WebHTMLView _updateMouseoverWithFakeEvent]):
(-[WebHTMLView _autoscroll]):
(-[WebHTMLView accessibilityHitTest:]):
(-[WebHTMLView _colorAsString:]):
* Source/WebKitLegacy/mac/WebView/WebTextCompletionController.mm:
(-[WebTextCompletionController _buildUI]):
(-[WebTextCompletionController _placePopupWindow:]):

Canonical link: https://commits.webkit.org/295827@main
…mark from the favorites bar

https://bugs.webkit.org/show_bug.cgi?id=294031
rdar://152196672

Reviewed by Abrar Rahman Protyasha, Aditya Keerthi, and Megan Gardner.

Add a new method declaration; see the corresponding paired change for more details.

* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:
(-[WKWebView _setUsesAutomaticContentInsetBackgroundFill:]):
* Source/WebKit/UIProcess/mac/WebViewImpl.h:

Canonical link: https://commits.webkit.org/295828@main
https://bugs.webkit.org/show_bug.cgi?id=293992
rdar://152536037

Reviewed by Sam Sneddon.

Add mock repository to test_exporter unittests.
Find the WebKit repository using WebKitFinder and use
webkitscmpy mocks in upload unittests.

* Tools/Scripts/webkitpy/tool/commands/upload_unittest.py:
(UploadCommandsTest):
* Tools/Scripts/webkitpy/w3c/test_exporter.py:
(WebPlatformTestExporter.__init__):
* Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:
(TestExporterTest.test_export_invalid_token):
(TestExporterTest.test_export_wrong_token):
(TestExporterTest.test_has_wpt_changes):
(TestExporterTest.test_has_no_wpt_changes_for_no_diff):

Canonical link: https://commits.webkit.org/295829@main
…ne outside of layout

https://bugs.webkit.org/show_bug.cgi?id=294026

Reviewed by Antti Koivisto.

Replace generatesLineBoxesForInlineChild with isEmptyInline (calling generatesLineBoxesForInlineChild outside of layout may produce unexpected result do to
the lack of first-line info)

* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::parentCandidateForMarker):
(WebCore::generatesLineBoxesForInlineChild): Deleted.

Canonical link: https://commits.webkit.org/295831@main
https://bugs.webkit.org/show_bug.cgi?id=288814
rdar://145826169

Reviewed by Keith Miller.

DFG AI should continuously reduce the abstract value's possibility,
otherwise the constant folding will remove some nodes based on the
previous decision. NewArrayWithSpread says that it returns CoW array
with one argument (Spread for example), but later, when it gets
converted to PhantomSpread and PhantomNewArrayBuffer with non contiguous
CoW immutable butterfly, then it starts saying that it returns non-CoW
array. It is possible that we already removed some of DFG nodes based on
the previous assumption, and changing this causes a bug that we may miss
the necessary checks. This patch makes this node return CoW contiguous
array for PhantomSpread(PhantomNewArrayBuffer) case regardless so that
we can avoid this problem.

* JSTests/stress/dfg-ai-should-reduce-new-array-with-spread-structures.js: Added.
(i.f11):
(i.C13):
* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::createContiguousImmutableButterflyFromPhantomNewArrayBuffer):
(JSC::FTL::DFG::LowerDFGToB3::createContiguousImmutableButterflyFromPhantomCreateRest):
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):

Originally-landed-as: 289651.293@safari-7621-branch (4c7737fa3c68). rdar://151710409
Canonical link: https://commits.webkit.org/295832@main
https://bugs.webkit.org/show_bug.cgi?id=293975
rdar://152519277

Reviewed by Sosuke Suzuki.

This patch implements TypedArray#map / filter in C++. We are moving most of
TypedArray functions to C++ since C++ can do much faster operation in
particular for these typed code.

* Source/JavaScriptCore/builtins/TypedArrayPrototype.js:
(map): Deleted.
* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::genericTypedArrayViewProtoFuncMap):
* Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSTypedArrayViewPrototype::finishCreation):

Canonical link: https://commits.webkit.org/295833@main
https://bugs.webkit.org/show_bug.cgi?id=293993

Reviewed by Tim Nguyen.

Upstream commit: web-platform-tests/wpt@3de4cc4

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/resources/resource-files.json:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/WEB_FEATURES.yml: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/WEB_FEATURES.yml: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-sign-function-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-sign-function.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-filter-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-filter.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-opacity.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-backdrop-root-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-basic-blur-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-basic-blur.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-boundary-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-boundary.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-radius-zoom-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-radius-zoom-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-radius-zoom.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-zoom-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-zoom-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-zoom.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-clipping-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-clipping-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-mirror-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-mirror.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-2-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-2.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-important-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-important.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-isolation-expected.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-isolation-ref.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-filter.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask-large-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask-large-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask-large.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-plus-mask.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-reference-filter-mutated-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-reference-filter-mutated.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-scale-transform-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-scale-transform-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-scale-transform.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-svg-blur-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-svg-blur.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-transform-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-transform-popover-crash.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-transform-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-transform.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/crashtests/external-reference-in-interleaved-oof-crash.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/crashtests/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-backdrop-filter-transform-clip-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-backdrop-filter-transform-clip-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-backdrop-filter-transform-clip.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-filters-animation-brightness.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-filters-opacity-hit-testing-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/css-filters-opacity-hit-testing.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/drop-shadow-currentcolor-dynamic-003-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/drop-shadow-currentcolor-dynamic-003.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-002-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-002.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-003-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-003.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-004-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/empty-element-with-filter-004.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feComposite-intersection-feTile-input-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feComposite-intersection-feTile-input-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feComposite-intersection-feTile-input-svg-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feComposite-intersection-feTile-input-svg.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feComposite-intersection-feTile-input.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/fecolormatrix-negative-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/fecolormatrix-negative-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/fecolormatrix-negative.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/feimage-svg-image-with-nested-data-url-crash.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-region-html-content-viewport.tentative-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-region-html-content-viewport.tentative.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-sign-function-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-sign-function.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-subregion-01-expected.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-subregion-01-ref.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filter-subregion-01.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filters-drop-shadow-002.html:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filters-ref-brightness-001.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filters-ref-brightness-002.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filters-ref-brightness-003.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/hidpi-invert-filter-background-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/hidpi-invert-filter-background-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/hidpi-invert-filter-background.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/WEB_FEATURES.yml: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/flood-opacity-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/flood-opacity-computed.svg:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/flood-opacity-valid-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/flood-opacity-valid.svg:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/parsing/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-basic-blur-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-boundary-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-clip-rect-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-edge-clipping-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-edge-mirror-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-edge-pixels-2-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-plus-will-change-opacity-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-svg-blur-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filter-svg-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filters-grayscale-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filters-grayscale-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/backdrop-filters-grayscale-003-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/background-image-blur-repaint-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/clip-under-filter-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/clip-under-filter-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/clip-under-filter-003-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/drop-shadow-clipped-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/dynamic-filter-changes-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-add-hw-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-after-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-delete-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-displacement-negative-scale-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-003-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-004-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-lighting-no-light.tentative-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-local-url-with-base-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-merge-no-inputs.tentative-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-obb-dimensions-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-on-span-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-on-transparent-element-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-rename-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-rename-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/empty-element-with-filter-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-effect-remove-unattached-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-region-negative-positioned-child-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-region-transformed-child-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-region-transformed-composited-child-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-turbulence-invalid-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filter-url-to-non-existent-filter-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filters-drop-shadow-003-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filters-opacity-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/filters-opacity-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/green-100x100.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/green-98-100x100.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/reference-filter-update-on-attribute-change-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/remove-filter-repaint-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/repaint-added-backdrop-filter-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/root-element-with-opacity-filter-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-feflood-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-feimage-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-feoffset-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-relative-urls-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-relative-urls-002-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/resources/backdrop-filter-backdrop-root.css: Added.
(.container):
(.testcase):
(.testcase div):
(.testcase>div):
(.testcase>div>div):
(*):
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/resources/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/filtersubregion00.png: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/hueRotate.svg:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/simulate-backdrop-blur.js: Added.
(const.isAncestor):
(const.commonAncestor):
(const.computeOffset):
(const.cloneExcept):
(simulateBackdropBlur):
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/support/README: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/support/swatch-green.png: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/support/swatch-red.png: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/support/w3c-import.log: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/support/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-003-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-003.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-004-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-004.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-005-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-feimage-005.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/w3c-import.log:
* LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/295834@main
https://bugs.webkit.org/show_bug.cgi?id=293907

Reviewed by Darin Adler.

Adds types to represent inset, margins and padding:

    Style::InsetEdge (wraps WebCore::Length)
    Style::InsetBox (minimally serializing group of Style::InsetEdges)

    Style::MarginEdge (wraps WebCore::Length)
    Style::MarginBox (minimally serializing group of Style::MarginEdges)

    Style::PaddingEdge (wraps WebCore::Length)
    Style::PaddingBox (minimally serializing group of Style::PaddingEdges)

The edge types are purely zero-cost wrappers of `WebCore::Length`, meaning there
should be no runtime overhead here. The goal of the types is to enforce what
keywords (e.g. 'auto') and value ranges (all or nonnegative) are allowed.

Additionally, instead of allowing direct access to the underlying `WebCore::Length`
or to `WebCore::Length::value()`, the numeric value can be accessed via functions
like `tryFixed()` which return `std::optional<Style::Length<R>>`. This means the
old idiomatic way for getting the value:

```
    if (edge.isFixed())
        useValue(edge.value());
```

is now replaced with:

```
    if (auto fixedValue = edge.tryFixed())
        useValue(fixedValue->value);
```

This ensures that the numeric value is not used without checking the type.

To make these new types possible, a few infrastructure changes were needed:

- `Style::Blending` was enhanced to add a new `requiresInterpolationForAccumulativeIteration`
  function to allow delegating `Style::Interpolation::WrapperBase::requiresInterpolationForAccumulativeIteration`.
- `Style::Blending` was enhanced so that `canBlend` and the new `requiresInterpolationForAccumulativeIteration`
  are optional and have default values if not provided.
- `Style::Blending` was enhanced so that the dispatch functions now check which versions of
  the functions are implemented on the specializations allowing types to only implement the
  most advanced version they actually need.
- `Theme::controlPadding` was moved to `RenderTheme` to allow use of `Style::PaddingBox`.
  It is only called from `RenderTheme`.

There is quite a bit of duplication between the `*Edge` types that can and should be reduced
in follow on changes.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/ViewTimeline.cpp:
* Source/WebCore/css/CSSProperties.json:
* Source/WebCore/css/values/CSSValueAggregates.h:
* Source/WebCore/dom/Document.cpp:
* Source/WebCore/layout/Verification.cpp:
* Source/WebCore/layout/formattingContexts/FormattingGeometry.cpp:
* Source/WebCore/layout/formattingContexts/FormattingGeometry.h:
* Source/WebCore/layout/formattingContexts/block/BlockMarginCollapse.cpp:
* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:
* Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:
* Source/WebCore/page/PrintContext.cpp:
* Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:
* Source/WebCore/platform/Length.h:
* Source/WebCore/platform/LengthFunctions.cpp:
* Source/WebCore/platform/LengthFunctions.h:
* Source/WebCore/platform/RectEdges.h:
* Source/WebCore/platform/Theme.cpp:
* Source/WebCore/platform/Theme.h:
* Source/WebCore/platform/mac/ThemeMac.h:
* Source/WebCore/platform/mac/ThemeMac.mm:
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
* Source/WebCore/rendering/PositionedLayoutConstraints.cpp:
* Source/WebCore/rendering/PositionedLayoutConstraints.h:
* Source/WebCore/rendering/RenderBlock.cpp:
* Source/WebCore/rendering/RenderBlockFlow.cpp:
* Source/WebCore/rendering/RenderBox.cpp:
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
* Source/WebCore/rendering/RenderBoxModelObject.h:
* Source/WebCore/rendering/RenderBoxModelObjectInlines.h:
* Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:
* Source/WebCore/rendering/RenderElement.cpp:
* Source/WebCore/rendering/RenderFlexibleBox.cpp:
* Source/WebCore/rendering/RenderFlexibleBox.h:
* Source/WebCore/rendering/RenderGrid.cpp:
* Source/WebCore/rendering/RenderInline.cpp:
* Source/WebCore/rendering/RenderListMarker.cpp:
* Source/WebCore/rendering/RenderMenuList.cpp:
* Source/WebCore/rendering/RenderReplaced.cpp:
* Source/WebCore/rendering/RenderScrollbarPart.cpp:
* Source/WebCore/rendering/RenderTable.cpp:
* Source/WebCore/rendering/RenderTextInlines.h:
* Source/WebCore/rendering/RenderTheme.cpp:
* Source/WebCore/rendering/RenderTheme.h:
* Source/WebCore/rendering/adwaita/RenderThemeAdwaita.cpp:
* Source/WebCore/rendering/adwaita/RenderThemeAdwaita.h:
* Source/WebCore/rendering/ios/RenderThemeIOS.h:
* Source/WebCore/rendering/ios/RenderThemeIOS.mm:
* Source/WebCore/rendering/mac/RenderThemeMac.h:
* Source/WebCore/rendering/mac/RenderThemeMac.mm:
* Source/WebCore/rendering/style/RenderStyle.cpp:
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/RenderStyleInlines.h:
* Source/WebCore/rendering/style/RenderStyleSetters.h:
* Source/WebCore/rendering/style/StyleRareNonInheritedData.h:
* Source/WebCore/rendering/style/StyleSurroundData.cpp:
* Source/WebCore/rendering/style/StyleSurroundData.h:
* Source/WebCore/style/StyleAdjuster.cpp:
* Source/WebCore/style/StyleBuilderConverter.h:
* Source/WebCore/style/StyleBuilderCustom.h:
* Source/WebCore/style/StyleExtractorConverter.h:
* Source/WebCore/style/StyleExtractorCustom.h:
* Source/WebCore/style/StyleExtractorSerializer.h:
* Source/WebCore/style/StyleInterpolationFunctions.h:
* Source/WebCore/style/StyleInterpolationWrappers.h:
* Source/WebCore/style/values/StyleValueTypes.h:
* Source/WebCore/style/values/borders/StyleBoxShadow.cpp:
* Source/WebCore/style/values/borders/StyleBoxShadow.h:
* Source/WebCore/style/values/borders/StyleCornerShapeValue.h:
* Source/WebCore/style/values/box/StyleMargin.cpp: Added.
* Source/WebCore/style/values/box/StyleMargin.h: Added.
* Source/WebCore/style/values/box/StylePadding.cpp: Added.
* Source/WebCore/style/values/box/StylePadding.h: Added.
* Source/WebCore/style/values/color/StyleColor.cpp:
* Source/WebCore/style/values/color/StyleDynamicRangeLimit.h:
* Source/WebCore/style/values/position/StyleInset.cpp: Added.
* Source/WebCore/style/values/position/StyleInset.h: Added.
* Source/WebCore/style/values/primitives/StylePrimitiveNumericTypes+Blending.h:
* Source/WebCore/style/values/scroll-snap/StyleScrollMargin.cpp:
* Source/WebCore/style/values/scroll-snap/StyleScrollMargin.h:
* Source/WebCore/style/values/scroll-snap/StyleScrollPadding.cpp:
* Source/WebCore/style/values/scroll-snap/StyleScrollPadding.h:
* Source/WebCore/style/values/text-decoration/StyleTextShadow.cpp:
* Source/WebCore/style/values/text-decoration/StyleTextShadow.h:

Canonical link: https://commits.webkit.org/295835@main
…itorRulesForStore:`

https://bugs.webkit.org/show_bug.cgi?id=293802

Reviewed by Abrar Rahman Protyasha.

Fix the spelling for this staged declaration, from `ResouceMonitor` to `ResourceMonitor`.
Note that the new (fixed) name was introduced in rdar://152277854, so this change can't land until
that change is available in all relevant configurations.

* Source/WebCore/PAL/pal/spi/cocoa/WebPrivacySPI.h:
* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm:
(WebKit::ResourceMonitorURLsController::prepare):
(WebKit::ResourceMonitorURLsController::getSource):

Canonical link: https://commits.webkit.org/295836@main
https://bugs.webkit.org/show_bug.cgi?id=293958

Reviewed by Chris Dumez.

* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setIsRunningTest):
(WebKit::WebResourceLoadStatisticsStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::postTask):
(WebKit::WebResourceLoadStatisticsStore::destroyResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::populateMemoryStoreFromDisk):
(WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
(WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
(WebKit::WebResourceLoadStatisticsStore::statisticsDatabaseHasAllTables):
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::setThirdPartyCookieBlockingMode):
(WebKit::WebResourceLoadStatisticsStore::setSameSiteStrictEnforcementEnabled):
(WebKit::WebResourceLoadStatisticsStore::setFirstPartyWebsiteDataRemovalMode):
(WebKit::WebResourceLoadStatisticsStore::setPersistedDomains):
(WebKit::WebResourceLoadStatisticsStore::setStandaloneApplicationDomain):
(WebKit::WebResourceLoadStatisticsStore::setAppBoundDomains):
(WebKit::WebResourceLoadStatisticsStore::setManagedDomains):
(WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):
(WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setTimeAdvanceForTesting):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setLastSeen):
(WebKit::WebResourceLoadStatisticsStore::mergeStatisticForTesting):
(WebKit::WebResourceLoadStatisticsStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setMostRecentWebPushInteractionTime):
(WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameDomain):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::domainIDExistsInDatabase):
(WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
(WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
(WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
(WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
(WebKit::WebResourceLoadStatisticsStore::removeDataForDomain):
(WebKit::WebResourceLoadStatisticsStore::registrableDomains):
(WebKit::WebResourceLoadStatisticsStore::registrableDomainsWithLastAccessedTime):
(WebKit::WebResourceLoadStatisticsStore::registrableDomainsExemptFromWebsiteDataDeletion):
(WebKit::WebResourceLoadStatisticsStore::aggregatedThirdPartyData):
(WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting):
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* Source/WebKit/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations:

Canonical link: https://commits.webkit.org/295837@main
…sing connection, leading to use after free

https://bugs.webkit.org/show_bug.cgi?id=289571
rdar://146475370

Reviewed by Sihui Liu.

This fixes the bug by printing an error and returning empty data if an error happens with the database

* LayoutTests/ipc/coreipc.js:
(splitClassAndFunction):
(CoreIPCClass.prototype.initializeMessageByName):
(CoreIPCClass.prototype.initializeMessages):
(CoreIPCClass.prototype.generateSendingFunction):
(export.StreamConnectionInterface):
(export.StreamConnectionInterface.prototype.getIdentifier):
(export.StreamConnectionInterface.prototype.initializeMessages):
(export.StreamConnectionInterface.prototype.generateStreamSendingFunction):
(export.ArgumentSerializer.parseTemplate):
(export.ArgumentSerializer):
* LayoutTests/ipc/storage-area-cache-use-after-free-expected.txt: Added.
* LayoutTests/ipc/storage-area-cache-use-after-free.html: Added.
* Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.cpp:
(WebKit::SQLiteStorageArea::allItems):

Originally-landed-as: 289651.283@safari-7621-branch (7719e167beea). rdar://151707003
Canonical link: https://commits.webkit.org/295838@main
https://bugs.webkit.org/show_bug.cgi?id=294021
rdar://152574325

Reviewed by Ryosuke Niwa.

Apply https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines more
strictly to existing code so bad patterns have less of a chance of
getting copied.

Canonical link: https://commits.webkit.org/295839@main
…WorkerClientInternal with the older id

https://bugs.webkit.org/show_bug.cgi?id=294013
rdar://152339634

Reviewed by Chris Dumez.

For maps, we only use the UUID but within m_clientIdentifiersPerOrigin, we use a Vector, where the process identifier matters for equality.
We thus need to use the previously registered ID (with the previous process) instead of the ID with the new process ID.

* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::registerServiceWorkerClient):

Canonical link: https://commits.webkit.org/295840@main
https://bugs.webkit.org/show_bug.cgi?id=294014
rdar://152567851

Reviewed by Ryosuke Niwa.

Apply https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines more
strictly to existing code so bad patterns have less of a chance of
getting copied.

This is the final patch in this series. The remainder are an exercise
for the reader.

Canonical link: https://commits.webkit.org/295841@main
…igin

rdar://152269409
https://bugs.webkit.org/show_bug.cgi?id=293763

Reviewed by Per Arne Vollan.

To match the behavior in other browsers.

* LayoutTests/imported/w3c/web-platform-tests/file-system-access/opaque-origin.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/opaque-origin.https.window-expected.txt:
* Source/WebCore/Modules/storage/StorageManager.cpp:
(WebCore::connectionInfo):
(WebCore::StorageManager::persisted):
(WebCore::StorageManager::persist):
(WebCore::StorageManager::estimate):
(WebCore::StorageManager::fileSystemAccessGetDirectory):

Canonical link: https://commits.webkit.org/295843@main
https://bugs.webkit.org/show_bug.cgi?id=289572
rdar://144699810

Reviewed by Alex Christensen.

Make content extension rules apply to DNS prefetch and preconnect, just as they already do for prefetch
and normal loads.

* LayoutTests/http/tests/contentextensions/dns-prefetch-blocked-expected.txt: Added.
* LayoutTests/http/tests/contentextensions/dns-prefetch-blocked.html: Added.
* LayoutTests/http/tests/contentextensions/dns-prefetch-blocked.html.json: Added.
* LayoutTests/http/tests/contentextensions/preconnect-blocked-expected.txt: Added.
* LayoutTests/http/tests/contentextensions/preconnect-blocked.html: Added.
* LayoutTests/http/tests/contentextensions/preconnect-blocked.html.json: Added.
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::prefetchDNSIfNeeded):
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/LinkLoader.cpp:
(WebCore::LinkLoader::preconnectIfNeeded):
(WebCore::LinkLoader::loadLink):
* Source/WebCore/loader/LoaderStrategy.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::preconnectTo):
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::sendTapHighlightForNodeIfNecessary):
* Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp:
(WebResourceLoadScheduler::preconnectTo):
* Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h:

Originally-landed-as: 289651.274@safari-7621-branch (3af4bf0136a9). rdar://151707262
Canonical link: https://commits.webkit.org/295844@main
https://bugs.webkit.org/show_bug.cgi?id=294050
rdar://problem/152609927

Reviewed by Chris Dumez.

This should be enough to remove ComplexTextController.cpp
from UncheckedCallArgsCheckerExpectations once [1] on the
static analyzer gets resolved.

We have 2 remaining failures here due to [1] regarding members of TextLayout.

* Source/WebCore/platform/graphics/ComplexTextController.h:

[1] llvm/llvm-project#142485

Canonical link: https://commits.webkit.org/295845@main
mnutt and others added 28 commits June 10, 2025 13:51
This reverts commit f5e4733.

Not available in qt 6.6.
The Qt port's FrameLoaderClientQt::createHistoryItemTree() was returning
nullptr, preventing history items from being created and added to the
BackForwardList. This broke back/forward navigation functionality.

Fix by implementing createHistoryItemTree() to match the Mac version,
which calls the HistoryController to create proper history item trees.
Remove ASSERT(glyphList.size() <= 1) in rawFontForCharacters() as Qt's
QTextLayout can legitimately produce multiple glyph runs for complex text
like combining characters, ligatures, or mixed scripts. This assertion
was inconsistent with how other Qt code in WebKit handles multiple glyph
runs (see FontCascadeQt.cpp) and other platform implementations which
handle font fallback gracefully without assertions.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The URL bar was showing the previous URL instead of updating immediately
during back/forward navigation. This was caused by coreFrameUrl() returning
the current document URL instead of the target navigation URL.

Fix by checking if there's an active document loader with a different URL
and returning that target URL instead. This ensures the URL bar updates
synchronously with back/forward navigation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
It makes it difficult to read CI logs because they get truncated.
@mnutt mnutt mentioned this pull request Jun 26, 2025
@mnutt mnutt merged commit 88e7476 into master Jul 30, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.