[webkit-changes] [WebKit/WebKit] 29ce0c: Cherry-pick 274448 at main (ac976a6da88c). https://bu...

Tim Nguyen noreply at github.com
Fri Feb 23 00:18:06 PST 2024


  Branch: refs/heads/webkitglib/2.44
  Home:   https://github.com/WebKit/WebKit
  Commit: 29ce0c76196f16f8d5c901e734addfa40cbf7ce4
      https://github.com/WebKit/WebKit/commit/29ce0c76196f16f8d5c901e734addfa40cbf7ce4
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WTF/wtf/NativePromise.h
    M Tools/TestWebKitAPI/Tests/WTF/NativePromise.cpp

  Log Message:
  -----------
  Cherry-pick 274448 at main (ac976a6da88c). https://bugs.webkit.org/show_bug.cgi?id=269160

    NativePromise: ASSERTION FAILED: !m_callback
    https://bugs.webkit.org/show_bug.cgi?id=269160
    rdar://122738739

    Reviewed by Youenn Fablet.

    Following 273828 at main, NativePromiseRequest now inherits from CanMakeWeakPtr,
    making it possible to disconnect it while not owning it. If the NativePromiseRequest
    was owned by the NativePromise callback, when disconnecting the NativePromiseRequest
    the callback would be deleted before the NativePromiseRequest::m_callback member
    got cleared, which trigger the assertion.
    We clear m_callback prior call disconnect().

    Added API test.

    * Source/WTF/wtf/NativePromise.h:
    (WTF::NativePromiseRequest::disconnect):
    * Tools/TestWebKitAPI/Tests/WTF/NativePromise.cpp:
    (TestWebKitAPI::TEST):

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


  Commit: 7e26f96d7f4540893b35a15a5cd0f2ba61d3487e
      https://github.com/WebKit/WebKit/commit/7e26f96d7f4540893b35a15a5cd0f2ba61d3487e
  Author: Jer Noble <jer.noble at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp

  Log Message:
  -----------
  Cherry-pick 274460 at main (8a0987250d87). https://bugs.webkit.org/show_bug.cgi?id=269120

    [iOS] youtube.com: Exiting fullscreen causes page to scroll down slightly, cropping top of video
    https://bugs.webkit.org/show_bug.cgi?id=269120
    rdar://120492434

    Reviewed by Aditya Keerthi.

    In 271567 at main, we added a call to `scrollIntoView()` to ensure the element which was exiting
    fullscreen was visible in the viewport, no matter how much layout shifted the element during
    the fullscreen transition. However, this has the side effect of "pinning" the fullscreen element
    to the top of the page, which for the case of YouTube, is under the YouTube header bar.

    Instead, call `scrollIntoViewIfNotVisible()` (passing in `true` to center the element if
    offscreen) which is a no-op if the element is already visible.

    * Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp:
    (WebKit::WebFullScreenManager::didExitFullScreen):

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


  Commit: 43eff15a763d3c22e3a5f3ab3df1b550c8878cc9
      https://github.com/WebKit/WebKit/commit/43eff15a763d3c22e3a5f3ab3df1b550c8878cc9
  Author: Vivienne Watermeier <vwatermeier at igalia.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

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

  Log Message:
  -----------
  Cherry-pick 274464 at main (41a2e3c52030). https://bugs.webkit.org/show_bug.cgi?id=268559

    [GStreamer] Include MpegAudioParse plugin in Brcm Nexus gstreamer pipeline
    https://bugs.webkit.org/show_bug.cgi?id=268559

    Reviewed by Xabier Rodriguez-Calvar.

    On broadcom/nexus with progressive audio, gst_element_query_duration()
    returns wrong values, which is avoided by forcing mpegaudioparse.

    See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/1213

    Original author: suresh-khurdiya-epam <skhurdiya.contractor at libertyglobal.com>

    * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
    (WebCore::ensureGStreamerInitialized): Override mpegaudioparse rank

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


  Commit: cf178e40b0ca3b14c5c29600c9d057c649f00444
      https://github.com/WebKit/WebKit/commit/cf178e40b0ca3b14c5c29600c9d057c649f00444
  Author: Vivienne Watermeier <vwatermeier at igalia.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

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

  Log Message:
  -----------
  Cherry-pick 274469 at main (48efea40e980). https://bugs.webkit.org/show_bug.cgi?id=268549

    [GStreamer] Trim leading zeroes from track IDs
    https://bugs.webkit.org/show_bug.cgi?id=268549

    Reviewed by Xabier Rodriguez-Calvar and Philippe Normand.

    Qtdemux inserts leading zeroes when generating stream-ids, this patch
    trims them in TrackPrivateBaseGStreamer for a better representation of
    their underlying integers.

    * Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
    (WebCore::trimStreamId):
    (WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
    (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfStreamChanged):
    (WebCore::TrackPrivateBaseGStreamer::trackIdFromPadStreamStartOrUniqueID):

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


  Commit: 8450b1daa6de8014b177008750d111d185ee590b
      https://github.com/WebKit/WebKit/commit/8450b1daa6de8014b177008750d111d185ee590b
  Author: Dana Estra <destra at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebCore/html/track/VTTCue.cpp

  Log Message:
  -----------
  Cherry-pick 274480 at main (379505f1665c). https://bugs.webkit.org/show_bug.cgi?id=269085

    Subtitle size is enlarged in Full screen
    https://bugs.webkit.org/show_bug.cgi?id=269085
    rdar://122584350

    Reviewed by Jer Noble.

    Webkit-media-text-track-display pseudo-elements should have a font size unit of CQMIN instead of CQH. CQMIN will be calculated to be CQW if the width of the video element is shorter than the height, or CQH vice versa. This creates a more appropriate font size.

    * Source/WebCore/html/track/VTTCue.cpp:
    (WebCore::VTTCueBox::applyCSSProperties):

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


  Commit: b3715824855ef7f7f9e1d738938e6956f7012da3
      https://github.com/WebKit/WebKit/commit/b3715824855ef7f7f9e1d738938e6956f7012da3
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebCore/page/Quirks.cpp

  Log Message:
  -----------
  Cherry-pick 274575 at main (31136601a244). https://bugs.webkit.org/show_bug.cgi?id=269308

    Null pointer dereference in elementHasClassInClosestAncestors
    https://bugs.webkit.org/show_bug.cgi?id=269308
    rdar://122892811

    Reviewed by Brent Fulgham.

    Ensure ancestor is non-null before accessing it.

    * Source/WebCore/page/Quirks.cpp:
    (WebCore::elementHasClassInClosestAncestors):

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


  Commit: 26b04adc18e67f79da629ce14704767fa9056242
      https://github.com/WebKit/WebKit/commit/26b04adc18e67f79da629ce14704767fa9056242
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebCore/html/HTMLSelectElement.cpp
    M Source/WebCore/rendering/RenderMenuList.cpp

  Log Message:
  -----------
  Cherry-pick 274586 at main (35318b4d5407). https://bugs.webkit.org/show_bug.cgi?id=269322

    Crash under ~RenderMenuList due to CheckedPtr usage
    https://bugs.webkit.org/show_bug.cgi?id=269322
    rdar://119790256

    Reviewed by Alan Baradlay.

    From the crash trace, we can see that HTMLSelectElement::defaultEventHandler()
    holds a CheckedPtr to its RenderMenuList renderer and calls showPopup() on
    the renderer. This ends up running JS, which removes the select element from
    the DOM and in turns destroys the renderer. The usage is currently safe since
    nothing is using the renderer after the JS has run. However, it was tripping
    the CheckedPtr assertion.

    To address the issue, switch to using WeakPtr for now and add comments to
    clarify lifetime. We should consider refactoring this in a follow up though.

    * Source/WebCore/html/HTMLSelectElement.cpp:
    (WebCore::HTMLSelectElement::platformHandleKeydownEvent):
    (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
    (WebCore::HTMLSelectElement::showPicker):
    * Source/WebCore/rendering/RenderMenuList.cpp:
    (RenderMenuList::showPopup):

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


  Commit: 2ff1b38fa441be287d398cd7d9853b01ffebcd9b
      https://github.com/WebKit/WebKit/commit/2ff1b38fa441be287d398cd7d9853b01ffebcd9b
  Author: Philippe Normand <philn at igalia.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h

  Log Message:
  -----------
  Cherry-pick 274614 at main (518c5dcd9b48). https://bugs.webkit.org/show_bug.cgi?id=268906

    REGRESSION(273906 at main): [GStreamer] webrtc/receiver-track-should-stay-live-even-if-receiver-is-inactive.html is flaky crash
    https://bugs.webkit.org/show_bug.cgi?id=268906

    Reviewed by Xabier Rodriguez-Calvar.

    Flaky crashes were triggered when the codecPreferencesChanged() was called while the blocking pad
    probe was still active. We now prevent re-entry when this is the case.

    * LayoutTests/platform/glib/TestExpectations:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::start):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::setSinkPad):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::teardown):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::codecPreferencesChanged):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h:

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


  Commit: 22216dae0c02fd500a1acf84e612b73a33066af7
      https://github.com/WebKit/WebKit/commit/22216dae0c02fd500a1acf84e612b73a33066af7
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Cherry-pick 274641 at main (c3b754f8cd59). https://bugs.webkit.org/show_bug.cgi?id=269373

    Crash under WebPage::close()
    https://bugs.webkit.org/show_bug.cgi?id=269373
    rdar://118486861

    Reviewed by Brent Fulgham.

    Add a null check for the LocalFrame given that nothing prevents it
    from being null and we're seeing null dereferences in the wild.

    * Source/WebKit/WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::close):

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


  Commit: dc51c550ece4c3b56fe03bac80e4d356cb828577
      https://github.com/WebKit/WebKit/commit/dc51c550ece4c3b56fe03bac80e4d356cb828577
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2024-02-20 (Tue, 20 Feb 2024)

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

  Log Message:
  -----------
  Cherry-pick 274643 at main (3e214abe9459). https://bugs.webkit.org/show_bug.cgi?id=269203

    [GStreamer] Buffer end equals video duration for progressive video
    https://bugs.webkit.org/show_bug.cgi?id=269203

    Reviewed by Philippe Normand.

    On some long regular videos, the current buffer management mechanism
    reports 100% of the video as loaded when that's not actually happening.
    This causes document.getElementsByTagName('video')[0].buffered.end(0) to
    be equal to document.getElementsByTagName('video')[0].duration when that
    should clearly not the case.

    The current default way of computing m_maxTimeLoaded isn't working
    properly because oftern, when the buffering messages are received by
    MediaPlayerPrivateGStreamer, the duration is still unknown and the code
    in charge of computing the fill status bails out.

    The WebKitWebSrc network downloading statistics provide a much more
    accurate source of information for the buffered data, and should be used
    in more cases when available. The download statistics tend to arrive
    later than the buffer fill messages and at that moment duration is
    already available, leading to a proper computation of m_maxTimeLoaded.

    See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/1238

    This patch calls updateMaxTimeLoaded() when the network statistics are
    received. That update must be done here because the current system in
    place to perform such update is based on m_fillTimer, and when the
    network stats are received the timer is usually already stopped. This
    method works fine both with on-disk cache and without it (the typical
    use case on set-top-box devices).

    Original patch authored by: suresh-khurdiya-epam <skhurdiya.contractor at libertyglobal.com>

    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::handleMessage): When a webkit-network-statistics message is received, compute the fill status and update m_maxTimeLoaded.

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


  Commit: 3033f5c7c086932709ea33a534085b51477d9911
      https://github.com/WebKit/WebKit/commit/3033f5c7c086932709ea33a534085b51477d9911
  Author: Justin Michaud <justin_michaud at apple.com>
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
    M Source/JavaScriptCore/runtime/Options.cpp

  Log Message:
  -----------
  Cherry-pick 274663 at main (c9407f23b73e). https://bugs.webkit.org/show_bug.cgi?id=269245

    REGRESSION (December 2023?): 2x increase in JSC-Tests-EWS build duration
    https://bugs.webkit.org/show_bug.cgi?id=269245
    rdar://121678486

    Reviewed by Yusuke Suzuki.

    Skip useRandomizingExecutableIslandAllocation on x86 where we don't use
    jump islands anyway.

    * Source/JavaScriptCore/runtime/Options.cpp:
    (JSC::Options::notifyOptionsChanged):

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


  Commit: 29e78c0a030d42af69dda388acf4f5adc7f1cc5e
      https://github.com/WebKit/WebKit/commit/29e78c0a030d42af69dda388acf4f5adc7f1cc5e
  Author: Adrian Perez de Castro <aperez at igalia.com>
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
    M Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.h

  Log Message:
  -----------
  Fix non-unified builds

