Skip to content

upgrade webkit again - #48

Merged
Jarred-Sumner merged 123 commits into
mainfrom
jarred/upgrade-again
Apr 5, 2024
Merged

Jarred-Sumner merged 123 commits into
mainfrom
jarred/upgrade-again

Conversation

@Jarred-Sumner

Copy link
Copy Markdown
Collaborator

upgrade webkit again

csaavedra and others added 30 commits April 3, 2024 04:02
https://bugs.webkit.org/show_bug.cgi?id=271836

Reviewed by Carlos Garcia Campos.

Remove the ArgumentCoders for SelectionData, adapt the
class a bit to make it work well with the generated serializers,
and add a new ArgumentCodersGtk.serialization.in for the
GTK-specific serializers.

* Source/WebCore/platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::typesSafeForBindings):
(WebCore::Pasteboard::readOrigin):
(WebCore::Pasteboard::readStringInCustomData):
* Source/WebCore/platform/gtk/SelectionData.cpp:
(WebCore::SelectionData::SelectionData):
* Source/WebCore/platform/gtk/SelectionData.h:
(WebCore::SelectionData::setImage):
(WebCore::SelectionData::image const):
(WebCore::SelectionData::customData const):
* Source/WebKit/PlatformGTK.cmake:
* Source/WebKit/Shared/gtk/ArgumentCodersGtk.cpp:
(IPC::encodeImage): Deleted.
(IPC::decodeImage): Deleted.
(IPC::ArgumentCoder<SelectionData>::encode): Deleted.
(IPC::ArgumentCoder<SelectionData>::decode): Deleted.
* Source/WebKit/Shared/gtk/ArgumentCodersGtk.h:
* Source/WebKit/Shared/gtk/ArgumentCodersGtk.serialization.in: Added.
* Source/WebKit/UIProcess/API/gtk/DragSourceGtk3.cpp:
(WebKit::DragSource::DragSource):
* Source/WebKit/UIProcess/gtk/ClipboardGtk3.cpp:
(WebKit::Clipboard::write):

Canonical link: https://commits.webkit.org/276991@main
…constantly failing.

https://bugs.webkit.org/show_bug.cgi?id=271784
rdar://125504723

Reviewed by Tim Horton.

This patch addresses the following failed tests:
- fast/viewport/viewport-legacy-xhtmlmp.html
- fast/viewport/viewport-legacy-xhtmlmp-remove-and-add.html

Both tests use the XHTML Mobile Profile (XHTML-MP) doctype, but this is
not reflected in the document's resolved viewport configuration. The
test output shows that the viewport's width is equivalent to the default
desktop width (980) and the minimum scale is equivalent to the ratio
between the XHTML mobile paramaters width (320) and the default desktop
width.

This patch updates the viewport configuration to XHTML-MP parameters and
provides the right viewport origin type (CSSDeviceAdaption) if the web
page's viewport configuration is being reset and the page has a mobile
doctype, like for the failing tests. This way, We make sure the document
throws away the stale viewport arguments with desktop values and instead
respects the mobile profile, but only if the exisitng viewport arguments
were not configured through a meta tag, since that takes priority over
XHTML-MP.

Lastly, we improve conformance to current smart pointer usage guidelines
with drive-by refactors in WebPage::resetViewportDefaultConfiguration
and in Document::updateViewportArguments.

* LayoutTests/fast/viewport/viewport-legacy-xhtmlmp-remove-and-add.html:
* LayoutTests/fast/viewport/viewport-legacy-xhtmlmp.html:

Update viewport spec link in the test comments.

* LayoutTests/platform/ios/TestExpectations:

Fix test expectations.

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::isViewportDocument const):

Make the lambda function from Document::updateViewportArguments a member
function so we can call it in WebPage::resetViewportDefaultConfiguration
as well.

Also, slight smart pointer hygiene improvements.

(WebCore::Document::updateViewportArguments):
* Source/WebCore/dom/Document.h:

* Source/WebCore/dom/ViewportArguments.h:

Rearrange the ViewportArguments::Type cases to reflect that viewport
arguments obtained from a meta tag are prioritized over XHTML-MP.

* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetViewportDefaultConfiguration):

If we have received a mobile doctype, and we have a viewport document,
update the viewport configuration to reflect that of the XHTML-MP. Call
WebPage::viewportPropertiesDidChange to propagate these changes.

Also, slight smart pointer hygiene improvements.

Canonical link: https://commits.webkit.org/276992@main
https://bugs.webkit.org/show_bug.cgi?id=272076
rdar://125837628

Reviewed by Antoine Quint.

We may compute wrong starting style for elements that require style adjustments. This may have observable effects.

* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/starting-style-adjustment-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/starting-style-adjustment.html: Added.

<legend> is always blockified per HTML spec. Test we don't trigger a transition based on before-adjustment value.

* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveStartingStyle const):

The pseudo-element logic was reversed.

Canonical link: https://commits.webkit.org/276993@main
…ts is provided

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

Reviewed by Carlos Garcia Campos.

The spec states that if an odd number of elements is provided within dash array,
the array should be repeated to yield an even number of elements.
Therefore e.g. 1,2,3 should become 1,2,3,1,2,3.
* Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:
(WebCore::GraphicsContextSkia::setLineDash):

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

Reviewed by Carlos Garcia Campos.

GraphicsContextSkia::drawPattern is being invoked only when the pattern repetition is expected.
Hence this change removes spurious conditional repetition.

* Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:
(WebCore::GraphicsContextSkia::drawPattern):

Canonical link: https://commits.webkit.org/276995@main
https://bugs.webkit.org/show_bug.cgi?id=271936
<rdar://125661316>

Unreviewed build fix.

* Source/WebKit/Configurations/WebKit.xcconfig:
(OTHER_LDFLAGS_DELAY_INIT):
* Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
(OTHER_LDFLAGS_DELAY_INIT):
- Define empty OTHER_LDFLAGS_DELAY_INIT for tvOS, visionOS and watchOS.
  CoreTelephony.framework only needs to be linked on iOS/iPadOS.

Canonical link: https://commits.webkit.org/276996@main
…can hold

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

Reviewed by Carlos Garcia Campos.

Add a soft limit to the amount of memory that BitmapTexturePool can hold. When
the limit is reached, be more aggressive trying to release the stored textures.

* Source/WebCore/PlatformWPE.cmake:
* Source/WebCore/platform/graphics/texmap/BitmapTexturePool.cpp:
(WebCore::BitmapTexturePool::BitmapTexturePool):
(WebCore::BitmapTexturePool::acquireTexture):
(WebCore::BitmapTexturePool::scheduleReleaseUnusedTextures):
(WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired):
(WebCore::BitmapTexturePool::enterLimitExceededModeIfNeeded):
(WebCore::BitmapTexturePool::exitLimitExceededModeIfNeeded):
* Source/WebCore/platform/graphics/texmap/BitmapTexturePool.h:

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

Reviewed by Carlos Garcia Campos.

* Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:

Canonical link: https://commits.webkit.org/276998@main
https://bugs.webkit.org/show_bug.cgi?id=272011
<rdar://125726764>

Reviewed by Antti Koivisto.

When negative letter-spacing produces negative hyphen width, we think there's some actual
available space for content (subtracting a negative value) which confuses TextUtil::breakWord logic.

This patch ensures we never inflate horizontal available space.

* LayoutTests/fast/text/negative-hyphen-width-with-break-word-expected.txt: Added.
* LayoutTests/fast/text/negative-hyphen-width-with-break-word.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:
(WebCore::Layout::InlineContentBreaker::tryHyphenationAcrossOverflowingInlineTextItems const):
* Source/WebCore/layout/formattingContexts/inline/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::breakWord):

Canonical link: https://commits.webkit.org/276999@main
…ility() when inline media controls are presented

https://bugs.webkit.org/show_bug.cgi?id=271972
<rdar://125502350>

Reviewed by Antti Koivisto.

ContentChangeObserver::isConsideredActionableContent is called when we finished updating the element (see RenderTreeUpdater::updateElementRenderer)
meaning computed style (including descendants) should be all up-to-date.

* Source/WebCore/dom/Node.cpp:
(WebCore::Node::willRespondToMouseClickEvents const):
* Source/WebCore/dom/Node.h:
* Source/WebCore/page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::isConsideredActionableContent const):

Canonical link: https://commits.webkit.org/277000@main
…tionEnabled) by default

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

Reviewed by Rob Buis.

With the implementation added in 275438@main it seems there are no
remaining issues with this feature.

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

Canonical link: https://commits.webkit.org/277001@main
…::updateLayoutIfDimensionsOutOfDate

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

Reviewed by Antti Koivisto.

