[webkit-changes] [WebKit/WebKit] f387c2: Cherry-pick 260860 at main (e9dd88dee673). https://bu...

Patrick noreply at github.com
Sun Mar 5 05:35:27 PST 2023


  Branch: refs/heads/webkitglib/2.38
  Home:   https://github.com/WebKit/WebKit
  Commit: f387c2f168e6902617dd1de91f2d4bc75ac4ccb6
      https://github.com/WebKit/WebKit/commit/f387c2f168e6902617dd1de91f2d4bc75ac4ccb6
  Author: Charlie Wolfe <charliew at apple.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    A LayoutTests/http/tests/navigation/cross-origin-iframe-location-hash-reexecute-onload-expected.txt
    A LayoutTests/http/tests/navigation/cross-origin-iframe-location-hash-reexecute-onload.html
    A LayoutTests/http/tests/navigation/resources/change-location-hash-onload.html
    M Source/WebCore/loader/FrameLoader.cpp

  Log Message:
  -----------
  Cherry-pick 260860 at main (e9dd88dee673). https://bugs.webkit.org/show_bug.cgi?id=252931

    window.onload is repeatedly re-executed when changing URL fragment during onload
    https://bugs.webkit.org/show_bug.cgi?id=252931
    rdar://105158419

    Reviewed by Chris Dumez.

    When a cross-origin iframe changes its fragment identifier while its load event is being processed,
    we end up in a state where we will continually re-fire window.onload. We should fix this by only
    firing the load event on the frame's owner element. This still addresses the concern the original
    change fixed (259384 at main), but without needing to always re-fire the window load event.

    * LayoutTests/http/tests/navigation/cross-origin-iframe-location-hash-reexecute-onload-expected.txt: Added.
    * LayoutTests/http/tests/navigation/cross-origin-iframe-location-hash-reexecute-onload.html: Added.
    * LayoutTests/http/tests/navigation/resources/change-location-hash-onload.html: Added.
    * Source/WebCore/loader/FrameLoader.cpp:
    (WebCore::FrameLoader::loadInSameDocument):

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


  Commit: b30ff7c04c38edddf1a838b6933c926a2c466cc3
      https://github.com/WebKit/WebKit/commit/b30ff7c04c38edddf1a838b6933c926a2c466cc3
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 261072 at main (5c473b4124bf). https://bugs.webkit.org/show_bug.cgi?id=253244

    [GStreamer] Establish locking when mapping gbm_bo objects for software-decoded data upload
    https://bugs.webkit.org/show_bug.cgi?id=253244

    Reviewed by Philippe Normand.

    When separate GStreamer pipelines are established for different video elements,
    mapping the gbm_bo objects in parallel across different threads can lead to
    crashes and GPU memory corruption.

    The different gbm_bo objects originate from a single gbm_device, which is fine.
    Spawning gbm_bo objects and retrieving different attributes from them isn't
    showing as problematic, but libgbm thread safety guarantees still need research.

    Mapping gbm_bo objects in parallel is proving as problematic, and the length of
    the upload of software-decoded data into the mapped memory regions takes long
    enough for these problems to inhibit stability. To avoid that, a global lock is
    provided on the gbm_bo-mapping Destination class inside the
    MediaPlayerPrivateGStreamer::pushDMABufToCompositor() method. This lock is
    activated whenever data for a given plane is moved over from the GStreamer-based
    software decoder into the gbm_bo object.

    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):

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


  Commit: f832b533ef178df4e2055f394118ca162a59170c
      https://github.com/WebKit/WebKit/commit/f832b533ef178df4e2055f394118ca162a59170c
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 261077 at main (9b1c8b87c0a4). https://bugs.webkit.org/show_bug.cgi?id=253245

    [GStreamer] Improve GBM swapchain buffer handling
    https://bugs.webkit.org/show_bug.cgi?id=253245

    Reviewed by Philippe Normand.

    In MediaPlayerPrivateGStreamer::pushDMABufToCompositor(), when allocating
    buffer objects from the GBMBufferSwapchain to upload the software-decoded
    video data, do a null check on the retrieved buffer. This avoids proceeding with
    a null object that would be returned when for whatever perverse reason the
    swapchain is drained of available buffers.

    One such reason is when allocating, retrieving and locking buffers from the
    swapchain under an inactive proxy. In that case, the buffer doesn't end up
    being pushed into the composition, and it's then also never released and made
    available for reuse, effectively draining the swapchain.

    This case is avoidable through earlier detection of an inactive proxy. The proxy
    lock and is-active check are unified between different codepaths and done before
    deciding which codepath is taken.

    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):

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


  Commit: 1dd62a29b52f009da1813fbe45dfbc9b879481c5
      https://github.com/WebKit/WebKit/commit/1dd62a29b52f009da1813fbe45dfbc9b879481c5
  Author: Brian Weinstein <bweinstein at apple.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    M LayoutTests/http/tests/contentextensions/css-display-none.html
    M LayoutTests/http/tests/contentextensions/css-display-none.html.json
    M Source/WebCore/contentextensions/ContentExtension.cpp
    M Source/WebCore/contentextensions/ContentExtensionParser.cpp
    M Source/WebCore/contentextensions/ContentExtensionParser.h
    M Source/WebCore/contentextensions/ContentExtensionStyleSheet.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp

  Log Message:
  -----------
  Cherry-pick 259068 at main (355ce06ba535). https://bugs.webkit.org/show_bug.cgi?id=250609

    Safari Content Blocker doesn't support :has() selector
    https://bugs.webkit.org/show_bug.cgi?id=250609
    rdar://103976010

    Reviewed by Antti Koivisto and Alex Christensen.

    When creating the CSSParsers for content blocker parsing and compilation, make sure to opt
    into hasPseudoClassEnabled so selectors like :has work. The places this was needed were:
    - ContentExtensionParser (for parsing the rules)
    - ContentExtension (for the global display none rules)
    - ContentExtensionStyleSheet (for the other display none rules)

    Also update the contentextensions css-display-none test to test this functionality.

    * Source/WebCore/contentextensions/ContentExtension.cpp:
    (WebCore::ContentExtensions::ContentExtension::compileGlobalDisplayNoneStyleSheet):
    * Source/WebCore/contentextensions/ContentExtensionParser.cpp:
    (WebCore::ContentExtensions::isValidCSSSelector):

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


  Commit: a334683ab68e4ea4df960843a310979a98a6c63b
      https://github.com/WebKit/WebKit/commit/a334683ab68e4ea4df960843a310979a98a6c63b
  Author: Brian Weinstein <bweinstein at apple.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    M LayoutTests/http/tests/contentextensions/css-display-none.html
    M LayoutTests/http/tests/contentextensions/css-display-none.html.json
    M Source/WebCore/contentextensions/ContentExtensionParser.cpp

  Log Message:
  -----------
  Cherry-pick 260638 at main (6f913a33098b). https://bugs.webkit.org/show_bug.cgi?id=252677

    Content Blocker API ignores some CSS Selectors with uppercase letters.
    https://bugs.webkit.org/show_bug.cgi?id=252677
    rdar://105648971

    Reviewed by Antti Koivisto.

    The fix for https://bugs.webkit.org/show_bug.cgi?id=250609 caused us to use Quirks mode when both
    parsing content blocker rules and applying them.

    That caused this regression, since rules like .SomeCLass stopped working in Quirks mode.

    To fix this, make us use Quirks mode when actually parsing the rules, but standard mode when
    applying them, to match how the behavior was before https://bugs.webkit.org/show_bug.cgi?id=250609.

    * LayoutTests/http/tests/contentextensions/css-display-none.html:
    * LayoutTests/http/tests/contentextensions/css-display-none.html.json:
    * Source/WebCore/contentextensions/ContentExtensionParser.cpp:
    (WebCore::ContentExtensions::isValidCSSSelector):
    (WebCore::ContentExtensions::contentExtensionCSSParserContext):

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


  Commit: 53eccce198cbcef6fdc29316456356d3323db2d8
      https://github.com/WebKit/WebKit/commit/53eccce198cbcef6fdc29316456356d3323db2d8
  Author: Patrick Griffis <pgriffis at igalia.com>
  Date:   2023-03-05 (Sun, 05 Mar 2023)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp

  Log Message:
  -----------
  Cherry-pick 260580 at main (70ed120ac0ba). https://bugs.webkit.org/show_bug.cgi?id=252601

    [GStreamer] GST_WEBRTC_DATA_CHANNEL_STATE_NEW was removed in 1.21.1
    https://bugs.webkit.org/show_bug.cgi?id=252601

    Reviewed by Philippe Normand.

    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp:
    (WebCore::GStreamerDataChannelHandler::checkState):

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


Compare: https://github.com/WebKit/WebKit/compare/f0479f9c7c45...53eccce198cb


More information about the webkit-changes mailing list