[webkit-changes] [WebKit/WebKit] 8d0817: Cherry-pick 260857 at main (b5f2eee537a0). https://bu...

Xabier Rodríguez noreply at github.com
Wed Apr 12 07:12:17 PDT 2023


  Branch: refs/heads/webkitglib/2.38
  Home:   https://github.com/WebKit/WebKit
  Commit: 8d081746e28affd55e4c57930b754c2c7227099e
      https://github.com/WebKit/WebKit/commit/8d081746e28affd55e4c57930b754c2c7227099e
  Author: Ahmad Saleem <ahmad.saleem792+github at gmail.com>
  Date:   2023-04-10 (Mon, 10 Apr 2023)

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

  Log Message:
  -----------
  Cherry-pick 260857 at main (b5f2eee537a0). https://bugs.webkit.org/show_bug.cgi?id=251676

    RenderLayerScrollableArea::updateResizerStyle should early return if there is no resizer
    https://bugs.webkit.org/show_bug.cgi?id=251676

    Reviewed by Simon Fraser.

    Merge - https://chromium.googlesource.com/chromium/blink/+/1add5ffe5081cf282014bc4cfe04b8637244c607

    This is potential optimization by adding early return to "updateResizeStyle" function in case if there is no resizer.

    * Source/WebCore/rendering/RenderLayerScrollableArea.cpp:
    (RenderLayerScrollableArea::updateResizerStyle): Add early return

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


  Commit: 3af3d0e3e2a28f3137f69e1846e7511f4504776f
      https://github.com/WebKit/WebKit/commit/3af3d0e3e2a28f3137f69e1846e7511f4504776f
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    A LayoutTests/media/media-source/media-source-appendbuffer-durationchange-expected.txt
    A LayoutTests/media/media-source/media-source-appendbuffer-durationchange.html
    M Source/WebCore/Modules/mediasource/SourceBuffer.cpp
    M Source/WebCore/Modules/mediasource/SourceBuffer.h
    M Source/WebCore/platform/graphics/SourceBufferPrivate.cpp
    M Source/WebCore/platform/graphics/SourceBufferPrivate.h
    M Source/WebCore/platform/graphics/SourceBufferPrivateClient.h
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
    M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
    M Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp
    M Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h
    M Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp
    M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h
    M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp
    M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h
    M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in

  Log Message:
  -----------
  Cherry-pick 261029 at main (04a684748a69). https://bugs.webkit.org/show_bug.cgi?id=252886

    [MSE] Only fire durationchange after parsing media buffer.
    https://bugs.webkit.org/show_bug.cgi?id=252886
    rdar://105870526

    Reviewed by Youenn Fablet and Jer Noble.

    Per spec MSE spec and the Coded Frame Processing algorithm [1]
    "5. if the media segment contains data beyond the current duration, then
    run the duration change algorithm with new duration set to the maximum of
    the current duration and the [[group end timestamp]]."

    Which occurs once all frames of a media segment added to a source buffer have been processed.
    We were running step 5. after each frame parsed.

    Only perform step 5. once we have parsed the entire buffer.
    Note: Per spec, we should be firing a durationchange event after parsing
    each individual media segment.
    However, our data parsing infrastucture doesn't provide such level of details
    and we can only parse the entire buffer (potentially made of multiple media segments)
    at once, so we only fire a single durationchange in all cases.
    However, this behaviour is preferable to firing hundreds of events unnecessarily.

    The handling of a `durationchange` must occur before the `updateend` is
    fired, so we make the method sourceBufferPrivateDurationChanged asynchronous
    and continue the process once the it completes.

    [1] https://w3c.github.io/media-source/#sourcebuffer-coded-frame-processing

    * LayoutTests/media/media-source/media-source-appendbuffer-durationchange-expected.txt: Added.
    * LayoutTests/media/media-source/media-source-appendbuffer-durationchange.html: Added.
    * Source/WebCore/Modules/mediasource/SourceBuffer.cpp:
    (WebCore::SourceBuffer::sourceBufferPrivateDurationChanged):
    * Source/WebCore/Modules/mediasource/SourceBuffer.h:
    * Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:
    (WebCore::SourceBufferPrivate::appendCompleted): Must be called once all samples have been processed.
    (WebCore::SourceBufferPrivate::didReceiveSample):
    * Source/WebCore/platform/graphics/SourceBufferPrivate.h:
    * Source/WebCore/platform/graphics/SourceBufferPrivateClient.h:
    * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
    * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
    (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged):
    * Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:
    (WebCore::AppendPipeline::consumeAppsinksAvailableSamples):
    * Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
    (WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged): Remove handling of longer needed blockDurationChanges/unblockDurationChanges
    (WebCore::MediaPlayerPrivateGStreamerMSE::blockDurationChanges): Deleted.
    (WebCore::MediaPlayerPrivateGStreamerMSE::unblockDurationChanges): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
    * Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:
    (WebCore::MockSourceBufferPrivate::append): Call appendCompleted.
    * Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:
    (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDurationChanged):
    * Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:
    * Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
    (WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDurationChanged):
    * Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h:
    * Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in:

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


  Commit: a16681caf0c030d47adbbf1882bddac7bea9bd43
      https://github.com/WebKit/WebKit/commit/a16681caf0c030d47adbbf1882bddac7bea9bd43
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/heap/Heap.h
    M Source/JavaScriptCore/heap/HeapInlines.h
    M Source/JavaScriptCore/runtime/ArgList.cpp
    M Source/JavaScriptCore/runtime/ArgList.h
    M Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp
    M Source/WebCore/Modules/webaudio/AudioWorkletProcessor.h
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp

  Log Message:
  -----------
  Cherry-pick 259548.395 at safari-7615.1.26.11-branch (1039f0c3235f). https://bugs.webkit.org/show_bug.cgi?id=254797

    Cherry-pick 2c49ff7b0481. rdar://problem/107369977

        CloneDeserializer::deserialize() should store cell pointers in a MarkedVector.
        https://bugs.webkit.org/show_bug.cgi?id=254797
        rdar://107369977

        Reviewed by Justin Michaud.

        Previously, CloneDeserializer::deserialize() was storing pointers to newly created objects
        in a few Vectors.  This is problematic because the GC is not aware of Vectors, and cannot
        scan them.  In this patch, we refactor the MarkedArgumentBuffer class into a MarkedVector
        template class that offer 2 enhancements:

        1. It can be configured to store specific types of cell pointer types.  This avoids us
           having to constantly cast JSValues into these pointers.

        2. It allows us to specify the type of OverflowHandler we want to use.  In this case,
           we want to use CrashOnOverflow.  The previous MarkedArgumentBuffer always assumes
           RecordOnOverflow.  This allows us to avoid having to manually check for overflows,
           or have to use appendWithCrashOnOverflow.  For our current needs, MarkedVector can be
           used as a drop in replacement for Vector.

        And we fix the CloneDeserializer::deserialize() issue by replacing the use of Vectors
        with MarkedVector instead.

        * Source/JavaScriptCore/heap/Heap.cpp:
        (JSC::Heap::addCoreConstraints):
        * Source/JavaScriptCore/heap/Heap.h:
        * Source/JavaScriptCore/heap/HeapInlines.h:
        * Source/JavaScriptCore/runtime/ArgList.cpp:
        (JSC::MarkedVectorBase::addMarkSet):
        (JSC::MarkedVectorBase::markLists):
        (JSC::MarkedVectorBase::slowEnsureCapacity):
        (JSC::MarkedVectorBase::expandCapacity):
        (JSC::MarkedVectorBase::slowAppend):
        (JSC::MarkedArgumentBufferBase::addMarkSet): Deleted.
        (JSC::MarkedArgumentBufferBase::markLists): Deleted.
        (JSC::MarkedArgumentBufferBase::slowEnsureCapacity): Deleted.
        (JSC::MarkedArgumentBufferBase::expandCapacity): Deleted.
        (JSC::MarkedArgumentBufferBase::slowAppend): Deleted.
        * Source/JavaScriptCore/runtime/ArgList.h:
        (JSC::MarkedVectorWithSize::MarkedVectorWithSize):
        (JSC::MarkedVectorWithSize::at const):
        (JSC::MarkedVectorWithSize::clear):
        (JSC::MarkedVectorWithSize::append):
        (JSC::MarkedVectorWithSize::appendWithCrashOnOverflow):
        (JSC::MarkedVectorWithSize::last const):
        (JSC::MarkedVectorWithSize::takeLast):
        (JSC::MarkedVectorWithSize::ensureCapacity):
        (JSC::MarkedVectorWithSize::hasOverflowed):
        (JSC::MarkedVectorWithSize::fill):
        (JSC::MarkedArgumentBufferWithSize::MarkedArgumentBufferWithSize): Deleted.
        * Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp:
        (WebCore::AudioWorkletProcessor::buildJSArguments):
        * Source/WebCore/Modules/webaudio/AudioWorkletProcessor.h:
        * Source/WebCore/bindings/js/SerializedScriptValue.cpp:
        (WebCore::CloneDeserializer::deserialize):

        Canonical link: https://commits.webkit.org/259548.530@safari-7615-branch

    Identifier: 259548.395 at safari-7615.1.26.11-branch


  Commit: d418e6f5caaf0ef6911e68877e4d9cdfe939486f
      https://github.com/WebKit/WebKit/commit/d418e6f5caaf0ef6911e68877e4d9cdfe939486f
  Author: Adrian Perez de Castro <aperez at igalia.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    M Source/WebCore/html/ImageData.cpp

  Log Message:
  -----------
  Unreviewed non-unified build fix.