1. Fix FIXME in Document::DimensionsCheck. All is indeed Width | Height. Let's use that in the incoming OptionSet instead.
2. When parent document is dirty, let's just run updateLayout and return right away instead of going through the "can we optimize case" codepath (it saves calling updateRelevancyOfContentVisibilityElements/updateStyleIfNeeded twice)
3. Move isVertical/hasSpecifiedLogicalHeight/checkingLogicalWidth/checkingLogicalHeight inside [if (!requireFullLayout) { }] where they are actually used.
4. requireFullLayout should just read "element.renderer()->needsLayout() || is<HTMLInputElement>(element)" at this point (accessing const needsLayout() should not require a CheckedPtr)

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):
* Source/WebCore/dom/Document.h:
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

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

Reviewed by Chris Dumez.

* Source/WebCore/dom/FragmentDirectiveGenerator.h:
The m_isValid private field is unused (introduced in 274919@main).

Canonical link: https://commits.webkit.org/277003@main
…within a visibility:hidden container

https://bugs.webkit.org/show_bug.cgi?id=271995
rdar://problem/125738704

Reviewed by Andres Gonzalez.

When `visibility:visible` is placed within a `visibility:hidden` container, the elements within are rendered. But currently,
`AccessibilityNodeObject::textUnderElement` stops immediately when encountering `visibility:hidden`, meaning we can miss
this nested `visibility:visible` text.

With this patch, when encountering a hidden style, we still search the subtree for text that isn't hidden.

This patch also fixes a bug where we never updated the cached accessibility text of controls associated with a label
via the for attribute when the for attribute of that label changes.

* LayoutTests/accessibility/button-hidden-and-unhidden-text-expected.txt: Added.
* LayoutTests/accessibility/button-hidden-and-unhidden-text.html: Added.
* LayoutTests/accessibility/hidden-label-expected.txt: Added.
* LayoutTests/accessibility/hidden-label.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/accname/name/comp_hidden_not_referenced-expected.txt:
* LayoutTests/platform/glib/accessibility/button-hidden-and-unhidden-text-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/hidden-label-expected.txt: Added.
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/ios/accessibility/hidden-label-expected.txt: Added.
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::TextUnderElementMode::isHidden):
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::isDOMHidden):
(WebCore::AXObjectCache::addLabelForRelation):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityMathMLElement.cpp:
(WebCore::AccessibilityMathMLElement::textUnderElement const):
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::textUnderElement const):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isDOMHidden const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::textUnderElement const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::removeNode):

Canonical link: https://commits.webkit.org/277004@main
https://bugs.webkit.org/show_bug.cgi?id=272035
rdar://125618287

Reviewed by Mike Wyrzykowski.

The pointer rewriter needs to delete phony assignments when the right-hand side
is a pointer, but it fails to visit the assignment when it's not a pointer. I also
fixed a compilation error in wgslc due to some recent refactoring to use std::span.

* Source/WebGPU/WGSL/PointerRewriter.cpp:
(WGSL::PointerRewriter::visit):
* Source/WebGPU/WGSL/tests/valid/array-length.wgsl:
* Source/WebGPU/WGSL/wgslc.cpp:
(runWGSL):

Canonical link: https://commits.webkit.org/277005@main
…curityPolicy/block-all-mixed-content/insecure-script-in-iframe.html is a consistent failure

https://bugs.webkit.org/show_bug.cgi?id=271892
rdar://125615616

Reviewed by Chris Dumez.

The HTML script tag triggers first a preload then an actual load.
Both are checked for CSP and in WK1, both will expose a console message, contrary to WK2 where only one console message appears.
Add a WK1 specific test expectation to handle this case.

* LayoutTests/platform/mac-wk1/TestExpectations:
* LayoutTests/platform/mac-wk1/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-expected.txt: Added.

Canonical link: https://commits.webkit.org/277006@main
…edFormListedElement::updateValidity

https://bugs.webkit.org/show_bug.cgi?id=272044
rdar://117727866

Reviewed by Ryosuke Niwa.

It speculatively fixes a bug that RadioButtonGroup::m_members may contain a nullptr WeakRef.

* Source/WebCore/dom/RadioButtonGroups.cpp:
(WebCore::RadioButtonGroup::isEmpty const):
(WebCore::RadioButtonGroup::remove):
(WebCore::RadioButtonGroup::setNeedsStyleRecalcForAllButtons):
(WebCore::RadioButtonGroup::updateValidityForAllButtons):

Canonical link: https://commits.webkit.org/277007@main
https://bugs.webkit.org/show_bug.cgi?id=272054
rdar://125792901 (Github api should not assume the current user as the fork owner)

Reviewed by Jonathan Bedard.

Canonical link: https://commits.webkit.org/277008@main
…:rendererForLayoutBox

https://bugs.webkit.org/show_bug.cgi?id=271908
<rdar://125580307>

Reviewed by Antti Koivisto.

1. IFC produces display boxes. BoxTree contains all the layout boxes as well as a map to find associated renders.
2. Content mutation destroys a renderer
  - IFC invalidates the relevant lines and detaches the layout box
    However we keep the layout box around until after the next layout when the associated display boxes get invalidated as well.
3. While display box should be self contained, we consult the renderer for selection state (not on the display box).
-> RELEASE_ASSERT.

This is a temporary fix until after we either keep the associated renderer alive (like we do with the layout box) or transfer all states to display box
so that we don't need to talk to the renderer anymore).

* LayoutTests/TestExpectations:
* LayoutTests/fast/text/remove-renderer-and-select-crash-expected.txt: Added.
* LayoutTests/fast/text/remove-renderer-and-select-crash.html: Added.
* Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp:
(WebCore::LayoutIntegration::BoxTree::hasRendererForLayoutBox const):
* Source/WebCore/layout/integration/LayoutIntegrationBoxTree.h:
* Source/WebCore/layout/integration/inline/InlineIteratorBox.cpp:
(WebCore::InlineIterator::Box::selectionState const):
* Source/WebCore/layout/integration/inline/InlineIteratorBox.h:
(WebCore::InlineIterator::Box::hasRenderer const):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxLegacyPath.h:
(WebCore::InlineIterator::BoxLegacyPath::hasRenderer const):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::hasRenderer const):
* Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.cpp:
(WebCore::LayoutIntegration::InlineContent::hasRendererForLayoutBox const):
* Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::hasRendererForLayoutBox const):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:

Canonical link: https://commits.webkit.org/277009@main
https://bugs.webkit.org/show_bug.cgi?id=251420
rdar://104853422

Reviewed by Yusuke Suzuki.

Added code to check the type of filesystem object the JSC shell is trying to load via stat() and fstat().
We return an error message when thrying to open some non-file object.

* Source/JavaScriptCore/jsc.cpp:
(fillBufferWithContentsOfFile):

Canonical link: https://commits.webkit.org/277010@main
https://bugs.webkit.org/show_bug.cgi?id=272034
rdar://125787240

Unreviewed follow-up fix.

We were removing the "simulator" flag in our configurations, because configurations
which are not simulator leave this flag undefined instead of 'false'.

* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/configuration.js:
(Configuration.prototype.toParams): Strip architecture if it matches the default.
* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/dashboard.js:
(Dashboard.prototype.reload):

Canonical link: https://commits.webkit.org/277011@main
…or if an issue occurred.

https://bugs.webkit.org/show_bug.cgi?id=271998
rdar://124625910

Reviewed by Timothy Hatcher.

We should notify apps if there was an issue in deleting or calculating extension storage.
If an error occurs, apps can decide to show an alert to their users. We add a test for this
unfortunately because I tested manually by forcing an error (e.g. result = makeUnexpected("error"))
and I verified _WKWebExtensionDataRecord.errors was populated in Safari.

* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm:
(-[_WKWebExtensionSQLiteStore _deleteDatabase]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.h:
(NS_ERROR_ENUM):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecord.mm:
(WebKit::createDataRecordError):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecordInternal.h:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::getDataRecords):
(WebKit::WebExtensionController::getDataRecord):
(WebKit::WebExtensionController::removeData):
(WebKit::WebExtensionController::calculateStorageSize):
(WebKit::WebExtensionController::removeStorage):

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDataRecordCocoa.mm:
Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionDataRecordInternal.h.
(WebKit::WebExtensionDataRecord::setError):
Sets an error on the corresponding _WKWebExtensionDataRecord.

* Source/WebKit/UIProcess/Extensions/Cocoa/_WKWebExtensionStorageSQLiteStore.mm:
(-[_WKWebExtensionStorageSQLiteStore getValuesForKeys:completionHandler:]):
(-[_WKWebExtensionStorageSQLiteStore getStorageSizeForKeys:completionHandler:]):
(-[_WKWebExtensionStorageSQLiteStore getStorageSizeForAllKeysIncludingKeyedData:withCompletionHandler:]):
Add additional logging when an error occurs.

* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionDataRecord.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/277012@main
rdar://125828604
https://bugs.webkit.org/show_bug.cgi?id=272073

Reviewed by Chris Dumez.

Enable Web codecs, media recorder and speech recognition compilation flags on tvOS.
Update MediaRecorder code to use more softlinking.

* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
* Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
* Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:
* Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderProvider.cpp:
(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Canonical link: https://commits.webkit.org/277013@main
https://bugs.webkit.org/show_bug.cgi?id=272075
rdar://125791668

Reviewed by Chris Dumez.

Test: WKApplicationManifest.EmptyJSONData
      WKApplicationManifest.JSONDataEncoding

* Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(-[_WKApplicationManifest initWithJSONData:manifestURL:documentURL:]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm:
(TestWebKitAPI::TEST(WKApplicationManifest, EmptyJSONData)):
(TestWebKitAPI::TEST(WKApplicationManifest, JSONDataEncoding)):

Canonical link: https://commits.webkit.org/277014@main
…ject fails to render scrollbars

https://bugs.webkit.org/show_bug.cgi?id=261227
rdar://115075206

Reviewed by Simon Fraser.

Keep NSScrollerImps in the web process for scrollers inside svg foreignObject as
they don't follow the normal code path for creating scrollbars in the UI process.

* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::usesOverlayScrollbars const):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
* Source/WebCore/platform/mac/NSScrollerImpDetails.h:
* Source/WebCore/platform/mac/NSScrollerImpDetails.mm:
(WebCore::ScrollerStyle::usesOverlayScrollbars):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::registerScrollbarsForScrollableAreaInSVGForeignObject):
(WebCore::RenderLayer::updateAncestorDependentState):
* Source/WebCore/rendering/RenderLayer.h:
(WebCore::RenderLayer::isInsideSVGForeignObject const):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.mm:
(WebKit::RemoteScrollbarsController::shouldRegisterScrollbars const):

Canonical link: https://commits.webkit.org/277015@main
…html under gtk since it is a glib-only test.

https://bugs.webkit.org/show_bug.cgi?id=271980
<rdar://problem/125730582>

Unreviewed test gardening.

Followup to https://bugs.webkit.org/show_bug.cgi?id=271844.

* LayoutTests/accessibility/combobox/combobox-collapsed-selection-changed-expected.txt: Removed.
* LayoutTests/accessibility/combobox/gtk/combobox-collapsed-selection-changed-expected.txt: Renamed from LayoutTests/platform/glib/accessibility/combobox/combobox-collapsed-selection-changed-expected.txt.
* LayoutTests/accessibility/combobox/gtk/combobox-collapsed-selection-changed.html: Renamed from LayoutTests/accessibility/combobox/combobox-collapsed-selection-changed.html.
* LayoutTests/platform/mac/TestExpectations:

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

Reviewed by Brady Eidson.

* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPU.serialization.in:
* Source/WebCore/platform/PlatformMediaError.h:
* Source/WebCore/svg/SVGPreserveAspectRatioValue.h:
* Source/WebKit/GPUProcess/graphics/PathSegment.serialization.in:
* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/Shared/cf/CoreIPCCGColorSpace.serialization.in:
* Source/WebKit/UIProcess/WebProcessProxy.messages.in:
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemoteMessageReceiver.messages.in:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/WebProcess/WebProcess.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(SerializedTypeInfo)):

Canonical link: https://commits.webkit.org/277017@main
…delegate.html with --site-isolation

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

Reviewed by Per Arne Vollan.

This fixes two issues.  The first is that the test calls window.open with _top as the second parameter,
and when running with --site-isolation the top frame is a RemoteFrame, so I moved a few dynamicDowncast<LocalFrame>
calls from LocalDOMWindow::open to only be where we really need a LocalFrame.

The second issue is that we were calling WebProcessProxy::fontdMachExtensionHandles multiple times for the same
process, which caused an assertion and is unnecessary.  Fix that by only calling it once per process, since
it is a process-global thing.

This makes the test pass except for another change needed to printNavigationErrorMessage which I'll do in a separate
PR because that will need to remove the frame URL of the frame we attempted to navigate, which is unavailable and
should not be available if it is a RemoteFrame.  I'll do that in a separate PR because it'll require updating 64
test expectations files.

* Source/WebCore/page/LocalDOMWindow.cpp:
(WebCore::LocalDOMWindow::open):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry):
* Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::fontdMachExtensionHandles):
(WebKit::WebProcessProxy::fontdMachExtensionHandles const): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* Source/WebKit/UIProcess/WebProcessProxy.h:

Canonical link: https://commits.webkit.org/277018@main
…g imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-video.html to constantly crash

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

Reviewed by Darin Adler.

Normally, when we do `RenderElement::layout()`, we first lay out its
children and then clear the `needsLayout` flag. When assertions are
enabled, in `RenderObject::clearNeedsLayout()` we check that
block-positioned children don't need layout.

But if the element is skipped for layout, we call
`RenderElement::clearNeedsLayoutForSkippedContent()` instead.

As the first step, this method calls `RenderObject::clearNeedsLayout()`
on every descendent. Note that it won't lay out the descendant's
children but will still check that the block-positioned children of the
descendent don't need layout, which might be false and cause the
assertion to fail.

This patch implements `descendantsOfTypePostOrder<T>()` function which
is then used to guarantee that `RenderElement`'s needs-layout flag is
always cleared after its children.

* LayoutTests/platform/gtk/TestExpectations:
* LayoutTests/platform/wk2/TestExpectations:
* Source/WebCore/rendering/RenderDescendantIterator.h:
(WebCore::RenderDescendantPostOrderIterator<T>::RenderDescendantPostOrderIterator):
(WebCore::RenderDescendantPostOrderIterator<T>::operator):
(WebCore::RenderDescendantPostOrderConstIterator<T>::RenderDescendantPostOrderConstIterator):
(WebCore::RenderDescendantPostOrderConstIterator<T>::operator):
(WebCore::RenderDescendantPostOrderIteratorAdapter<T>::RenderDescendantPostOrderIteratorAdapter):
(WebCore::RenderDescendantPostOrderIteratorAdapter<T>::begin):
(WebCore::RenderDescendantPostOrderIteratorAdapter<T>::end):
(WebCore::RenderDescendantPostOrderIteratorAdapter<T>::at):
(WebCore::RenderDescendantPostOrderConstIteratorAdapter<T>::RenderDescendantPostOrderConstIteratorAdapter):
(WebCore::RenderDescendantPostOrderConstIteratorAdapter<T>::begin const):
(WebCore::RenderDescendantPostOrderConstIteratorAdapter<T>::end const):
(WebCore::RenderDescendantPostOrderConstIteratorAdapter<T>::at const):
(WebCore::descendantsOfTypePostOrder):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::clearNeedsLayoutForSkippedContent):
* Source/WebCore/rendering/RenderIterator.h:
(WebCore::RenderPostOrderIterator::operator bool const):
(WebCore::RenderPostOrderConstIterator::operator bool const):
(WebCore::RenderObjectPostOrderTraversal::next):
(WebCore::RenderPostOrderTraversal::firstWithin):
(WebCore::RenderPostOrderTraversal::next):
(WebCore::RenderPostOrderIterator<T>::RenderPostOrderIterator):
(WebCore::RenderPostOrderIterator<T>::traverseNext):
(WebCore::RenderPostOrderIterator<T>::operator):
(WebCore::= const):
(WebCore::RenderPostOrderConstIterator<T>::RenderPostOrderConstIterator):
(WebCore::RenderPostOrderConstIterator<T>::traverseNext):
(WebCore::RenderPostOrderConstIterator<T>::operator const):
(WebCore:: const):

Canonical link: https://commits.webkit.org/277019@main
https://bugs.webkit.org/show_bug.cgi?id=271993
rdar://125737157

Reviewed by Ryosuke Niwa.

This will enable zombie-mode CheckedPtr.

It's also just good performance hygiene.

The two major changes in this patch are:

(1) Declare your type when you inherit from CanMakeCheckedPtr, like we do for
RefCounted and CanMakeWeakPtr. We use this to do our FastMalloc static_assert.
(In future, I also plan to use this type to share our implementation with other
lifetime schemes.) Fixed any classes that violated the FastMalloc static_assert.

