Skip to content

Commits

Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Commits on Jun 3, 2023

  1. Fix the build with older SDKs and newer Xcodes

    https://bugs.webkit.org/show_bug.cgi?id=257662
    rdar://110185235
    
    Reviewed by Elliott Williams.
    
    * Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:
    It turns out this new TAPI flag is tied to the SDK, not the Xcode, so
    change how we conditionalize it, in order to fix the build.
    
    Canonical link: https://commits.webkit.org/264850@main
    hortont424 committed Jun 3, 2023
  2. Take overflow: clip into account when computing table overflow

    https://bugs.webkit.org/show_bug.cgi?id=251909
    
    Reviewed by Alan Baradlay.
    
    When computing table overflow overflow: clip should be treated like overflow: hidden:
    https://github.com/w3c/csswg-drafts/pull/7492/files
    
    * LayoutTests/imported/w3c/web-platform-tests/css/css-overflow/overflow-clip-rounded-table-expected.html: Added.
    * LayoutTests/imported/w3c/web-platform-tests/css/css-overflow/overflow-clip-rounded-table.html: Added.
    * Source/WebCore/style/StyleAdjuster.cpp:
    (WebCore::Style::Adjuster::adjust const):
    
    Canonical link: https://commits.webkit.org/264849@main
    rwlbuis committed Jun 3, 2023
  3. Support move-only types in IPC messages.in, and use it for StreamServ…

    …erConnection::Handle.
    
    https://bugs.webkit.org/show_bug.cgi?id=257528
    
    Reviewed by Kimmo Kinnunen.
    
    Adds basic support to messages.py for creating rvalue references for types that are move only, and using WTFMove.
    
    Makes StreamServerConnection::Handle move-only, since we never want to copy these (and the underlying connection state depends on their lifetime).
    
    * Source/WebKit/Platform/IPC/StreamServerConnection.h:
    (IPC::StreamServerConnection::Handle::encode):
    (IPC::StreamServerConnection::Handle::decode):
    (IPC::StreamServerConnection::Handle::encode const): Deleted.
    * Source/WebKit/Scripts/webkit/messages.py:
    (types_that_must_be_moved):
    (function_parameter_type):
    (arguments_constructor_name):
    (message_to_struct_declaration):
    * Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessages.h:
    (Messages::TestWithCVPixelBuffer::SendCVPixelBuffer::arguments):
    (Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::arguments):
    (Messages::TestWithCVPixelBuffer::SendCVPixelBuffer::arguments const): Deleted.
    (Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithIfMessageMessages.h:
    (Messages::TestWithIfMessage::LoadURL::arguments):
    (Messages::TestWithIfMessage::LoadURL::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessages.h:
    (Messages::TestWithImageData::SendImageData::arguments):
    (Messages::TestWithImageData::ReceiveImageData::arguments):
    (Messages::TestWithImageData::SendImageData::arguments const): Deleted.
    (Messages::TestWithImageData::ReceiveImageData::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessages.h:
    (Messages::TestWithLegacyReceiver::LoadURL::arguments):
    (Messages::TestWithLegacyReceiver::LoadSomething::arguments):
    (Messages::TestWithLegacyReceiver::TouchEvent::arguments):
    (Messages::TestWithLegacyReceiver::AddEvent::arguments):
    (Messages::TestWithLegacyReceiver::LoadSomethingElse::arguments):
    (Messages::TestWithLegacyReceiver::DidReceivePolicyDecision::arguments):
    (Messages::TestWithLegacyReceiver::Close::arguments):
    (Messages::TestWithLegacyReceiver::PreferencesDidChange::arguments):
    (Messages::TestWithLegacyReceiver::SendDoubleAndFloat::arguments):
    (Messages::TestWithLegacyReceiver::SendInts::arguments):
    (Messages::TestWithLegacyReceiver::CreatePlugin::arguments):
    (Messages::TestWithLegacyReceiver::RunJavaScriptAlert::arguments):
    (Messages::TestWithLegacyReceiver::GetPlugins::GetPlugins):
    (Messages::TestWithLegacyReceiver::GetPlugins::arguments):
    (Messages::TestWithLegacyReceiver::GetPluginProcessConnection::arguments):
    (Messages::TestWithLegacyReceiver::TestMultipleAttributes::arguments):
    (Messages::TestWithLegacyReceiver::TestParameterAttributes::arguments):
    (Messages::TestWithLegacyReceiver::TemplateTest::arguments):
    (Messages::TestWithLegacyReceiver::SetVideoLayerID::arguments):
    (Messages::TestWithLegacyReceiver::DidCreateWebProcessConnection::arguments):
    (Messages::TestWithLegacyReceiver::InterpretKeyEvent::arguments):
    (Messages::TestWithLegacyReceiver::DeprecatedOperation::arguments):
    (Messages::TestWithLegacyReceiver::ExperimentalOperation::arguments):
    (Messages::TestWithLegacyReceiver::LoadURL::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::LoadSomething::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::TouchEvent::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::AddEvent::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::LoadSomethingElse::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::DidReceivePolicyDecision::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::Close::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::PreferencesDidChange::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::SendDoubleAndFloat::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::SendInts::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::CreatePlugin::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::RunJavaScriptAlert::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::GetPlugins::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::GetPluginProcessConnection::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::TestMultipleAttributes::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::TestParameterAttributes::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::TemplateTest::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::SetVideoLayerID::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::DidCreateWebProcessConnection::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::InterpretKeyEvent::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::DeprecatedOperation::arguments const): Deleted.
    (Messages::TestWithLegacyReceiver::ExperimentalOperation::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessages.h:
    (Messages::TestWithSemaphore::SendSemaphore::arguments):
    (Messages::TestWithSemaphore::ReceiveSemaphore::arguments):
    (Messages::TestWithSemaphore::SendSemaphore::arguments const): Deleted.
    (Messages::TestWithSemaphore::ReceiveSemaphore::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithStreamBatchedMessages.h:
    (Messages::TestWithStreamBatched::SendString::arguments):
    (Messages::TestWithStreamBatched::SendString::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithStreamBufferMessages.h:
    (Messages::TestWithStreamBuffer::SendStreamBuffer::arguments):
    (Messages::TestWithStreamBuffer::SendStreamBuffer::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithStreamMessages.h:
    (Messages::TestWithStream::SendString::arguments):
    (Messages::TestWithStream::SendStringAsync::arguments):
    (Messages::TestWithStream::SendStringSync::arguments):
    (Messages::TestWithStream::CallWithIdentifier::arguments):
    (Messages::TestWithStream::SendMachSendRight::arguments):
    (Messages::TestWithStream::ReceiveMachSendRight::arguments):
    (Messages::TestWithStream::SendAndReceiveMachSendRight::arguments):
    (Messages::TestWithStream::SendString::arguments const): Deleted.
    (Messages::TestWithStream::SendStringAsync::arguments const): Deleted.
    (Messages::TestWithStream::SendStringSync::arguments const): Deleted.
    (Messages::TestWithStream::CallWithIdentifier::arguments const): Deleted.
    (Messages::TestWithStream::SendMachSendRight::arguments const): Deleted.
    (Messages::TestWithStream::ReceiveMachSendRight::arguments const): Deleted.
    (Messages::TestWithStream::SendAndReceiveMachSendRight::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h:
    (Messages::TestWithSuperclass::LoadURL::arguments):
    (Messages::TestWithSuperclass::TestAsyncMessage::arguments):
    (Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::arguments):
    (Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::arguments):
    (Messages::TestWithSuperclass::TestAsyncMessageWithConnection::arguments):
    (Messages::TestWithSuperclass::TestSyncMessage::arguments):
    (Messages::TestWithSuperclass::TestSynchronousMessage::TestSynchronousMessage):
    (Messages::TestWithSuperclass::TestSynchronousMessage::arguments):
    (Messages::TestWithSuperclass::LoadURL::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestAsyncMessage::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestAsyncMessageWithConnection::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestSyncMessage::arguments const): Deleted.
    (Messages::TestWithSuperclass::TestSynchronousMessage::arguments const): Deleted.
    * Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessages.h:
    (Messages::TestWithoutAttributes::LoadURL::arguments):
    (Messages::TestWithoutAttributes::LoadSomething::arguments):
    (Messages::TestWithoutAttributes::TouchEvent::arguments):
    (Messages::TestWithoutAttributes::AddEvent::arguments):
    (Messages::TestWithoutAttributes::LoadSomethingElse::arguments):
    (Messages::TestWithoutAttributes::DidReceivePolicyDecision::arguments):
    (Messages::TestWithoutAttributes::Close::arguments):
    (Messages::TestWithoutAttributes::PreferencesDidChange::arguments):
    (Messages::TestWithoutAttributes::SendDoubleAndFloat::arguments):
    (Messages::TestWithoutAttributes::SendInts::arguments):
    (Messages::TestWithoutAttributes::CreatePlugin::arguments):
    (Messages::TestWithoutAttributes::RunJavaScriptAlert::arguments):
    (Messages::TestWithoutAttributes::GetPlugins::GetPlugins):
    (Messages::TestWithoutAttributes::GetPlugins::arguments):
    (Messages::TestWithoutAttributes::GetPluginProcessConnection::arguments):
    (Messages::TestWithoutAttributes::TestMultipleAttributes::arguments):
    (Messages::TestWithoutAttributes::TestParameterAttributes::arguments):
    (Messages::TestWithoutAttributes::TemplateTest::arguments):
    (Messages::TestWithoutAttributes::SetVideoLayerID::arguments):
    (Messages::TestWithoutAttributes::DidCreateWebProcessConnection::arguments):
    (Messages::TestWithoutAttributes::InterpretKeyEvent::arguments):
    (Messages::TestWithoutAttributes::DeprecatedOperation::arguments):
    (Messages::TestWithoutAttributes::ExperimentalOperation::arguments):
    (Messages::TestWithoutAttributes::LoadURL::arguments const): Deleted.
    (Messages::TestWithoutAttributes::LoadSomething::arguments const): Deleted.
    (Messages::TestWithoutAttributes::TouchEvent::arguments const): Deleted.
    (Messages::TestWithoutAttributes::AddEvent::arguments const): Deleted.
    (Messages::TestWithoutAttributes::LoadSomethingElse::arguments const): Deleted.
    (Messages::TestWithoutAttributes::DidReceivePolicyDecision::arguments const): Deleted.
    (Messages::TestWithoutAttributes::Close::arguments const): Deleted.
    (Messages::TestWithoutAttributes::PreferencesDidChange::arguments const): Deleted.
    (Messages::TestWithoutAttributes::SendDoubleAndFloat::arguments const): Deleted.
    (Messages::TestWithoutAttributes::SendInts::arguments const): Deleted.
    (Messages::TestWithoutAttributes::CreatePlugin::arguments const): Deleted.
    (Messages::TestWithoutAttributes::RunJavaScriptAlert::arguments const): Deleted.
    (Messages::TestWithoutAttributes::GetPlugins::arguments const): Deleted.
    (Messages::TestWithoutAttributes::GetPluginProcessConnection::arguments const): Deleted.
    (Messages::TestWithoutAttributes::TestMultipleAttributes::arguments const): Deleted.
    (Messages::TestWithoutAttributes::TestParameterAttributes::arguments const): Deleted.
    (Messages::TestWithoutAttributes::TemplateTest::arguments const): Deleted.
    (Messages::TestWithoutAttributes::SetVideoLayerID::arguments const): Deleted.
    (Messages::TestWithoutAttributes::DidCreateWebProcessConnection::arguments const): Deleted.
    (Messages::TestWithoutAttributes::InterpretKeyEvent::arguments const): Deleted.
    (Messages::TestWithoutAttributes::DeprecatedOperation::arguments const): Deleted.
    (Messages::TestWithoutAttributes::ExperimentalOperation::arguments const): Deleted.
    * Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:
    (WebKit::IPCTestingAPI::JSIPCConnectionHandle::encode):
    (WebKit::IPCTestingAPI::JSIPCStreamServerConnectionHandle::encode):
    (WebKit::IPCTestingAPI::JSIPCConnectionHandle::encode const): Deleted.
    (WebKit::IPCTestingAPI::JSIPCStreamServerConnectionHandle::encode const): Deleted.
    
    Canonical link: https://commits.webkit.org/264848@main
    mattwoodrow committed Jun 3, 2023
  4. [WebGPU] Support VideoFrame as the source of GPUExternalTexture

    https://bugs.webkit.org/show_bug.cgi?id=256875
    <radar://109442655>
    
    Reviewed by Myles C. Maxfield.
    
    Support VideoFrame as the source of a GPUExternalTexture.
    
    * Source/WebCore/Modules/WebGPU/GPUExternalTextureDescriptor.h:
    (WebCore::GPUExternalTextureDescriptor::mediaIdentifierForSource):
    (WebCore::GPUExternalTextureDescriptor::convertToBacking const):
    * Source/WebCore/Modules/WebGPU/GPUExternalTextureDescriptor.idl:
    * Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUExternalTextureDescriptor.h:
    (PAL::WebGPU::HTMLVideoElementIdentifier::HTMLVideoElementIdentifier):
    (PAL::WebGPU::WebCodecsVideoFrameIdentifier::WebCodecsVideoFrameIdentifier):
    Support either HTMLVideoElement or WebCodecsVideoFrame as the source of a GPUExternalTexture.
    
    * Source/WebCore/platform/VideoFrame.h:
    (WebCore::VideoFrame::resourceIdentifierVector const):
    Default implementation returns and empty byte vector.
    
    * Source/WebCore/platform/VideoPixelFormat.cpp:
    (WebCore::convertVideoFramePixelFormat):
    Allow kCVPixelFormatType_Lossless_420YpCbCr8BiPlanarVideoRange formats.
    
    * Source/WebGPU/WebGPU/ExternalTexture.h:
    (WebGPU::ExternalTexture::pixelBuffer const):
    Retain the CVPixelBuffer which wasn't previously occurring.
    
    * Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
    (WebKit::GPUConnectionToWebProcess::createRemoteGPU):
    Update the lambda to work with HTMLVideoElements and VideoFrames as inputs.
    
    * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp:
    (WebKit::populateConvertedDescriptor):
    (WebKit::RemoteDevice::importExternalTexture):
    Support HTMLVideoElements and VideoFrames as inputs.
    
    * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h:
    * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.h:
    
    * Source/WebKit/Scripts/webkit/messages.py:
    (headers_for_type):
    * Source/WebKit/Shared/WebGPU/WebGPUExternalTextureDescriptor.cpp:
    (WebKit::WebGPU::ConvertToBackingContext::convertToBacking):
    (WebKit::WebGPU::ConvertFromBackingContext::convertFromBacking):
    PAL and WebCore representations are nearly identical.
    
    * Source/WebKit/Shared/WebGPU/WebGPUExternalTextureDescriptor.h:
    * Source/WebKit/Shared/WebGPU/WebGPUExternalTextureDescriptor.serialization.in:
    * Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:
    (WebKit::RemoteVideoFrameProxy::resourceIdentifierVector const):
    Encode the readRefrence into a byte-vector.
    
    * Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.h:
    
    Canonical link: https://commits.webkit.org/264847@main
    mwyrzykowski committed Jun 3, 2023
  5. [JSC] FTL should not load arguments twice for type check and use for …

    …non-full-64bit values
    
    https://bugs.webkit.org/show_bug.cgi?id=192073
    rdar://110121633
    
    Reviewed by Mark Lam.
    
    This patch removes redundant loads from the same address even when the access width is different.
    Like,
    
        @y = Load64(@x)
        @z = Load32(@x)
    
    is converted to
    
        @y = Load64(@x)
        @z = Trunc(@y)
    
    if no clobbering happens between these two loads. This pattern can be seen in FTL since FTL does Int32 check
    with 64bit load for an argument first and later it loads 32bit part of this Int32. Right now, we are loading
    twice. This patch eliminates the second load with B3 CSE.
    
    * Source/JavaScriptCore/b3/B3EliminateCommonSubexpressions.cpp:
    
    Canonical link: https://commits.webkit.org/264846@main
    Constellation committed Jun 3, 2023
  6. WebGL in the GPUP should be enabled for watchOS

    https://bugs.webkit.org/show_bug.cgi?id=257669
    rdar://110191155
    
    Reviewed by Per Arne Vollan and Mike Wyrzykowski.
    
    WebGL in the GPUP should be enabled for watchOS.
    
    * Source/WTF/wtf/PlatformEnable.h:
    
    Canonical link: https://commits.webkit.org/264845@main
    grorg committed Jun 3, 2023
  7. Clean up contentsDirtyRect declaration

    https://bugs.webkit.org/show_bug.cgi?id=257671
    rdar://110191548
    
    Reviewed by Matt Woodrow.
    
    I created a duplicate declaration for contentsDirtyRect in 264840@main. Remove it.
    
    * Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
    
    Canonical link: https://commits.webkit.org/264844@main
    bnham committed Jun 3, 2023
  8. Remove superfluous call in RenderElement::clearChildNeedsLayout

    https://bugs.webkit.org/show_bug.cgi?id=257642
    
    Reviewed by Alan Baradlay.
    
    Remove superfluous call in RenderElement::clearChildNeedsLayout.
    
    * Source/WebCore/rendering/RenderElement.cpp:
    (WebCore::RenderElement::clearChildNeedsLayout):
    
    Canonical link: https://commits.webkit.org/264843@main
    rwlbuis authored and nt1m committed Jun 3, 2023
  9. Viewport layout size is sometimes incorrect when a site specifies an …

    …initial scale
    
    https://bugs.webkit.org/show_bug.cgi?id=257583
    rdar://109483331
    
    Reviewed by Dean Jackson.
    
    On iOS, if a page specifies a viewport meta tag including an initial scale value that is < 1,
    and if the `minimumEffectiveDeviceWidth` is non-zero, the resulting layout width will have an
    undesirable value. Instead, the initial scale should be ignored when the `minimumEffectiveDeviceWidth`
    is specified when computing the layout width.
    
    This PR fixes this by ignoring the initial scale only when the `minimumEffectiveDeviceWidth` actually
    has an effect on the viewport layout width.
    
    Also refactors the `applyViewportArgument` to be simpler.
    
    * Source/WebCore/page/ViewportConfiguration.cpp:
    (WebCore::applyViewportArgument):
    (WebCore::ViewportConfiguration::updateConfiguration):
    (WebCore::ViewportConfiguration::layoutWidth const):
    * Source/WebCore/page/ViewportConfiguration.h:
    (WebCore::ViewportConfiguration::Parameters::operator== const):
    * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * Tools/TestWebKitAPI/Tests/ios/Viewport.mm: Added.
    (TestWebKitAPI::TEST):
    
    Canonical link: https://commits.webkit.org/264842@main
    rr-codes committed Jun 3, 2023
  10. Fix unused function warning added in 264004@main

    https://bugs.webkit.org/show_bug.cgi?id=257661
    
    Reviewed by Don Olmstead.
    
    * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
    (WebKit::isSmallLayerBacking):
    
    Canonical link: https://commits.webkit.org/264841@main
    mokjasmine authored and donny-dont committed Jun 3, 2023

Commits on Jun 2, 2023

  1. Pass scaled layer dirty rect to CA in UIProcess

    https://bugs.webkit.org/show_bug.cgi?id=257664
    rdar://110188394
    
    Reviewed by Simon Fraser.
    
    In 264445@main we passed the unscaled dirty rect to CA. This causes rendering issues. We need to
    pass the scaled dirty rect instead.
    
    * Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
    * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
    (WebKit::RemoteLayerBackingStoreProperties::applyBackingStoreToLayer):
    
    Canonical link: https://commits.webkit.org/264840@main
    bnham committed Jun 2, 2023
  2. [JSC] Use RegExpObject::globalOrSticky in DFG strength reduction

    https://bugs.webkit.org/show_bug.cgi?id=257657
    rdar://110179746
    
    Reviewed by Mark Lam.
    
    We found that RegExpTestInline is not so frequently used and the reason was that we are incorrectly giving up
    RegExpTest etc.'s strength reduction when it is not RegExpExecNonGlobalOrSticky. This means that we cannot use
    RegExpTestInline if RegExp is something global variable.
    
        var regexp = /......../;
    
        function test() {
            return regexp.test(input)
        }
    
    The reason of this restriction is that we need to identify lastIndex value to perform constant folding etc.
    And this global variable's lastIndex is not known. But if regexp is not global and not sticky, lastIndex value
    is not used, so we can attempt to perform strength reduction actually.
    
    However, lastIndex is used by ToIntegerOrInfinity(regexp.lastIndex) before performing RegExp operations even when
    RegExp is not global and not sticky. So, to make folding right, we first need to check that this field is Int32Use.
    
    This patch relaxes the current folding policy. If we cannot identify lastIndex and RegExp is not global and not sticky,
    then we insert GetRegExpObjectLastIndex and Check(Int32Use), and continue doing strength reduction.
    
    * Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:
    (JSC::DFG::StrengthReductionPhase::handleNode):
    
    Canonical link: https://commits.webkit.org/264839@main
    Constellation committed Jun 2, 2023
  3. WebXR: Severe aliasing in WebXR experiences (with WebGL1 contexts)

    https://bugs.webkit.org/show_bug.cgi?id=256861
    rdar://109424254
    
    Reviewed by Dan Glastonbury.
    
    WebXR sessions using WebGL1 contexts are unable to turn on
    multisampling. I'm pretty sure this was my fault, but I can't
    remember if it was intentional or a mistake. Either way it is
    a bug.
    
    Fix this by implementing the multisample renderbuffer creation
    and resolution steps. Since we're doing this on a WebGL1 context,
    the normal API will be invalid (it requires GLES3), so call the
    extension API instead. This means we need to expose some extra methods
    on GraphicsContextGL.
    
    Lastly, the framebuffer textures we get are SRGB8_ALPHA8 which
    requires an extension to be enabled with a WebGL1 context when
    we're talking to an XR-compatible context. Similarly, we
    enable the extension to allow multisampled framebuffers.
    
    * Source/WebCore/Modules/webxr/WebXROpaqueFramebuffer.cpp:
    (WebCore::WebXROpaqueFramebuffer::endFrame): call blitFramebufferANGLE.
    (WebCore::WebXROpaqueFramebuffer::setupFramebuffer): Implement logic for WebGL 1.
    * Source/WebCore/platform/graphics/GraphicsContextGL.h:
    * Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp: Implement the extension API/
    (WebCore::GraphicsContextGLANGLE::renderbufferStorageMultisampleANGLE):
    (WebCore::GraphicsContextGLANGLE::blitFramebufferANGLE):
    * Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.h:
    * Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:
    (WebCore::GraphicsContextGLCocoa::platformInitialize): Turn on the sRGB extension.
    * Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
    * Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:
    (renderbufferStorageMultisampleANGLE):
    (blitFramebufferANGLE):
    * Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
    * Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:
    (WebKit::RemoteGraphicsContextGLProxy::renderbufferStorageMultisampleANGLE):
    (WebKit::RemoteGraphicsContextGLProxy::blitFramebufferANGLE):
    
    Canonical link: https://commits.webkit.org/264838@main
    grorg committed Jun 2, 2023
  4. Add Lockdown Mode entitlement

    https://bugs.webkit.org/show_bug.cgi?id=257655
    rdar://110178613
    
    Reviewed by Brent Fulgham.
    
    Add Lockdown Mode entitlement and use it in the WebContent sandbox instead of JIT entitlement.
    
    * Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
    * Source/WebKit/Scripts/process-entitlements.sh:
    
    Canonical link: https://commits.webkit.org/264837@main
    pvollan committed Jun 2, 2023
  5. [WebGPU] Update WebGPU.h to upstream ToT

    https://bugs.webkit.org/show_bug.cgi?id=257640
    <rdar://problem/110156868>
    
    Reviewed by Mike Wyrzykowski.
    
    This updates WebGPU.h to the revision 245130311ef771c958ba43c322aa7ef1f9edfb8f at
    https://github.com/webgpu-native/webgpu-headers.
    
    This does a few things:
    - All objects get retain/release calls. This is really exciting because it means
          can delete PAL::WebGPU::DeviceWrapper and PAL::WebGPU::SwapChainWrapper.
          I'll do that in a follow-up patch. Also, we can delete the release calls
          from WebGPUExt.h.
    - The header now has places to put NS_REFINED_FOR_SWIFT. I've already started
          creating a Swift facade which can use this at
          #13849
    - The header now has places to put nullability macros. I'll do this in a follow-
          up patch.
    - The device lost callback has moved from being set in a method to being part of
          the device's creation descriptor. (This means it no longer can change
          during the lifetime of the device, but instead has to be constant for a
          device.) I ended up actually deleting the implementation of this, because
          the model is significantly different now; it's now a "push" operation from
          the GPUP to the WP, rather than a "pull" model. I'll reimplement this in a
          follow-up patch.
    - A few enums have been tweaked.
    
    * Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
    (WebCore::GPUDevice::lost):
    * Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.cpp:
    (PAL::WebGPU::supportedFeatures):
    (PAL::WebGPU::AdapterImpl::requestDevice):
    * Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.cpp:
    (PAL::WebGPU::DeviceImpl::resolveDeviceLostPromise): Deleted.
    * Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h:
    * Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUDevice.h:
    * Source/WebGPU/WebGPU/Adapter.mm:
    (wgpuAdapterReference):
    * Source/WebGPU/WebGPU/BindGroup.mm:
    (wgpuBindGroupReference):
    * Source/WebGPU/WebGPU/BindGroupLayout.mm:
    (wgpuBindGroupLayoutReference):
    * Source/WebGPU/WebGPU/Buffer.mm:
    (WebGPU::Buffer::mapAsync):
    (wgpuBufferReference):
    * Source/WebGPU/WebGPU/CommandBuffer.mm:
    (wgpuCommandBufferReference):
    * Source/WebGPU/WebGPU/CommandEncoder.mm:
    (wgpuCommandEncoderReference):
    * Source/WebGPU/WebGPU/ComputePassEncoder.mm:
    (wgpuComputePassEncoderReference):
    * Source/WebGPU/WebGPU/ComputePipeline.mm:
    (wgpuComputePipelineReference):
    * Source/WebGPU/WebGPU/Device.h:
    * Source/WebGPU/WebGPU/Device.mm:
    (wgpuDeviceReference):
    (wgpuDevicePopErrorScope):
    (wgpuDevicePopErrorScopeWithBlock):
    (WebGPU::Device::setDeviceLostCallback): Deleted.
    (wgpuDeviceSetDeviceLostCallback): Deleted.
    (wgpuDeviceSetDeviceLostCallbackWithBlock): Deleted.
    * Source/WebGPU/WebGPU/Instance.mm:
    (wgpuInstanceReference):
    * Source/WebGPU/WebGPU/PipelineLayout.mm:
    (wgpuPipelineLayoutReference):
    * Source/WebGPU/WebGPU/PresentationContext.mm:
    (wgpuSurfaceReference):
    (wgpuSwapChainReference):
    (wgpuSwapChainRelease):
    * Source/WebGPU/WebGPU/QuerySet.mm:
    (wgpuQuerySetReference):
    * Source/WebGPU/WebGPU/Queue.mm:
    (wgpuQueueReference):
    * Source/WebGPU/WebGPU/RenderBundle.mm:
    (wgpuRenderBundleReference):
    * Source/WebGPU/WebGPU/RenderBundleEncoder.mm:
    (wgpuRenderBundleEncoderReference):
    * Source/WebGPU/WebGPU/RenderPassEncoder.mm:
    (wgpuRenderPassEncoderReference):
    * Source/WebGPU/WebGPU/RenderPipeline.mm:
    (wgpuRenderPipelineReference):
    * Source/WebGPU/WebGPU/Sampler.mm:
    (wgpuSamplerReference):
    * Source/WebGPU/WebGPU/ShaderModule.mm:
    (wgpuShaderModuleReference):
    * Source/WebGPU/WebGPU/Texture.mm:
    (wgpuTextureReference):
    * Source/WebGPU/WebGPU/TextureView.mm:
    (wgpuTextureViewReference):
    * Source/WebGPU/WebGPU/WebGPU.h:
    * Source/WebGPU/WebGPU/WebGPUExt.h:
    * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp:
    (WebKit::RemoteDevice::resolveDeviceLostPromise): Deleted.
    * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h:
    * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp:
    (WebKit::WebGPU::RemoteDeviceProxy::resolveDeviceLostPromise): Deleted.
    * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h:
    
    Canonical link: https://commits.webkit.org/264836@main
    litherum committed Jun 2, 2023
  6. Always use no-quirks mode for CSS.supports()

    https://bugs.webkit.org/show_bug.cgi?id=257643
    rdar://110162243
    
    Reviewed by Tim Nguyen.
    
    Align with the standard and other browsers. In particular
    
      https://drafts.csswg.org/css-color-4/#quirky-color
      https://drafts.csswg.org/css-values-4/#deprecated-quirky-length
    
    mandate this and those are the only quirks applying to CSS.supports().
    As stated there this is not applicable to @supports.
    
    * LayoutTests/css3/css-supports-document-parser-context-expected.txt:
    * LayoutTests/css3/css-supports-document-parser-context.html:
    * LayoutTests/css3/resources/css-supports-document-parser-context-nonstrict.html:
    * LayoutTests/imported/w3c/resources/import-expectations.json:
    * LayoutTests/imported/w3c/web-platform-tests/quirks/classname-query-after-sibling-adoption.html:
    * LayoutTests/imported/w3c/web-platform-tests/quirks/supports-expected.txt:
    * LayoutTests/imported/w3c/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-expected.html:
    * LayoutTests/imported/w3c/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards-ref.html:
    * LayoutTests/imported/w3c/web-platform-tests/quirks/text-decoration-doesnt-propagate-into-tables/standards.html:
    * LayoutTests/tests-options.json:
    * Source/WebCore/css/DOMCSSNamespace.cpp:
    (WebCore::DOMCSSNamespace::supports):
    
    Canonical link: https://commits.webkit.org/264835@main
    annevk committed Jun 2, 2023
  7. [WGSL] Global variable rewriter shouldn't record local reads

    https://bugs.webkit.org/show_bug.cgi?id=257598
    rdar://110104940
    
    Reviewed by Mike Wyrzykowski.
    
    While finalizing PR#14549, a mistake was made where we record reads of local
    variables as if we were reading from a global. As a result, we try rewrite the
    global variable access, which fails, as the variable wasn't a global to begin
    with. The fix is to keep track of whether we are reading a global or local
    variable, and only record the read if it's a global.
    
    * Source/WebGPU/WGSL/GlobalVariableRewriter.cpp:
    (WGSL::RewriteGlobalVariables::visit):
    (WGSL::RewriteGlobalVariables::readVariable):
    
    Canonical link: https://commits.webkit.org/264834@main
    tadeuzagallo committed Jun 2, 2023
  8. [iOS] Memory leak when long pressing images

    https://bugs.webkit.org/show_bug.cgi?id=257633
    rdar://109165223
    
    Reviewed by Megan Gardner and Wenson Hsieh.
    
    When long pressing an image (bringing up a context menu) on iOS,
    `InteractionInformationAtPosition` is sent to the UI process.
    
    `InteractionInformationAtPosition` is used to create `WKContextMenuElementInfo`,
    an API object that contains information about the element that is associated
    with the context menu.
    
    However, `WKContextMenuElementInfo` is backed by an `API::ContextMenuElementInfo`.
    Like all objects conforming to `WKObject`, the backing object is stored as a
    reference. Consequently, the backing object is not automatically destroyed once
    `WKContextMenuElementInfo` is deallocated. Consequently, a memory leak occurs
    after `WKContextMenuElementInfo` is deallocated.
    
    To fix, implement `-[WKContextMenuElementInfo dealloc]` and explicitly destroy
    the backing object.
    
    * Source/WebKit/UIProcess/API/Cocoa/WKContextMenuElementInfo.mm:
    (-[WKContextMenuElementInfo dealloc]):
    
    Implement `-dealloc`, matching other `WKObject`s.
    
    Canonical link: https://commits.webkit.org/264833@main
    pxlcoder committed Jun 2, 2023
  9. [Cocoa] Sometimes a YouTube video is incorrectly sized, and doesn't r…

    …espond to window resize
    
    https://bugs.webkit.org/show_bug.cgi?id=257628
    rdar://109754524
    
    Reviewed by Simon Fraser.
    
    `-[WebAVPlayerLayer layoutSublayers]` will calculate a `targetVideoFrame` based on the current
    videoLayer's bounds, the videoDimensions, and gravity. If this value matches the current video
    frame, it bails out early without making any changes.
    
    However, it doesn't save `targetVideoFrame` to `_targetVideoFrame`. If the gravity, videoDimensions,
    or even the videoLayer's bounds change, and there's an existing pending call to `-resolveBounds`,
    an incorrent frame will be set on the videoLayer (whatever the last successful call to
    `-layoutSublayers` generated).
    
    Rather than create a local `targetVideoFrame`, just save the results of calling
    `-calculateTargetVideoFrame` to the `_targetVideoFrame` ivar. This ensures that subsequent calls to
    `-resolveBounds` operate on the correct values.
    
    Extensive drive-by fix: In investigating this bug, there were a number of times where logging which
    included a frame's location would have been useful. But FloatPoint and FloatRect don't have logging
    methods to convert their values to a String (only FloatSize does). So this patch adds those missing
    logging methods and converts existing logging to log the whole rect.
    
    * Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm:
    (-[WebAVPlayerLayer layoutSublayers]):
    (-[WebAVPlayerLayer resolveBounds]):
    * Source/WebCore/platform/graphics/FloatPoint.cpp:
    (WebCore::FloatPoint::toJSONObject const):
    (WebCore::FloatPoint::toJSONString const):
    * Source/WebCore/platform/graphics/FloatPoint.h:
    (WTF::LogArgument<WebCore::FloatPoint>::toString):
    * Source/WebCore/platform/graphics/FloatRect.cpp:
    (WebCore::FloatRect::toJSONObject const):
    (WebCore::FloatRect::toJSONString const):
    * Source/WebCore/platform/graphics/FloatRect.h:
    (WTF::LogArgument<WebCore::FloatRect>::toString):
    * Source/WebCore/platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:
    (WebCore::VideoLayerManagerObjC::setVideoLayer):
    * Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenModelContext::setVideoLayerFrame):
    
    Canonical link: https://commits.webkit.org/264832@main
    jernoble committed Jun 2, 2023
  10. REGRESSION (259167@main): [ macOS ] webaudio/audiocontext-large-sampl…

    …erate.html is a flaky failure
    
    https://bugs.webkit.org/show_bug.cgi?id=256091
    rdar://108658391
    
    Reviewed by Youenn Fablet.
    
    AudioContext is slow to start if the test starts the GPU process.
    The tests used setTimeout which could fire before the AudioContext
    handled the start.
    
    Use AudioContext.onstatechange to trigger the test of
    AudioContext.state == "running".
    
    * LayoutTests/platform/mac/TestExpectations:
    * LayoutTests/webaudio/audiocontext-large-samplerate.html:
    * LayoutTests/webaudio/audiocontext-low-samplerate.html:
    
    Canonical link: https://commits.webkit.org/264831@main
    kkinnunen-apple committed Jun 2, 2023
  11. [ iOS ] imported/w3c/web-platform-tests/screen-orientation/fullscreen…

    …-interactions.html is a flaky failure
    
    https://bugs.webkit.org/show_bug.cgi?id=256671
    rdar://109537056
    
    Reviewed by Chris Dumez.
    
    Refactored the test so to make it less flaky. Tested it a few thousand times locally.
    
    * LayoutTests/imported/w3c/web-platform-tests/screen-orientation/fullscreen-interactions-expected.txt:
    * LayoutTests/imported/w3c/web-platform-tests/screen-orientation/fullscreen-interactions.html:
    * LayoutTests/imported/w3c/web-platform-tests/screen-orientation/resources/orientation-utils.js:
    (export.async attachIframe):
    * LayoutTests/platform/ios-wk2/TestExpectations:
    * LayoutTests/platform/ios/imported/w3c/web-platform-tests/screen-orientation/fullscreen-interactions-expected.txt:
    * LayoutTests/platform/mac-wk2/TestExpectations:
    
    Canonical link: https://commits.webkit.org/264830@main
    marcoscaceres committed Jun 2, 2023
  12. [CMake] Unify GStreamer sources

    https://bugs.webkit.org/show_bug.cgi?id=257562
    
    Reviewed by Carlos Garcia Campos.
    
    Flag the GStreamer GObject subclasses as no-unify, undefine GST_CAT_DEFAULT at the end of each unit
    to avoid warnings about its redefinition in neighbour units.
    
    Most of the GBM are now no-unify, otherwise the epoxy include from MediaPlayerPrivateGStreamer
    throws an error...
    
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerSctpTransportBackend.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp:
    * Source/WebCore/SourcesGTK.txt:
    * Source/WebCore/SourcesWPE.txt:
    * Source/WebCore/platform/GStreamer.cmake:
    * Source/WebCore/platform/SourcesGStreamer.txt: Added.
    * Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
    (WebCore::initializeAudioDestinationDebugCategory):
    (WebCore::maximumNumberOfOutputChannels):
    (WebCore::AudioDestination::create):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
    (WebCore::createBusFromInMemoryAudioFile):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
    (WebCore::initializeAudioSourceProviderDebugCategory):
    (WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerSinksWorkarounds.cpp:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp:
    * Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/TextSinkGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.cpp:
    (WebCore::gstDecoderWorkQueue):
    (WebCore::GStreamerVideoDecoder::create):
    (WebCore::GStreamerVideoDecoder::decode):
    (WebCore::GStreamerVideoDecoder::flush):
    (WebCore::gstWorkQueue): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp:
    (WebCore::gstEncoderWorkQueue):
    (WebCore::GStreamerVideoEncoder::create):
    (WebCore::GStreamerVideoEncoder::encode):
    (WebCore::GStreamerVideoEncoder::flush):
    (WebCore::gstWorkQueue): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
    (WebCore::ensureVideoFrameDebugCategoryInitialized):
    (WebCore::GstSampleColorConverter::singleton):
    (WebCore::VideoFrameGStreamer::VideoFrameGStreamer):
    (WebCore::ensureDebugCategoryInitialized): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
    (WebCore::ensureVideoTrackDebugCategoryInitialized):
    (WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer):
    (WebCore::ensureDebugCategoryInitialized): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/eme/CDMProxyThunder.cpp:
    * Source/WebCore/platform/graphics/gstreamer/eme/CDMThunder.cpp:
    * Source/WebCore/platform/graphics/gstreamer/eme/GStreamerEMEUtilities.cpp:
    * Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
    * Source/WebCore/platform/graphics/gstreamer/mse/TrackQueue.cpp:
    * Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp:
    * Source/WebCore/platform/gstreamer/GStreamerElementHarness.cpp:
    * Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp:
    * Source/WebCore/platform/gstreamer/WebKitFliteSourceGStreamer.cpp:
    * Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
    (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
    (WebCore::initializeAudioCapturerDebugCategory):
    (WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
    (WebCore::initializeCapturerDebugCategory):
    (WebCore::GStreamerCapturer::GStreamerCapturer):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
    (WebCore::initializeVideoCaptureSourceDebugCategory):
    (WebCore::m_deviceType):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
    (WebCore::initializeVideoCapturerDebugCategory):
    (WebCore::GStreamerVideoCapturer::GStreamerVideoCapturer):
    (WebCore::initializeDebugCategory): Deleted.
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp:
    
    Canonical link: https://commits.webkit.org/264829@main
    philn committed Jun 2, 2023
  13. [IFC][line-clamp](REGRESSION 264048@main) Yahoo.com: Words are cutoff…

    … on article titles
    
    https://bugs.webkit.org/show_bug.cgi?id=257629
    <rdar://110018946>
    
    Reviewed by Simon Fraser.
    
    1. The "cutoff article titles" is some visible inline content _after_ the clamped line. They are supposed to be clipped off.
    2. The reason why they are visible is because we compute incorrect logical height value for the flex container (box with -webkit-line-clamp)
    3. This incorrectly computed height value makes the flex container too tall revealing content _after_ the clamped line.
    
    The input to the flex container height computation is the flex items' accumulated height (bottom of the last flex item).
    Normally this is based on the _clamped_ content height (see the end of RenderDeprecatedFlexibleBox::layoutVerticalBox), but apparently 264048@main did not cover all the cases.
    
    In 264048@main we started tracking both clamped and unclamped content height on each flex items
    1. clamped height is used to compute the flex container's final height
    2. unclamped height is used to prevent sibling content from getting overlapped
    
    This (#2) was supposed to provide a more reasonable -webkit-line-clamp result; see an example below:
    
     <div style="display: flex; -webkit-line-clamp: 1;">
       <div flex-item>
         flex item is clamped here (this line ends with ellipsis)
         this line is still visible. It is expected unless overflow clipping is applied.
       </div>
       <div flex-item>
         this sibling content is visible and prior to 264048@main it overlapped the lines in the first flex-item
         as the first flex-item height is set to the clamped content height.
       </div>
     </div>
    
    Starting from 264048@main, the second flex-item is placed _below_ the first flex item (and not overlap it)
    This was achieved by letting the flex items keep their unclamped logical height.
    
    However some part of the RenderDeprecatedFlexibleBox (flex container) expects the flex items' logical height match their clamped content height (this is also legacy behavior).
    
    In this patch we start setting the _clamped_ content height on the flex items.
    
    e.g. (assume 20px as line box height)
     <div flex-container with -webkit-line-clamp: 1>
       <div flex-item>
         Flex item is clamped here (this line ends with ellipsis)
         but this line is still visible which is expected unless overflow is clipping is applied.
       </div>
     </div>
    
    The used height of the flex-item is now the height of the first line (20px) (as opposed to the bottom of the second line (40px))
    
    * LayoutTests/TestExpectations:
    * LayoutTests/fast/inline/line-clamp-with-max-height-overflow-expected.html: Added.
    * LayoutTests/fast/inline/line-clamp-with-max-height-overflow.html: Added.
    * LayoutTests/platform/ios/fast/overflow/line-clamp-expected.txt:
    * LayoutTests/platform/mac/fast/overflow/line-clamp-expected.txt:
    * Source/WebCore/rendering/RenderBlockFlow.cpp:
    (WebCore::RenderBlockFlow::layoutModernLines): The only functional change here is:
     setLogicalHeight(borderAndPaddingBefore() + *logicalHeight + borderAndPaddingAfter() + scrollbarLogicalHeight());
    where we set the clamped content height as the logical height.
    
    Canonical link: https://commits.webkit.org/264828@main
    alanbaradlay committed Jun 2, 2023
  14. [Curl] Simplify event handling in CurlRequest::invokeDidReceiveRespon…

    …se()
    
    https://bugs.webkit.org/show_bug.cgi?id=257639
    
    Reviewed by Fujii Hironori.
    
    Replacing the argument of invokeDidReceiveResponse from Action
    to Function makes the subsequent processing easier to understand.
    
    * Source/WebCore/platform/network/curl/CurlRequest.cpp:
    (WebCore::CurlRequest::didReceiveData):
    (WebCore::CurlRequest::didReceiveHeaderFromMultipart):
    (WebCore::CurlRequest::didCompleteTransfer):
    (WebCore::CurlRequest::invokeDidReceiveResponseForFile):
    (WebCore::CurlRequest::invokeDidReceiveResponse):
    (WebCore::CurlRequest::completeDidReceiveResponse):
    * Source/WebCore/platform/network/curl/CurlRequest.h:
    (WebCore::CurlRequest::needToInvokeDidCancelTransfer const):
    (WebCore::CurlRequest::invokeDidReceiveResponse):
    
    Canonical link: https://commits.webkit.org/264827@main
    kshukuwa authored and fujii committed Jun 2, 2023
  15. [GStreamer] Do not activate and fill the gst GL context

    https://bugs.webkit.org/show_bug.cgi?id=257599
    
    Reviewed by Miguel Gomez.
    
    It's only used as a sharing context, so it doesn't need to be activated
    and filled. This way we avoid making the sharing context the current
    one in the main thread forever.
    
    * Source/WebCore/platform/graphics/PlatformDisplay.cpp:
    (WebCore::PlatformDisplay::clearSharingGLContext):
    (WebCore::PlatformDisplay::terminateEGLDisplay):
    * Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp:
    (WebCore::PlatformDisplay::gstGLDisplay const):
    (WebCore::PlatformDisplay::gstGLContext const):
    (createGstGLDisplay): Deleted.
    (PlatformDisplay::tryEnsureGstGLContext const): Deleted.
    (PlatformDisplay::gstGLDisplay const): Deleted.
    (PlatformDisplay::gstGLContext const): Deleted.
    
    Canonical link: https://commits.webkit.org/264826@main
    carlosgcampos authored and magomez committed Jun 2, 2023
  16. Migrate from LineBreakIteratorPool to TextBreakIteratorCache

    https://bugs.webkit.org/show_bug.cgi?id=257590
    rdar://110097890
    
    Reviewed by Yusuke Suzuki.
    
    We have two different classes which do the same thing. I've been working
    on deduplicating them, and this is the last step.
    
    Microbenchmarks say there isn't a performance difference - presumably
    because we're still using ICU to do line breaking. We're just using a
    different intermediate class to get there. (And if the microbenchmarks
    say there isn't a performance difference, then normal benchmarks certainly
    won't say that there's a performance difference.)
    
    * Source/WTF/WTF.xcodeproj/project.pbxproj:
    * Source/WTF/wtf/CMakeLists.txt:
    * Source/WTF/wtf/text/LineBreakIteratorPoolICU.cpp: Removed.
    * Source/WTF/wtf/text/LineBreakIteratorPoolICU.h: Removed.
    * Source/WTF/wtf/text/TextBreakIterator.cpp:
    (WTF::acquireLineBreakIterator): Deleted.
    (WTF::releaseLineBreakIterator): Deleted.
    (WTF::openLineBreakIterator): Deleted.
    (WTF::closeLineBreakIterator): Deleted.
    * Source/WTF/wtf/text/TextBreakIterator.h:
    (WTF::CachedTextBreakIterator::~CachedTextBreakIterator):
    (WTF::CachedTextBreakIterator::CachedTextBreakIterator):
    (WTF::CachedTextBreakIterator::operator=):
    (WTF::CachedTextBreakIterator::preceding const):
    (WTF::CachedTextBreakIterator::following const):
    (WTF::CachedTextBreakIterator::isBoundary const):
    (WTF::LazyLineBreakIterator::get):
    (WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
    (WTF::LazyLineBreakIterator::~LazyLineBreakIterator): Deleted.
    * Source/WTF/wtf/text/icu/TextBreakIteratorICU.h:
    * Source/WebCore/rendering/BreakLines.h:
    (WebCore::nextBreakablePosition):
    
    Canonical link: https://commits.webkit.org/264825@main
    litherum committed Jun 2, 2023
  17. Make sure ImageData objects are shared when doing structured cloning

    https://bugs.webkit.org/show_bug.cgi?id=257626
    
    Reviewed by Darin Adler.
    
    Make sure ImageData objects are shared when doing structured cloning so that
    if you send the same ImageData object is present multiple times in the
    object being serialized, the object identity is preserved after deserializing.
    
    * LayoutTests/imported/w3c/web-platform-tests/webmessaging/without-ports/028-expected.txt:
    * Source/WebCore/bindings/js/SerializedScriptValue.cpp:
    (WebCore::CloneSerializer::dumpIfTerminal):
    (WebCore::CloneSerializer::writeImageDataIndex):
    (WebCore::CloneDeserializer::readImageDataIndex):
    (WebCore::CloneDeserializer::readTerminal):
    
    Canonical link: https://commits.webkit.org/264824@main
    cdumez committed Jun 2, 2023
  18. Web Inspector: REGRESSION(?): Storage: arrow key movement sometimes s…

    …kips items
    
    https://bugs.webkit.org/show_bug.cgi?id=257608
    
    Reviewed by Patrick Angle.
    
    `WI.DataGrid` has two different ways of managing the state of its children:
    - `_children` represents the "original" order of children before any sorting happens.
    - `_rows` contains the visual ordering of children after sorting and whatnot.
    
    The logic that calculates the `previousSibling`/`nextSibling` for each `WI.DataGridNode` happens in two different places:
    1. `WI.DataGridNode.prototype._recalculateSiblings`, which is called by `WI.DataGrid.prototype.insertChild`.
    2. `WI.DataGrid.prototype._sortNodesCallback`, specifically after sorting has finished.
    
    (1) uses `_children` and (2) uses `_rows`, which can lead to issues if the caller doesn't sort the `WI.DataGrid` *after* adding any new `WI.DataGridNode` as in that case the item before it in `_children` might not actually be the item before it in `_rows`.
    
    Imagine we have a `WI.DataGrid` with two children added in reverse alphabetical order but sorted alphabetically:
    
        _children:
            b { previous: a, next: _ }
            a { previous: _, next: b }
    
        _rows:
            a { previous: _, next: b }
            b { previous: a, next: _ }
    
    If we now added another `WI.DataGridNode` for "z" *without* sorting, we'd end up with this:
    
        _children:
            b { previous: a, next: _ }
            a { previous: _, next: z }
            z { previous: a, next: _ }
    
        _rows:
            a { previous: _, next: z }
            b { previous: a, next: _ }
            z { previous: a, next: _ }
    
    Which would cause the user to skip over "b" when pressing the down arrow key if "a" is selected.
    
    I am somewhat doubtful that this is an issue elsewhere in Web Inspector as `WI.PlaceholderDataGridNode` is not used anywhere else (and `WI.DataGrid` is sorta unofficially softly deprecated in favor of `WI.Table`).
    
    * Source/WebInspectorUI/UserInterface/Views/DOMStorageContentView.js:
    (WI.DOMStorageContentView.prototype._populate):
    Always sort *after* adding `WI.DataGridNode`, not before.
    
    Canonical link: https://commits.webkit.org/264823@main
    dcrousso committed Jun 2, 2023
  19. [LibWebRTC] Remove non-existent file from sources after 264715@main

    https://bugs.webkit.org/show_bug.cgi?id=257307
    
    Reviewed by Eric Carlson.
    
    Compilation was failing because file:
    
      - abseil-cpp/absl/synchronization/internal/waiter.cc
    
    was removed after abseil update in 264715@main.
    
    * Source/ThirdParty/libwebrtc/CMakeLists.txt: Remove file 'waiter.cc'
      from LibWebRTC sources.
    
    Canonical link: https://commits.webkit.org/264822@main
    dpino committed Jun 2, 2023
  20. [GTK][WPE] Test gardening for fast/lists/li-br

    Unreviewed test gardening.
    
    Update test expectations after 264248@main in which we updated expectations
    for Mac and iOS but not GTK/WPE. Move pixel png to glib, shared amongst
    GTK and WPE tests.
    
    * LayoutTests/platform/glib/fast/lists/li-br-expected.png: Renamed from LayoutTests/platform/gtk/fast/lists/li-br-expected.png.
    * LayoutTests/platform/glib/fast/lists/li-br-expected.txt:
    
    Canonical link: https://commits.webkit.org/264821@main
    abstractmachines authored and dpino committed Jun 2, 2023
  21. bugs.webkit.org internal server error when limiting search by 1 month

    https://bugs.webkit.org/show_bug.cgi?id=257546
    rdar://110075621
    
    Reviewed by Alexey Proskuryakov.
    
    Fixed SqlifyDate function in Bugzilla/Search.pm such that it multiplies month by 31 days and returns valid date.
    Previously it would change only the month and keep the day of the month the same, causing invalid dates to be
    returned depending on certain dates and how far to go back to.
    
    * Websites/bugs.webkit.org/Bugzilla/Search.pm:
    (SqlifyDate):
    
    Canonical link: https://commits.webkit.org/264820@main
    lingcherd committed Jun 2, 2023
  22. [WinCairo] Unreviewed test gardening

    * LayoutTests/platform/wincairo/TestExpectations:
    
    Canonical link: https://commits.webkit.org/264819@main
    fujii committed Jun 2, 2023
  23. The caret color is sometimes incorrect when specifying `caret-color: …

    …auto`
    
    https://bugs.webkit.org/show_bug.cgi?id=257522
    rdar://110012105
    
    Reviewed by Tim Horton.
    
    * Source/WebCore/editing/FrameSelection.cpp:
    (WebCore::FrameSelection::paintCaret):
    (WebCore::CaretBase::paintCaret const):
    (WebCore::DragCaretController::paintDragCaret const):
    * Source/WebCore/editing/FrameSelection.h:
    * Source/WebCore/platform/CaretAnimator.cpp:
    (WebCore::CaretAnimator::paint const):
    * Source/WebCore/platform/CaretAnimator.h:
    
    Canonical link: https://commits.webkit.org/264818@main
    rr-codes committed Jun 2, 2023
  24. Adjust ContextMenu animation

    https://bugs.webkit.org/show_bug.cgi?id=257540
    <radar://107716428>
    
    Reviewed by Dean Jackson.
    
    Change behavior of context menu animation such that fading is used
    instead of morphing when tapping on the preview.
    
    * Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
    * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):
    (-[WKContentView contextMenuInteraction:configuration:dismissalPreviewForItemWithIdentifier:contextMenuInteraction:previewForDismissingMenuWithConfiguration:]):
    (-[WKContentView contextMenuInteraction:willPerformPreviewActionForMenuWithConfiguration:animator:]):
    (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]):
    
    Canonical link: https://commits.webkit.org/264817@main
    mwyrzykowski committed Jun 2, 2023

Commits on Jun 1, 2023

  1. [JSC] Heap allocation during WebAudio rendering

    https://bugs.webkit.org/show_bug.cgi?id=257488
    rdar://110012510
    
    Reviewed by Yusuke Suzuki.
    
    Avoid a potential heap allocation under AudioWorkletGlobalScope::handlePreRenderTasks()
    caused by grabbing the JSLock. Since the intention of grabbing the JSLock here is to
    delay the draining of the microtasks queue until handlePostRenderTasks(), I introduce
    instead a DrainMicrotaskDelayScope which delays draining of the microtasks queue without
    grabbing the JSLock until the moment we want to drain the queue.
    
    * Source/JavaScriptCore/runtime/VM.cpp:
    (JSC::VM::drainMicrotasks):
    (JSC::VM::DrainMicrotaskDelayScope::DrainMicrotaskDelayScope):
    (JSC::VM::DrainMicrotaskDelayScope::~DrainMicrotaskDelayScope):
    (JSC::VM::DrainMicrotaskDelayScope::operator=):
    (JSC::VM::DrainMicrotaskDelayScope::increment):
    (JSC::VM::DrainMicrotaskDelayScope::decrement):
    * Source/JavaScriptCore/runtime/VM.h:
    (JSC::VM::drainMicrotaskDelayScope):
    * Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.cpp:
    (WebCore::AudioWorkletGlobalScope::handlePreRenderTasks):
    (WebCore::AudioWorkletGlobalScope::handlePostRenderTasks):
    * Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:
    
    Canonical link: https://commits.webkit.org/264816@main
    cdumez committed Jun 1, 2023
Older