Unreviewed build fix.

* Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.h: Add
missing wtf/IsoMalloc.h header inclusion.


  Commit: 186dcff5d6799c77e8a14133e95eb0f71d7a8b69
      https://github.com/WebKit/WebKit/commit/186dcff5d6799c77e8a14133e95eb0f71d7a8b69
  Author: Ahmad Saleem <ahmad.saleem792+github at gmail.com>
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-03-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-04-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-05-expected.txt
    M LayoutTests/svg/dom/SVGPolygonElement-baseVal-list-removal-crash.html
    M LayoutTests/svg/dom/path-pointAtLength-expected.txt
    M LayoutTests/svg/dom/path-pointAtLength.html
    M Source/WebCore/svg/SVGGeometryElement.cpp
    M Source/WebCore/svg/SVGPathElement.cpp

  Log Message:
  -----------
  Revert 274308 at main - Broke discord.com login button

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

Reviewed by Simon Fraser.

This patch reverts 274308 at main as title states manually.

> Reverted Changes:
* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-03-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-04-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-05-expected.txt:
* LayoutTests/svg/dom/path-pointAtLength-expected.txt:
* LayoutTests/svg/dom/path-pointAtLength.html:
* LayoutTests/svg/dom/SVGPolygonElement-baseVal-list-removal-crash.html:
* Source/WebCore/svg/SVGGeometryElement.cpp:
(SVGGeometryElement::getPointAtLength):
* Source/WebCore/svg/SVGPathElement.cpp:
(SVGPathElement::getPointAtLength):

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


  Commit: 83c85d31d298828092eb20a4e98f2656deb422c9
      https://github.com/WebKit/WebKit/commit/83c85d31d298828092eb20a4e98f2656deb422c9
  Author: Vitaly Dyachkov <vitaly at igalia.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/wpe/TestExpectations
    M Source/WebCore/platform/graphics/nicosia/NicosiaAnimation.cpp
    M Source/WebCore/platform/graphics/nicosia/NicosiaAnimation.h
    M Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h

  Log Message:
  -----------
  Cherry-pick 275168 at main (9f21b9e439f9). https://bugs.webkit.org/show_bug.cgi?id=269288

    [Nicosia] Add support for translate/rotate/scale animations
    https://bugs.webkit.org/show_bug.cgi?id=269288

    Reviewed by Nikolas Zimmermann.

    Nicosia already supports accelerated transform animations.
    This patch implements translate, rotate, and scale animations.

    It also ensures that when multiple animations are applied,
    they run in the correct order required the spec [1]:
    - translate
    - rotate
    - scale
    - transform

    [1] https://drafts.csswg.org/css-transforms-2/#ctm

    * LayoutTests/platform/glib/TestExpectations:
    * LayoutTests/platform/wpe/TestExpectations:
    * Source/WebCore/platform/graphics/nicosia/NicosiaAnimation.cpp:
    (Nicosia::Animation::apply):
    (Nicosia::Animation::applyInternal):
    (Nicosia::Animations::apply):
    (Nicosia::Animations::hasRunningTransformAnimations const):
    (Nicosia::Animation::applyKeepingInternalState): Deleted.
    (Nicosia::Animations::applyKeepingInternalState): Deleted.
    * Source/WebCore/platform/graphics/nicosia/NicosiaAnimation.h:
    (Nicosia::Animations::setTranslate):
    (Nicosia::Animations::setRotate):
    (Nicosia::Animations::setScale):
    (Nicosia::Animations::setTransform):
    * Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:
    (WebCore::TextureMapperLayer::syncAnimations):
    * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
    (WebCore::CoordinatedGraphicsLayer::didChangeAnimations):
    (WebCore::CoordinatedGraphicsLayer::addAnimation):
    (WebCore::CoordinatedGraphicsLayer::transformRelatedPropertyDidChange):
    * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

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


  Commit: 21490560a12d75a33c4a48849e2fe79cfb315368
      https://github.com/WebKit/WebKit/commit/21490560a12d75a33c4a48849e2fe79cfb315368
  Author: Michael Catanzaro <mcatanzaro at redhat.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M Source/WebKit/UIProcess/WebProcessCache.cpp

  Log Message:
  -----------
  Cherry-pick 275063 at main (29ee71944f91). https://bugs.webkit.org/show_bug.cgi?id=262780

    Web process cache should expire old web processes sooner
    https://bugs.webkit.org/show_bug.cgi?id=262780

    Reviewed by Don Olmstead and Carlos Garcia Campos.

    GTK/WPE want a shorter web process cache lifetime. I guess the shorter
    lifetime is likely to be desired by other non-Apple ports, as well.
    Apple prefers to keep the current 30 minute cache lifetime.

    * Source/WebKit/UIProcess/WebProcessCache.cpp:

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


  Commit: 955725daaffff54df8d5805c95c02ce6fa377328
      https://github.com/WebKit/WebKit/commit/955725daaffff54df8d5805c95c02ce6fa377328
  Author: Philippe Normand <philn at igalia.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M Source/cmake/OptionsGTK.cmake
    M Source/cmake/OptionsWPE.cmake

  Log Message:
  -----------
  Cherry-pick 274475 at main (660096508a7e). https://bugs.webkit.org/show_bug.cgi?id=269204

    [GLib] Enable WebCodecs
    https://bugs.webkit.org/show_bug.cgi?id=269204

    Reviewed by Michael Catanzaro.

    Layout tests coverage is decent, the corresponding runtime preferences are already marked as
    'stable'.

    * Source/cmake/OptionsGTK.cmake:
    * Source/cmake/OptionsWPE.cmake:

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


  Commit: ba53f228c7e264c3d82f7099a15bcb0e08525041
      https://github.com/WebKit/WebKit/commit/ba53f228c7e264c3d82f7099a15bcb0e08525041
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/html/CanvasBase.cpp
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext.h

  Log Message:
  -----------
  Cherry-pick 275137 at main (3e7f2c1bc01d). https://bugs.webkit.org/show_bug.cgi?id=269867

    REGRESSION(274164 at main): Do not consult against Document's WeakHashSet for every Canvas ops
    https://bugs.webkit.org/show_bug.cgi?id=269867
    rdar://123400342

    Reviewed by Ryosuke Niwa.

    274164 at main introduced addCanvasNeedingPreparationForDisplayOrFlush and removeCanvasNeedingPreparationForDisplayOrFlush, which consult against Document's WeakHashSet
    for every Canvas operation. Because each Canvas operation is very tiny, Canvas operations are called super frequently, and any kind of performance regression on each
    call can be exhibited as visible performance regression. WeakHashSet querying is costly, and Document is super large so frequent cache miss happens.
    Instead, we store a bool flag to CanvasRenderingContext, which says whether it is registered in Document's WeakHashSet. And avoid this costly operation once it gets registered.

    * Source/WebCore/dom/Document.cpp:
    (WebCore::Document::prepareCanvasesForDisplayOrFlushIfNeeded):
    (WebCore::Document::addCanvasNeedingPreparationForDisplayOrFlush):
    (WebCore::Document::removeCanvasNeedingPreparationForDisplayOrFlush):
    * Source/WebCore/dom/Document.h:
    * Source/WebCore/html/CanvasBase.cpp:
    (WebCore::CanvasBase::addCanvasNeedingPreparationForDisplayOrFlush):
    (WebCore::CanvasBase::removeCanvasNeedingPreparationForDisplayOrFlush):
    * Source/WebCore/html/HTMLCanvasElement.cpp:
    (WebCore::HTMLCanvasElement::didMoveToNewDocument):
    * Source/WebCore/html/canvas/CanvasRenderingContext.h:
    (WebCore::CanvasRenderingContext::setIsToPrepare):
    (WebCore::CanvasRenderingContext::isInPreparationForDisplayOrFlush const):

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


  Commit: bc24768393ccccdd0e231d871c04e3b4aebd8ee3
      https://github.com/WebKit/WebKit/commit/bc24768393ccccdd0e231d871c04e3b4aebd8ee3
  Author: Tim Nguyen <ntim at apple.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M LayoutTests/imported/w3c/resources/import-expectations.json
    A LayoutTests/imported/w3c/web-platform-tests/css/CSS2/visufx/animation/visibility-interpolation-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/CSS2/visufx/animation/visibility-interpolation.html
    M Source/WebCore/animation/CSSPropertyAnimation.cpp

  Log Message:
  -----------
  Cherry-pick 275120 at main (71b8fba1401e). https://bugs.webkit.org/show_bug.cgi?id=269848

    REGRESSION(273742 at main): LinkedIn "…" menu does not populate on click
    https://bugs.webkit.org/show_bug.cgi?id=269848
    rdar://123264559

    Reviewed by Cameron McCormack.

    The menu on LinkedIn transitions the `visibility` CSS property.

    Do a partial revert of 273742 at main to revert only the animation wrapper change for the `visibility` property, since it has caused changes that are timing sensitive for the site.

    Imported WPT that also regressed along with 273742 at main to avoid regressing this again.

    * LayoutTests/imported/w3c/resources/import-expectations.json:
    * LayoutTests/imported/w3c/web-platform-tests/css/CSS2/visufx/animation/visibility-interpolation-expected.txt: Added.
    * LayoutTests/imported/w3c/web-platform-tests/css/CSS2/visufx/animation/visibility-interpolation.html: Added.
    * Source/WebCore/animation/CSSPropertyAnimation.cpp:
    (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

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


Compare: https://github.com/WebKit/WebKit/compare/ef78ee396c4f...bc24768393cc

To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list