(2) Moved CanMakeCheckedPtr down from abstract base classes into concrete
subclasses. It's not possible for abstract base classes to require or
demonstrate that a class uses FastMalloc, or has any other concrete allocation
or destruction behavior. Abstract base classes that require a CheckedPtr
interface now make that part of their abstract API. (In future we need to do
this for CanMakeWeakPtr too. We've already done it for RefCounted.) It's a bit
more obvious now which classes have overlapping / wasteful lifetime
implementations. We can clean that up soon.

* Source/WTF/wtf/CheckedRef.h:

(WTF::CanMakeCheckedPtrBase::~CanMakeCheckedPtrBase): Moved the FastMalloc
assertion here because CheckedPtr needs to support abstract base classes that
don't know how they're allocated. This is logically clearer: CheckedPtr just
invokes your checking API and doesn't care how you check; only CanMakeCheckedPtr
will depend on FastMalloc.

* Source/WebCore/Modules/speech/SpeechRecognitionCaptureSourceImpl.h: (2)

* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/animation/DocumentTimelinesController.h:
* Source/WebCore/bindings/js/ScriptController.h:
* Source/WebCore/dom/CustomElementDefaultARIA.h:
* Source/WebCore/dom/CustomElementReactionQueue.h:
* Source/WebCore/dom/DocumentMarkerController.h:
* Source/WebCore/dom/EventLoop.h:
* Source/WebCore/dom/ExtensionStyleSheets.h:
* Source/WebCore/dom/FullscreenManager.h:
* Source/WebCore/dom/IdTargetObserver.h:
* Source/WebCore/dom/IdTargetObserverRegistry.h: (1)

* Source/WebCore/dom/PendingScriptClient.h: (2)
* Source/WebCore/dom/RejectedPromiseTracker.h: (1)
* Source/WebCore/dom/ScriptRunner.h: (2)

* Source/WebCore/dom/VisitedLinkState.h:
* Source/WebCore/dom/messageports/MessagePortChannelRegistry.h:
* Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h:
* Source/WebCore/editing/Editor.h:
* Source/WebCore/editing/FrameSelection.h:
* Source/WebCore/editing/TextManipulationController.h:
* Source/WebCore/history/BackForwardController.h:
* Source/WebCore/history/CachedPage.h: (1)

* Source/WebCore/html/parser/HTMLDocumentParser.h: (2)

* Source/WebCore/layout/integration/flex/LayoutIntegrationFlexLayout.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::incrementPtrCount const): Deleted.
(WebCore::Layout::Box::decrementPtrCount const): Deleted.
* Source/WebCore/loader/FrameLoader.cpp:
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/HistoryController.h:
* Source/WebCore/loader/NavigationScheduler.h:
* Source/WebCore/loader/ProgressTracker.h:
* Source/WebCore/loader/ThreadableLoaderClient.h:
* Source/WebCore/page/AlternativeTextClient.h:
* Source/WebCore/page/DeviceController.h:
* Source/WebCore/page/DiagnosticLoggingClient.h:
* Source/WebCore/page/EditorClient.h:
* Source/WebCore/page/ElementTargetingController.h:
* Source/WebCore/page/EventHandler.h:
* Source/WebCore/page/FocusController.h:
* Source/WebCore/page/LocalFrameViewLayoutContext.h:
* Source/WebCore/page/PageConsoleClient.h:
* Source/WebCore/page/csp/ContentSecurityPolicy.h:
* Source/WebCore/page/scrolling/ScrollingStateTree.h:
* Source/WebCore/platform/KeyboardScrollingAnimator.h:
* Source/WebCore/platform/OrientationNotifier.h:
* Source/WebCore/platform/ScrollView.h:
* Source/WebCore/platform/ScrollableArea.cpp:
* Source/WebCore/platform/ScrollableArea.h: (1)

* Source/WebCore/platform/cocoa/PlaybackSessionModel.h:
* Source/WebCore/platform/cocoa/VideoPresentationModel.h:
* Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm: (2)

* Source/WebCore/platform/graphics/DisplayRefreshMonitorClient.h: (1)

* Source/WebCore/platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::FontCascade):
(WebCore::GlyphToPathTranslator::containsMorePaths):
(WebCore::GlyphToPathTranslator::path):
(WebCore::GlyphToPathTranslator::extents):
(WebCore::GlyphToPathTranslator::advance):
* Source/WebCore/platform/graphics/FontCascade.h:
* Source/WebCore/platform/graphics/GlyphBuffer.h: Removed the recently added ability to
use CheckedPtr<GlyphBuffer>. GlyphBuffer is stack-allocated so it can't
participate in a zombie-mode lifetime scheme. We'll have to solve GlyphBuffer
another way later. (Chris said he's OK with this.)

* Source/WebCore/platform/graphics/TextRun.cpp:
* Source/WebCore/platform/graphics/TextRun.h:
* Source/WebCore/platform/graphics/TiledBacking.h: (1)

* Source/WebCore/platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::commitCurrentFontRange): See GlyphBuffer.h

* Source/WebCore/platform/graphics/ca/LayerPool.h: (1)
* Source/WebCore/platform/graphics/cocoa/NullPlaybackSessionInterface.h:
* Source/WebCore/platform/graphics/cocoa/NullVideoPresentationInterface.h:
* Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.h:
* Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h:
* Source/WebCore/platform/mac/PlaybackSessionInterfaceMac.h:
* Source/WebCore/platform/mac/VideoPresentationInterfaceMac.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.h:
* Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.h:
* Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
* Source/WebCore/platform/mediastream/mac/MediaStreamTrackAudioSourceProviderCocoa.h:
* Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.h: (2)

* Source/WebCore/platform/network/curl/CurlMultipartHandleClient.h:
* Source/WebCore/platform/sql/SQLiteDatabase.h:
* Source/WebCore/rendering/LegacyRootInlineBox.cpp:
* Source/WebCore/rendering/LegacyRootInlineBox.h:
* Source/WebCore/rendering/MarkedText.h:
* Source/WebCore/rendering/RegionContext.h:
* Source/WebCore/rendering/RenderImageResource.h:
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderObject.cpp:
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/style/StyleScope.h:
* Source/WebCore/style/StyleUpdate.h:
* Source/WebCore/svg/SVGDocumentExtensions.h: (1)

* Source/WebCore/testing/Internals.h: (2)
* Source/WebCore/workers/WorkerOrWorkletScriptController.h:
* Source/WebCore/workers/service/server/SWServer.h:
* Source/WebCore/workers/service/server/SWServerJobQueue.h:
* Source/WebCore/workers/service/server/SWServerToContextConnection.h: (1)

* Source/WebCore/xml/parser/XMLDocumentParser.h:
* Source/WebKit/NetworkProcess/Downloads/DownloadManager.h:
* Source/WebKit/NetworkProcess/NetworkProcess.h: (2)

* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebPreferencesStore.h:
(WebKit::WebPreferencesStore::isolatedCopy const):
(WebKit::WebPreferencesStore::isolatedCopy):
* Source/WebKit/Shared/WebPreferencesStore.serialization.in:
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
* Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.h: (1)

* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (2)

* Source/WebKit/UIProcess/DisplayLink.h:
* Source/WebKit/UIProcess/Inspector/RemoteWebInspectorUIProxy.h:
* Source/WebKit/UIProcess/ProcessThrottler.cpp:
* Source/WebKit/UIProcess/SuspendedPageProxy.h:
* Source/WebKit/UIProcess/WebBackForwardCache.h:
* Source/WebKit/UIProcess/WebProcessCache.h: (1)

* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess):
WebPreferencesStore& can't use zombie-mode CheckedPtr because it's an interior
object pointer. For now, we can accuratrely represent lifetime by explicitly
ref'ing its owner. Later, we should just change it to be refcounted.

* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
* Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h:
* Source/WebKit/WebProcess/cocoa/VideoPresentationManager.h: (2)

* Source/WebKitLegacy/Storage/StorageThread.h:
* Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h:
* Tools/TestWebKitAPI/Tests/WTF/CheckedPtr.cpp:
* Tools/TestWebKitAPI/Tests/WTF/CheckedRef.cpp:
* Tools/TestWebKitAPI/Tests/WTF/Hasher.cpp:
(TestWebKitAPI::TEST(WTF, Hasher_CheckedPtr)): (1)

Canonical link: https://commits.webkit.org/277020@main
brentfulgham and others added 24 commits April 4, 2024 19:14
…anaged domains

https://bugs.webkit.org/show_bug.cgi?id=265390
<rdar://118906173>

Reviewed by John Wilander.

This patch checks MDM to see if the current application is one of a small set
of apps specified by the organization administrator. If so, the app will be
treated the same way as Safari with respect to managed domains (see Bug 246290).

* Source/WebCore/PAL/pal/spi/ios/ManagedConfigurationSPI.h:
Add missing forward declaration.
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::initializeManagedDomains): Ask MCProfileConnection for
the list of allowed bundleIDs to include in the relaxed handling.

Canonical link: https://commits.webkit.org/277090@main
https://bugs.webkit.org/show_bug.cgi?id=272122
rdar://125878087

Reviewed by Yusuke Suzuki.

CallWebAssemblyFunction should mark GC'd arguments in case they don't
get kept alive until they make it to the stack or a register.

* Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):

Canonical link: https://commits.webkit.org/277091@main
rdar://125934399
https://bugs.webkit.org/show_bug.cgi?id=272191

Reviewed by Tim Horton.

Add amarchenko to contributors.json.

* metadata/contributors.json:

Canonical link: https://commits.webkit.org/277092@main
https://bugs.webkit.org/show_bug.cgi?id=272171
rdar://125919093

Reviewed by Mark Lam.

This patch uses sentinel page approach for primitive Gigacage and donate the rest of the memory to primitive Gigacage.