* Source/WebCore/html/ImageData.cpp: Add missing
  JavaScriptCore/GenericTypedArrayViewInlines.h header inclusion.


  Commit: d0d840bffefbad9260a7351316b9b4b352e9bd8c
      https://github.com/WebKit/WebKit/commit/d0d840bffefbad9260a7351316b9b4b352e9bd8c
  Author: Maxim Cournoyer <maxim.cournoyer at gmail.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    M Source/cmake/FindJournald.cmake

  Log Message:
  -----------
  Cherry-pick 262163 at main (f2566d6ee880). https://bugs.webkit.org/show_bug.cgi?id=254475

    Fallback to elogind when systemd is unavailable at build time
    https://bugs.webkit.org/show_bug.cgi?id=254475

    Reviewed by Michael Catanzaro.

    The build system supports elogind, but it only considers the
    'libsystemd' library name for the pkg-config lookup and not
    'libelogind'.  This change makes the build system fallback to search
    for libelogind when libsystemd was not found.

    * Source/cmake/FindJournald.cmake [!PC_SYSTEMD_FOUND]: Search for libelogind.

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


  Commit: 1133b3d3a727591cd2614ef7029b0170b88f5ad6
      https://github.com/WebKit/WebKit/commit/1133b3d3a727591cd2614ef7029b0170b88f5ad6
  Author: Xabier Rodriguez-Calvar <calvaris at igalia.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    M Source/WebCore/testing/MockCDMFactory.cpp

  Log Message:
  -----------
  Cherry-pick 262819 at main (cc44de0d9d44). https://bugs.webkit.org/show_bug.cgi?id=251550

    [EME] media/encrypted-media/mock-MediaKeySession-generateRequest.html is a flaky crash
    https://bugs.webkit.org/show_bug.cgi?id=251550

    Reviewed by Jer Noble.

    We need to bail out with empty IDs.

    * Source/WebCore/testing/MockCDMFactory.cpp:
    (WebCore::MockCDMFactory::hasSessionWithID):
    (WebCore::MockCDMFactory::removeSessionWithID):

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


Compare: https://github.com/WebKit/WebKit/compare/d77f824d9e1f...1133b3d3a727


More information about the webkit-changes mailing list