* Source/bmalloc/bmalloc/Gigacage.cpp:
(Gigacage::ensureGigacage):
(Gigacage::bmalloc::runwaySize): Deleted.
* Source/bmalloc/bmalloc/Gigacage.h:

Canonical link: https://commits.webkit.org/277093@main
…3@main

https://bugs.webkit.org/show_bug.cgi?id=272210
rdar://125949078

Unreviewed.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(SerializedTypeInfo)):

Canonical link: https://commits.webkit.org/277094@main
…olicy in WorkerOrWorkletThread::destroyWorkerGlobalScope

https://bugs.webkit.org/show_bug.cgi?id=272193
<rdar://122857425>

Reviewed by Chris Dumez.

Fix the bug that WorkerGlobalScope::prepareForDestruction doesn't remove WorkerGlobalScopeTrustedTypes
because it uses a different ASCIILiteral than the one used in the actual supplement.

* Source/WebCore/dom/WindowOrWorkerGlobalScopeTrustedTypes.cpp:
(WebCore::WorkerGlobalScopeTrustedTypes::supplementName):
(WebCore::WindowOrWorkerGlobalScopeTrustedTypes::workerGlobalSupplementName):
* Source/WebCore/dom/WindowOrWorkerGlobalScopeTrustedTypes.h:
* Source/WebCore/workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::prepareForDestruction):

Canonical link: https://commits.webkit.org/277095@main
… arguments by reference rather than pointer

https://bugs.webkit.org/show_bug.cgi?id=272063
rdar://problem/125813277

Reviewed by Andres Gonzalez.

Doing this saves null checks on hot codepaths and makes intent more clear, as these functions or ones downstream
from them would either ASSERT non-null, or directly dereference the pointer without null checking.

* Source/WebCore/accessibility/AXImage.cpp:
(WebCore::AXImage::AXImage):
(WebCore::AXImage::create):
* Source/WebCore/accessibility/AXImage.h:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::toSimpleImage):
(WebCore::isAccessibilityList):
(WebCore::isAccessibilityTree):
(WebCore::isAccessibilityTreeItem):
(WebCore::isAccessibilityARIATable):
(WebCore::isAccessibilityARIAGridRow):
(WebCore::isAccessibilityARIAGridCell):
(WebCore::AXObjectCache::createObjectFromRenderer):
(WebCore::createFromNode):
(WebCore::AXObjectCache::getOrCreate):
(WebCore::isSimpleImage): Deleted.
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp:
(WebCore::AccessibilityARIAGridCell::AccessibilityARIAGridCell):
(WebCore::AccessibilityARIAGridCell::create):
* Source/WebCore/accessibility/AccessibilityARIAGridCell.h:
* Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp:
(WebCore::AccessibilityARIAGridRow::AccessibilityARIAGridRow):
(WebCore::AccessibilityARIAGridRow::create):
* Source/WebCore/accessibility/AccessibilityARIAGridRow.h:
* Source/WebCore/accessibility/AccessibilityARIATable.cpp:
(WebCore::AccessibilityARIATable::AccessibilityARIATable):
(WebCore::AccessibilityARIATable::create):
* Source/WebCore/accessibility/AccessibilityARIATable.h:
* Source/WebCore/accessibility/AccessibilityAttachment.cpp:
(WebCore::AccessibilityAttachment::AccessibilityAttachment):
(WebCore::AccessibilityAttachment::create):
* Source/WebCore/accessibility/AccessibilityAttachment.h:
* Source/WebCore/accessibility/AccessibilityLabel.cpp:
(WebCore::AccessibilityLabel::AccessibilityLabel):
(WebCore::AccessibilityLabel::create):
* Source/WebCore/accessibility/AccessibilityLabel.h:
* Source/WebCore/accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::AccessibilityList):
(WebCore::AccessibilityList::create):
* Source/WebCore/accessibility/AccessibilityList.h:
* Source/WebCore/accessibility/AccessibilityListBox.cpp:
(WebCore::AccessibilityListBox::AccessibilityListBox):
(WebCore::AccessibilityListBox::create):
* Source/WebCore/accessibility/AccessibilityListBox.h:
* Source/WebCore/accessibility/AccessibilityMathMLElement.cpp:
(WebCore::AccessibilityMathMLElement::AccessibilityMathMLElement):
(WebCore::AccessibilityMathMLElement::create):
* Source/WebCore/accessibility/AccessibilityMathMLElement.h:
* Source/WebCore/accessibility/AccessibilityMediaObject.cpp:
(WebCore::AccessibilityMediaObject::AccessibilityMediaObject):
(WebCore::AccessibilityMediaObject::create):
(WebCore::AccessibilityMediaObject::mediaSeek):
(WebCore::AccessibilityMediaObject::increment):
(WebCore::AccessibilityMediaObject::decrement):
* Source/WebCore/accessibility/AccessibilityMediaObject.h:
* Source/WebCore/accessibility/AccessibilityMenuList.cpp:
(WebCore::AccessibilityMenuList::AccessibilityMenuList):
(WebCore::AccessibilityMenuList::create):
* Source/WebCore/accessibility/AccessibilityMenuList.h:
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::textAsLabelFor const):
(WebCore::AccessibilityNodeObject::textForLabelElements const):
(WebCore::AccessibilityNodeObject::alternativeText const):
(WebCore::AccessibilityNodeObject::textUnderElement const):
(WebCore::accessibleNameForNode):
(WebCore::AccessibilityNodeObject::accessibilityDescriptionForChildren const):
(WebCore::AccessibilityNodeObject::descriptionForElements const):
* Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:
(WebCore::AccessibilityProgressIndicator::AccessibilityProgressIndicator):
(WebCore::AccessibilityProgressIndicator::create):
* Source/WebCore/accessibility/AccessibilityProgressIndicator.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::AccessibilityRenderObject):
(WebCore::AccessibilityRenderObject::create):
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilitySVGElement.cpp:
(WebCore::AccessibilitySVGElement::AccessibilitySVGElement):
(WebCore::AccessibilitySVGElement::create):
* Source/WebCore/accessibility/AccessibilitySVGElement.h:
* Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:
(WebCore::AccessibilitySVGRoot::AccessibilitySVGRoot):
(WebCore::AccessibilitySVGRoot::create):
* Source/WebCore/accessibility/AccessibilitySVGRoot.h:
* Source/WebCore/accessibility/AccessibilitySlider.cpp:
(WebCore::AccessibilitySlider::AccessibilitySlider):
(WebCore::AccessibilitySlider::create):
* Source/WebCore/accessibility/AccessibilitySlider.h:
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::AccessibilityTable):
(WebCore::AccessibilityTable::create):
* Source/WebCore/accessibility/AccessibilityTable.h:
* Source/WebCore/accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::AccessibilityTableCell):
(WebCore::AccessibilityTableCell::create):
* Source/WebCore/accessibility/AccessibilityTableCell.h:
* Source/WebCore/accessibility/AccessibilityTableRow.cpp:
(WebCore::AccessibilityTableRow::AccessibilityTableRow):
(WebCore::AccessibilityTableRow::create):
* Source/WebCore/accessibility/AccessibilityTableRow.h:
* Source/WebCore/accessibility/AccessibilityTree.cpp:
(WebCore::AccessibilityTree::AccessibilityTree):
(WebCore::AccessibilityTree::create):
* Source/WebCore/accessibility/AccessibilityTree.h:
* Source/WebCore/accessibility/AccessibilityTreeItem.cpp:
(WebCore::AccessibilityTreeItem::AccessibilityTreeItem):
(WebCore::AccessibilityTreeItem::create):
* Source/WebCore/accessibility/AccessibilityTreeItem.h:

Canonical link: https://commits.webkit.org/277096@main
https://bugs.webkit.org/show_bug.cgi?id=272131
rdar://125883824

Reviewed by Alexey Shvayka.

For the pattern like,

    `{ ...object }`

we can use super fast object cloning since there are no properties. After checking object is very specifc conditioned FinalObject,
we can just grab a structure, copy butterfly, and create a new object with them.

                                         ToT                     Patched

    clone-objects-via-spread       96.1927+-0.3467     ^     15.9928+-0.1021        ^ definitely 6.0147x faster

* JSTests/microbenchmarks/clone-objects-via-spread.js: Added.
(test):
* JSTests/stress/clone-objects-via-spread.js: Added.
(test):
* Source/JavaScriptCore/builtins/BuiltinNames.h:
* Source/JavaScriptCore/bytecode/LinkTimeConstant.h:
* Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:
(JSC::ObjectLiteralNode::emitBytecode):
* Source/JavaScriptCore/parser/Nodes.h:
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.h:
* Source/JavaScriptCore/runtime/ObjectConstructorInlines.h:
(JSC::checkStrucureForClone):
(JSC::objectCloneFast):
(JSC::tryCreateObjectViaCloning):

Canonical link: https://commits.webkit.org/277097@main
…ot valid JSON

https://bugs.webkit.org/show_bug.cgi?id=272161
rdar://125913241

Reviewed by Chris Dumez.

API Test: WKApplicationManifest.InvalidJSONData

* Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:
(WebCore::ApplicationManifestParser::parse):
(WebCore::ApplicationManifestParser::parseWithValidation):
(WebCore::ApplicationManifestParser::createJSONObject):
(WebCore::ApplicationManifestParser::parseManifest):
* Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(-[_WKApplicationManifest initWithJSONData:manifestURL:documentURL:]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm:
(TestWebKitAPI::TEST(WKApplicationManifest, InvalidJSONData)):

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

Reviewed by Chris Dumez and Simon Fraser.

Added StringView::show which calls toString().show() for debugging purposes.

* Source/WTF/wtf/text/StringView.cpp:
(WTF::StringView::show const):
* Source/WTF/wtf/text/StringView.h:

Canonical link: https://commits.webkit.org/277099@main
…henticator.cpp

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

Reviewed by David Kilzer, Chris Dumez and Sihui Liu.

Use enumToUnderlyingType on enum classes.

* Source/WebKit/UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:
(WebKit::U2fAuthenticator::responseReceived):
(WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived):
(WebKit::U2fAuthenticator::continueCheckOnlyCommandAfterResponseReceived):
(WebKit::U2fAuthenticator::continueBogusCommandExcludeCredentialsMatchAfterResponseReceived):
(WebKit::U2fAuthenticator::continueBogusCommandNoCredentialsAfterResponseReceived):
(WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived):

Canonical link: https://commits.webkit.org/277100@main
https://bugs.webkit.org/show_bug.cgi?id=272157
rdar://125907604

Reviewed by Anne van Kesteren.

This import was performed against the WPT repository at 4019765ef5.

* LayoutTests/imported/w3c/resources/resource-files.json:
* LayoutTests/imported/w3c/web-platform-tests/css/CSS2/visufx/animation/visibility-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/compositing/isolation/animation/isolation-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-align/animation/align-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-align/animation/column-gap-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-align/animation/justify-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-align/animation/row-gap-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/display-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/transition-properties-not-animatable-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-size-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/discrete-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-break/animation/break-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color-adjust/animation/color-scheme-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color-adjust/animation/forced-color-adjust-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-content/content-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-display/animations/display-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/animation/discrete-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/animation/flex-basis-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/animations/font-size-adjust-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/animations/font-variation-settings-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/discrete-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/animation/grid-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/animation/grid-template-columns-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/animation/grid-template-rows-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/animation/alignment-baseline-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/animation/dominant-baseline-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/animation/initial-letter-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/baseline-source/baseline-source-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/animations/list-style-image-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/css-lists-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-logical/animations/float-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-xywh-rect-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/mask-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/clip-rule-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/animation/column-count-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/animation/column-width-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-overflow/overflow-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-position/animations/bottom-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-position/animations/left-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-position/animations/position-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-position/animations/right-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-position/animations/top-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-size-adjust/animations/text-size-adjust-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/height-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/max-height-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/max-width-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/width-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/animation/contain-intrinsic-size-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/animations/discrete-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/hyphen-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/line-break-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/tab-size-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/animations/text-indent-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-align/text-align-last-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/text-justify/text-justify-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/perspective-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-ui/animation/accent-color-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-ui/animation/caret-color-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/backdrop-filter-interpolation-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/color-interpolation-filters-no-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-anchor-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-006-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-position-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/support/color-testcommon.js:
* LayoutTests/imported/w3c/web-platform-tests/css/support/interpolation-testcommon.js:
(cssTransitionsInterpolationAllowDiscrete.isSupported):
(cssTransitionsInterpolationAllowDiscrete.supportsProperty):
(cssTransitionsInterpolationAllowDiscrete.supportsValue):
(cssTransitionsInterpolationAllowDiscrete.setup):
(cssTransitionsInterpolationAllowDiscrete.nonInterpolationExpectations):
(cssTransitionsInterpolationAllowDiscrete.notAnimatableExpectations):
(cssTransitionsInterpolationAllowDiscrete.interpolate):
(cssTransitionAllInterpolationAllowDiscrete.isSupported):
(cssTransitionAllInterpolationAllowDiscrete.supportsProperty):
(cssTransitionAllInterpolationAllowDiscrete.supportsValue):
(cssTransitionAllInterpolationAllowDiscrete.setup):
(cssTransitionAllInterpolationAllowDiscrete.nonInterpolationExpectations):
(cssTransitionAllInterpolationAllowDiscrete.notAnimatableExpectations):
(cssTransitionAllInterpolationAllowDiscrete.interpolate):
(create_tests):
(test_interpolation):
* LayoutTests/imported/w3c/web-platform-tests/css/support/numeric-testcommon.js:
(test_math_used):
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-lists/animations/list-style-image-interpolation-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-001-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.txt: Added.

Canonical link: https://commits.webkit.org/277102@main
https://bugs.webkit.org/show_bug.cgi?id=272145
rdar://125897282

Reviewed by Anne van Kesteren.

This import was performed against the WPT repository at 4019765ef5.

* LayoutTests/imported/w3c/resources/resource-files.json:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/all-with-discrete.tentative-expected.txt: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/all-with-discrete.tentative.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/animate-with-color-mix-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/animate-with-color-mix.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/transition-timing-function-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/transition-timing-function.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/crashtests/delete-image-set.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/crashtests/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-valid.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/starting-style-cascade.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/starting-style-rule-none.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/support/helper.js:
(root.supportsStartingStyle):
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-behavior-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-behavior.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/w3c-import.log:

Canonical link: https://commits.webkit.org/277103@main
…nt-acceleration-capabilities-7.html` is a constant timeout

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

Reviewed by Carlos Garcia Campos.

This patch implements `CoordinatedGraphicsLayer::acceleratedAnimationsForTesting()`
similarly to already existing `GraphicsLayerCA::acceleratedAnimationsForTesting()`.

* Source/WebCore/platform/graphics/GraphicsLayer.cpp:
(WebCore::acceleratedEffectPropertyIDAsString):
(WebCore::animatedPropertyIDAsString):
* Source/WebCore/platform/graphics/GraphicsLayer.h:
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::animatedPropertyIDAsString): Deleted.
(WebCore::acceleratedEffectPropertyIDAsString): Deleted.
* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::acceleratedAnimationsForTesting const):
* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

Canonical link: https://commits.webkit.org/277104@main
https://bugs.webkit.org/show_bug.cgi?id=272144
rdar://125897021

Reviewed by Anne van Kesteren.

This import was performed against the WPT repository at 4019765ef5.

* LayoutTests/imported/w3c/resources/import-expectations.json:
* LayoutTests/imported/w3c/resources/resource-files.json:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animate-with-color-mix-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animate-with-color-mix.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-offscreen-to-onscreen-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-offscreen-to-onscreen-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-offscreen-to-onscreen.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/crashtests/add-pseudo-while-animating-001.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/crashtests/cancel-update.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/crashtests/pseudo-element-animation-with-marker.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/crashtests/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-range-end-valid.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-range-start-valid.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/stability/animation-event-destroy-renderer.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/stability/animation-event-destroy-renderer_animationiteration-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/stability/animation-event-destroy-renderer_animationstart-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/stability/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-animations/crashtests/w3c-import.log.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/support/color-testcommon.js:
* LayoutTests/imported/w3c/web-platform-tests/css/support/interpolation-testcommon.js:
* LayoutTests/imported/w3c/web-platform-tests/css/support/numeric-testcommon.js:

Canonical link: https://commits.webkit.org/277105@main
…ith a pattern

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

Reviewed by Alejandro G. Castro.

Set the global alpha when drawing images and filling with a pattern.
Also don't apply the alpha when setting the color of shadows, since it's
already taken from SkPaint global alpha or source color.

* Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:
(WebCore::GraphicsContextSkia::drawNativeImageInternal):
(WebCore::GraphicsContextSkia::createDropShadowFilterIfNeeded const):
(WebCore::GraphicsContextSkia::setupFillSource const):

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

Reviewed by Michael Catanzaro.

Move the serialization of the SoupNetworkProxySettingsMode
to WebKit/Shared to a single file for soup-related argument
coders. Also add a serializer for GUniquePtr<char*>, as it's
needed for the ignored hosts list. With this in place,
add a generator for SoupNetworkProxySettings and remove
the handmade coder.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/platform/network/soup/SoupNetworkProxySettings.h:
(WebCore::SoupNetworkProxySettings::SoupNetworkProxySettings):
* Source/WebKit/Platform/IPC/ArgumentCoders.h:
* Source/WebKit/Platform/IPC/glib/ArgumentCodersGlib.h: Added.
* Source/WebKit/PlatformGTK.cmake:
* Source/WebKit/PlatformWPE.cmake:
* Source/WebKit/Shared/WebCoreArgumentCoders.h:
* Source/WebKit/Shared/soup/WebCoreArgumentCodersSoup.cpp: Removed.
* Source/WebKit/Shared/soup/WebCoreArgumentCodersSoup.serialization.in: Renamed from Source/WebCore/platform/network/soup/SoupNetworkProxySettings.serialization.in.
* Source/WebKit/SourcesGTK.txt:
* Source/WebKit/SourcesWPE.txt:

Canonical link: https://commits.webkit.org/277107@main
https://bugs.webkit.org/show_bug.cgi?id=266774
rdar://120004379

Reviewed by Mike Wyrzykowski and Yusuke Suzuki.

For the most part, we already supported unicode, but the implementation for
isIdentifierStart and isIdentifierContinue needed to be updated. After this patch
all the identifier tests in the CTS (under shader,validation,parse,identifiers:*)
are passing.

* Source/WebGPU/WGSL/Lexer.cpp:
(WGSL::isIdentifierStart):
(WGSL::isIdentifierContinue):
(WGSL::Lexer<T>::nextToken):
* Source/WebGPU/WGSL/Lexer.h:
(WGSL::Lexer::isIdentifierStart): Deleted.
(WGSL::Lexer::isIdentifierContinue): Deleted.
* Source/WebGPU/WGSL/TypeCheck.cpp:
(WGSL::TypeChecker::check):
* Source/WebGPU/WebGPU.xcodeproj/project.pbxproj:
* Source/WebGPU/WebGPU/ShaderModule.mm:
(WebGPU::Device::createShaderModule):

Canonical link: https://commits.webkit.org/277108@main
…container

https://bugs.webkit.org/show_bug.cgi?id=272180
<rdar://problem/125930179>

Reviewed by Antti Koivisto.

Checking whether we managed to put content on the line or we are stuck should include
1. regular inline content
2. intrusive floats at the position of the current line
3. freshly placed floats while processing the inline content

This patch add #3 to the set of conditions at formattingContexts::leadingInlineItemPositionForNextLine.

* LayoutTests/fast/inline/float-prevents-adjacent-content-on-zero-width-line-expected.html: Added.
* LayoutTests/fast/inline/float-prevents-adjacent-content-on-zero-width-line.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineContentBalancer.cpp:
(WebCore::Layout::InlineContentBalancer::initialize):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::lineLayout):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
(WebCore::Layout::InlineFormattingUtils::leadingInlineItemPositionForNextLine):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h:
* Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.cpp:
(WebCore::Layout::IntrinsicWidthHandler::computedIntrinsicWidthForConstraint):

Canonical link: https://commits.webkit.org/277109@main
…roxy

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

Reviewed by Carlos Garcia Campos.

Add a property to TextureMapperPlatformLayerProxy to indicate the type of
frames that are passing through it. The type can be WebGL, Video,
OffscreenCanvas or HolePuch.

We don't want to have proxies without a defined content type, so this patch
removes the method to create a Nicosia::ContentLayer that doesn't receive
a proxy and creates one whose content type is not known. This way, the code
that creates the Nicosia::ContentLayer has to specifically create a proxy
with a defined content type for it.

This change removes the need of the of the disableBufferInvalidation parameter
in the TextureMapperPlatformLayerProxyGL constructor, as this is only used for
the HolePunch case. Now that the proxy knows when it's handling HolePunch
buffers, the previous condition can be reworked.

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
* Source/WebCore/platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:
(WebCore::MediaPlayerPrivateHolePunch::MediaPlayerPrivateHolePunch):
* Source/WebCore/platform/graphics/nicosia/NicosiaContentLayer.cpp:
* Source/WebCore/platform/graphics/nicosia/NicosiaContentLayer.h:
* Source/WebCore/platform/graphics/nicosia/NicosiaGCGLANGLELayer.cpp:
(Nicosia::GCGLANGLELayer::GCGLANGLELayer):
* Source/WebCore/platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:
(Nicosia::NicosiaImageBufferPipeSource::NicosiaImageBufferPipeSource):
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::TextureMapperPlatformLayerProxy):
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
(WebCore::TextureMapperPlatformLayerProxy::contentType const):
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp:
(WebCore::TextureMapperPlatformLayerProxyDMABuf::TextureMapperPlatformLayerProxyDMABuf):
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.h:
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.cpp:
(WebCore::TextureMapperPlatformLayerProxyGL::TextureMapperPlatformLayerProxyGL):
(WebCore::TextureMapperPlatformLayerProxyGL::invalidate):
* Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyGL.h:
* Source/WebKit/WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp:
(WebKit::NicosiaDisplayDelegate::NicosiaDisplayDelegate):

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

Reviewed by Michael Catanzaro.

* Source/WebCore/editing/WebContentReader.h:
The m_allowPlainText private field is only used in Cocoa and GTK platforms.

Canonical link: https://commits.webkit.org/277111@main
@Jarred-Sumner
Jarred-Sumner merged commit 46bf878 into main Apr 5, 2024
@Jarred-Sumner
Jarred-Sumner deleted the jarred/upgrade-again branch April 5, 2024 14:39
Jarred-Sumner pushed a commit that referenced this pull request Aug 27, 2024
https://bugs.webkit.org/show_bug.cgi?id=278617
rdar://134636872

Reviewed by Yijia Huang.

When the next op is also one character PatternCharacterClass, backtracking should not load index register
since the next op will override it anyway.

Before:
      57:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a2,0x1f0b2,0x1f0c2,0x1f0d2)]
                <4472> 0x10f3a2078:    ldur     x1, [sp, #64]
      56:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a3,0x1f0b3,0x1f0c3,0x1f0d3)]
                <4476> 0x10f3a207c:    ldur     x1, [sp, #48]
      55:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a4,0x1f0b4,0x1f0c4,0x1f0d4)]
                <4480> 0x10f3a2080:    ldur     x1, [sp, #32]
      54:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a5,0x1f0b5,0x1f0c5,0x1f0d5)]
                <4484> 0x10f3a2084:    ldur     x1, [sp, #16]
      53:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a6,0x1f0b6,0x1f0c6,0x1f0d6)]
                <4488> 0x10f3a2088:    ldur     x1, [sp]
      52:BodyAlternativeNext minimum-size:(10),checked-offset:(10)
                <4492> 0x10f3a208c:    b        0x10f3a1e78 -> <3960>

After:
      57:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a2,0x1f0b2,0x1f0c2,0x1f0d2)]
      56:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a3,0x1f0b3,0x1f0c3,0x1f0d3)]
      55:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a4,0x1f0b4,0x1f0c4,0x1f0d4)]
      54:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a5,0x1f0b5,0x1f0c5,0x1f0d5)]
      53:Term PatternCharacterClass checked-offset:(10) [Unicode:(0x1f0a6,0x1f0b6,0x1f0c6,0x1f0d6)]
                <3656> 0x11e840e48:    ldur     x1, [sp]
      52:BodyAlternativeNext minimum-size:(10),checked-offset:(10)
                <3660> 0x11e840e4c:    b        0x11e840ca8 -> <3240>

* Source/JavaScriptCore/yarr/YarrJIT.cpp:

Canonical link: https://commits.webkit.org/282746@main
Jarred-Sumner pushed a commit that referenced this pull request Feb 21, 2025
https://bugs.webkit.org/show_bug.cgi?id=288102
rdar://145222010

Reviewed by Yusuke Suzuki.

Added the notion of a string list to a parsed RegExp that is in the form of
  /^(?:break|case|which|do|for)/ with an optional trailing $.
Such a RegExp will not backtrack and therefore we can streamline the code we emit for such a pattern.

This change involves recognizing beginning of string anchored alternations of strings while parsing and
then treating the generation of JIT code differently for these patterns.  This includes changing how
conditional branching works, specifically that instead of the "fall through on match" for each term,
to a "jump on match" for the whole alternation.

The current code generated for the "case" elternative is:
   8:Term PatternCharacter checked-offset:(3) 'c'
               <156> 0x11381430c:    add      w1, w1, #2
               <160> 0x113814310:    cmp      w1, w2
               <164> 0x113814314:    b.hi     0x113814444 -> <468>
  10:Term PatternCharacter checked-offset:(4) 'c'
               <168> 0x113814318:    sub      x17, x0, #4
               <172> 0x11381431c:    ldr      w17, [x17, x1]
               <176> 0x113814320:    movz     w16, #0x6163
               <180> 0x113814324:    movk     w16, #0x6573, lsl #16 -> 0x65736163
               <184> 0x113814328:    cmp      w17, w16
               <188> 0x11381432c:    b.ne     0x113814444 -> <468>
  11:Term PatternCharacter checked-offset:(4) 'a' already handled
  12:Term PatternCharacter checked-offset:(4) 's' already handled
  13:Term PatternCharacter checked-offset:(4) 'e' already handled
  14:NestedAlternativeNext minimum-size:(5),checked-offset:(5)
               <192> 0x113814330:    movz     x16, #0x4444
               <196> 0x113814334:    movk     x16, #0x1381, lsl #16
               <200> 0x113814338:    movk     x16, #0x8001, lsl #32
               <204> 0x11381433c:    movk     x16, #0xc973, lsl #48 -> 0x113814444 JIT PC
               <208> 0x113814340:    stur     x16, [sp, #8]
               <212> 0x113814344:    b        0x113814404 -> <404>
With some additional backtracking code:
   9:NestedAlternativeNext minimum-size:(4),checked-offset:(4)
               <468> 0x113814444:    sub      w1, w1, #2
               <472> 0x113814448:    b        0x113814348 -> <216>

With this change, the processing of "case" becomes:
   9:StringListAlternativeNext minimum-size:(4),checked-offset:(4)
               <132> 0x12a8285c4:    sub      w1, w1, #1
               <136> 0x12a8285c8:    cmp      w1, w2
               <140> 0x12a8285cc:    b.hi     0x12a8285e8 -> <168>
  10:Term PatternCharacter checked-offset:(4) 'c'
               <144> 0x12a8285d0:    sub      x17, x0, #4
               <148> 0x12a8285d4:    ldr      w17, [x17, x1]
               <152> 0x12a8285d8:    movz     w16, #0x6163
               <156> 0x12a8285dc:    movk     w16, #0x6573, lsl #16 -> 0x65736163
               <160> 0x12a8285e0:    cmp      w17, w16
               <164> 0x12a8285e4:    b.eq     0x12a82866c -> <300>
  11:Term PatternCharacter checked-offset:(4) 'a' already handled
  12:Term PatternCharacter checked-offset:(4) 's' already handled
  13:Term PatternCharacter checked-offset:(4) 'e' already handled
  14:StringListAlternativeNext minimum-size:(5),checked-offset:(5)
With no backtracking code.

We are able to eliminate one branch and the saving of the continuation PC for backtracking.
The code size to process these string list RegExp is reduces.  For the example RegExp above,
the prior version created 1940 bytes (485 instructions) of code while the code created with this
1392 bytes (345 instructions) of code, a nearly 30% reduction in code.

This change is a ~18% progression on the new regexp-keyword-parsing microbenchmark:

                                 Baseline               YarrStringList

regexp-keyword-parsing      136.7065+-0.9807     ^    116.0161+-1.1791        ^ definitely 1.1783x faster

<geometric>                 136.7065+-0.9807     ^    116.0161+-1.1791        ^ definitely 1.1783x faster

* JSTests/microbenchmarks/regexp-keyword-parsing.js: Added.
(arrayToString):
(objectToString):
(dumpValue):
(compareArray):
(compareGroups):
(testRegExp):
(testRegExpSyntaxError):
(let.re.break.case.catch.continue.debugger.default.else.finally.if):
(let.re1.break.case.catch.continue.debugger.default.else.finally.if):
* JSTests/stress/regexp-parsing-tokens.js: Added.
(arrayToString):
(objectToString):
(dumpValue):
(compareArray):
(compareGroups):
(testRegExp):
(testRegExpSyntaxError):
* Source/JavaScriptCore/yarr/YarrJIT.cpp:
* Source/JavaScriptCore/yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
(JSC::Yarr::PatternAlternative::dump):
(JSC::Yarr::PatternTerm::dump):
* Source/JavaScriptCore/yarr/YarrPattern.h:
(JSC::Yarr::PatternTerm::PatternTerm):
(JSC::Yarr::PatternAlternative::PatternAlternative):

Canonical link: https://commits.webkit.org/290791@main
190n pushed a commit that referenced this pull request Feb 25, 2025
https://bugs.webkit.org/show_bug.cgi?id=288102
rdar://145222010

Reviewed by Yusuke Suzuki.

Added the notion of a string list to a parsed RegExp that is in the form of
  /^(?:break|case|which|do|for)/ with an optional trailing $.
Such a RegExp will not backtrack and therefore we can streamline the code we emit for such a pattern.

This change involves recognizing beginning of string anchored alternations of strings while parsing and
then treating the generation of JIT code differently for these patterns.  This includes changing how
conditional branching works, specifically that instead of the "fall through on match" for each term,
to a "jump on match" for the whole alternation.

Fixed a bug in the original version where we weren't properly checking the nested alternatives to see
if they only contain fixed single count PatternCharacter terms.

The current code generated for the "case" elternative is:
   8:Term PatternCharacter checked-offset:(3) 'c'
               <156> 0x11381430c:    add      w1, w1, #2
               <160> 0x113814310:    cmp      w1, w2
               <164> 0x113814314:    b.hi     0x113814444 -> <468>
  10:Term PatternCharacter checked-offset:(4) 'c'
               <168> 0x113814318:    sub      x17, x0, #4
               <172> 0x11381431c:    ldr      w17, [x17, x1]
               <176> 0x113814320:    movz     w16, #0x6163
               <180> 0x113814324:    movk     w16, #0x6573, lsl #16 -> 0x65736163
               <184> 0x113814328:    cmp      w17, w16
               <188> 0x11381432c:    b.ne     0x113814444 -> <468>
  11:Term PatternCharacter checked-offset:(4) 'a' already handled
  12:Term PatternCharacter checked-offset:(4) 's' already handled
  13:Term PatternCharacter checked-offset:(4) 'e' already handled
  14:NestedAlternativeNext minimum-size:(5),checked-offset:(5)
               <192> 0x113814330:    movz     x16, #0x4444
               <196> 0x113814334:    movk     x16, #0x1381, lsl #16
               <200> 0x113814338:    movk     x16, #0x8001, lsl #32
               <204> 0x11381433c:    movk     x16, #0xc973, lsl #48 -> 0x113814444 JIT PC
               <208> 0x113814340:    stur     x16, [sp, #8]
               <212> 0x113814344:    b        0x113814404 -> <404>
With some additional backtracking code:
   9:NestedAlternativeNext minimum-size:(4),checked-offset:(4)
               <468> 0x113814444:    sub      w1, w1, #2
               <472> 0x113814448:    b        0x113814348 -> <216>

With this change, the processing of "case" becomes:
   9:StringListAlternativeNext minimum-size:(4),checked-offset:(4)
               <132> 0x12a8285c4:    sub      w1, w1, #1
               <136> 0x12a8285c8:    cmp      w1, w2
               <140> 0x12a8285cc:    b.hi     0x12a8285e8 -> <168>
  10:Term PatternCharacter checked-offset:(4) 'c'
               <144> 0x12a8285d0:    sub      x17, x0, #4
               <148> 0x12a8285d4:    ldr      w17, [x17, x1]
               <152> 0x12a8285d8:    movz     w16, #0x6163
               <156> 0x12a8285dc:    movk     w16, #0x6573, lsl #16 -> 0x65736163
               <160> 0x12a8285e0:    cmp      w17, w16
               <164> 0x12a8285e4:    b.eq     0x12a82866c -> <300>
  11:Term PatternCharacter checked-offset:(4) 'a' already handled
  12:Term PatternCharacter checked-offset:(4) 's' already handled
  13:Term PatternCharacter checked-offset:(4) 'e' already handled
  14:StringListAlternativeNext minimum-size:(5),checked-offset:(5)
With no backtracking code.

We are able to eliminate one branch and the saving of the continuation PC for backtracking.
The code size to process these string list RegExp is reduces.  For the example RegExp above,
the prior version created 1940 bytes (485 instructions) of code while the code created with this
1392 bytes (345 instructions) of code, a nearly 30% reduction in code.

This change is a ~18% progression on the new regexp-keyword-parsing microbenchmark:

                                 Baseline               YarrStringList

regexp-keyword-parsing      136.7065+-0.9807     ^    116.0161+-1.1791        ^ definitely 1.1783x faster

<geometric>                 136.7065+-0.9807     ^    116.0161+-1.1791        ^ definitely 1.1783x faster

* JSTests/microbenchmarks/regexp-keyword-parsing.js: Added.
(arrayToString):
(objectToString):
(dumpValue):
(compareArray):
(compareGroups):
(testRegExp):
(testRegExpSyntaxError):
(let.re.break.case.catch.continue.debugger.default.else.finally.if):
(let.re1.break.case.catch.continue.debugger.default.else.finally.if):
* JSTests/stress/regexp-parsing-tokens.js: Added.
(arrayToString):
(objectToString):
(dumpValue):
(compareArray):
(compareGroups):
(testRegExp):
(testRegExpSyntaxError):
* Source/JavaScriptCore/yarr/YarrJIT.cpp:
* Source/JavaScriptCore/yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
(JSC::Yarr::PatternAlternative::dump):
(JSC::Yarr::PatternTerm::dump):
* Source/JavaScriptCore/yarr/YarrPattern.h:
(JSC::Yarr::PatternTerm::PatternTerm):
(JSC::Yarr::PatternAlternative::PatternAlternative):

Canonical link: https://commits.webkit.org/290982@main
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.