[webkit-changes] [WebKit/WebKit] 8651a5: Cherry-pick c9a65a407c6b. rdar://problem/109790387

MyahCobbs noreply at github.com
Mon Nov 27 16:28:02 PST 2023


  Branch: refs/heads/safari-7616.1.17-branch
  Home:   https://github.com/WebKit/WebKit
  Commit: 8651a560be06290e09ce8b0da3be36ce3b134bb2
      https://github.com/WebKit/WebKit/commit/8651a560be06290e09ce8b0da3be36ce3b134bb2
  Author: Elliott Williams <emw at apple.com>
  Date:   2023-06-06 (Tue, 06 Jun 2023)

  Changed paths:
    M Source/WebKit/Configurations/SandboxProfiles.xcconfig
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Cherry-pick c9a65a407c6b. rdar://problem/109790387

    Restore iOS sandbox profile generation in engineering builds
    https://bugs.webkit.org/show_bug.cgi?id=257276
    rdar://109790387

    Reviewed by Alexey Proskuryakov.

    264752 at main (6f04c95bf8f3) stopped preprocessing iOS sandbox profiles
    unconditionally during at-desk builds. The logic was that the profiles
    are only used during WebKit's production build, so there was no need to
    generate them locally. However, it's helpful for engineers to be able to
    manually test the sandbox profiles outside of a production build
    environment.

    When building for iOS, make WebKit depend on the "Sandbox Profiles"
    target. Change that target to install sandbox profiles to
    BUILT_PRODUCTS_DIR in non-install builds. Add a dependency on WTF, since
    Platform headers are used to preprocess the sandbox profiles and the
    target needs to be scheduled after they are available.

    The result is that sandbox profiles are preprocessed at their old
    DerivedSources location, and are copied to a path like

        WebKitBuild/Debug-iphoneos/usr/local/share/sandbox/...

    Also, remove the old "Copy iOS Sandbox Profiles for Manual Sandboxing"
    script phase, which was an unused workflow.

    * Source/WebKit/Configurations/SandboxProfiles.xcconfig: Declare a path
      variable used to install profiles into BUILT_PRODUCTS_DIR in
      non-install builds. Add $(BUILT_PRODUCTS_DIR)/usr/local/include to the
      search path, to pick up WTF headers during engineering builds.
    * Source/WebKit/WebKit.xcodeproj/project.pbxproj:

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

Canonical link: https://commits.webkit.org/264854.1@safari-7616.1.17-branch


  Commit: 4307e2ee9baf802bc175cc7c7cc43fd3577242d1
      https://github.com/WebKit/WebKit/commit/4307e2ee9baf802bc175cc7c7cc43fd3577242d1
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm

  Log Message:
  -----------
  Cherry-pick 5129c74d949f. rdar://problem/110139703

    LocalSampleBufferDisplayLayer crops frames with a rotation of 90 degrees
    https://bugs.webkit.org/show_bug.cgi?id=257747
    rdar://110139703

    Reviewed by Eric Carlson.

    We broke the computation of bounds and position in case of rotations in https://github.com/WebKit/WebKit/commit/0e0d7976dfe09316e3cb57a4786defeb5c5d7eb6.
    We update the code to be back to the previous version.

    * Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
    (WebCore::LocalSampleBufferDisplayLayer::updateRootLayerBoundsAndPosition):

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

Canonical link: https://commits.webkit.org/264854.2@safari-7616.1.17-branch


  Commit: fb994f0b12070ef302bad9a3565acb7b7e9b9b54
      https://github.com/WebKit/WebKit/commit/fb994f0b12070ef302bad9a3565acb7b7e9b9b54
  Author: Jer Noble <jer.noble at apple.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
    M Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm

  Log Message:
  -----------
  Cherry-pick 580bf6c28d2b. rdar://problem/110320059

    REGRESSION (264795 at main) Twitter.com: Video blank/black while scrolling
    https://bugs.webkit.org/show_bug.cgi?id=257805
    rdar://110320059

    Reviewed by Eric Carlson.

    Use videoInlineSize() rather than presentationSize() to determine whether or not a layer should
    be created in MediaPlayerPrivateMediaSourceAVFObjC. And to ensure the layer does get created when
    videoInlineSize() changes, override setVideoInlineSizeFenced() in that class, and call it from
    RemoteMediaPlayerProxy::setVideoInlineSizeFenced().

    * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
    * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
    (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::shouldEnsureLayer const):
    (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoInlineSizeFenced):
    * Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:
    (WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):

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

Canonical link: https://commits.webkit.org/264854.3@safari-7616.1.17-branch


  Commit: e55edc40e738aeb2a91b628d6b5d1a6f243529fa
      https://github.com/WebKit/WebKit/commit/e55edc40e738aeb2a91b628d6b5d1a6f243529fa
  Author: Russell Epstein <repstein at apple.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Source/WebKit/Configurations/SandboxProfiles.xcconfig
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Revert "Cherry-pick c9a65a407c6b. rdar://problem/109790387"

This reverts commit 8651a560be06290e09ce8b0da3be36ce3b134bb2.

Canonical link: https://commits.webkit.org/264854.4@safari-7616.1.17-branch


  Commit: 732cce41da405e97a79ef48e301eca77c4aa4d6a
      https://github.com/WebKit/WebKit/commit/732cce41da405e97a79ef48e301eca77c4aa4d6a
  Author: Russell Epstein <repstein at apple.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Source/WebKit/Configurations/SandboxProfiles.xcconfig
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Revert "Revert "Cherry-pick c9a65a407c6b. rdar://problem/109790387""

This reverts commit e55edc40e738aeb2a91b628d6b5d1a6f243529fa.


  Commit: 485a2cdff769137a4287e50dda76a6412f90b874
      https://github.com/WebKit/WebKit/commit/485a2cdff769137a4287e50dda76a6412f90b874
  Author: Elliott Williams <emw at apple.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Source/WebKit/Configurations/SandboxProfiles.xcconfig
    M Source/WebKit/Configurations/WebKit.xcconfig
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    R Source/WebKit/Scripts/preprocess-sandbox-profile-rule.sh
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Cherry-pick 1b0e675562c9. rdar://problem/110353926

    Revert "[Xcode] Dependencies in preprocessed sandbox profiles not tracked"
    https://bugs.webkit.org/show_bug.cgi?id=257814
    rdar://110353926

    Unreviewed.

    Seems to be causing missing sandbox profiles on some Mac builds. Revert
    all commits landed under the bug:

        Revert "Restore iOS sandbox profile generation in engineering builds"
        This reverts commit c9a65a407c6b09028fa5a074dbc9fc60011937d4.

        Revert "Add quoting for arrays containing whitespace paths in preprocess-sandbox-profile-rule.sh"
        This reverts commit 6f04c95bf8f346bf66b311ee0448fce8d60b1791.

        Revert "Fix whitespace-containing path in preprocess-sandbox-profile-rule.sh"
        This reverts commit 5f13e1c10eb0f44f1a71f4d6c56d59313f614577.

        Revert "[Xcode] Dependencies in preprocessed sandbox profiles not tracked"
        This reverts commit 40fd93b1f2eff242effa1c79d30571d1547c9a74.

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

Canonical link: https://commits.webkit.org/264854.6@safari-7616.1.17-branch


  Commit: 4309297ef9ad7d05e1b106010c0655d9f61c1fa4
      https://github.com/WebKit/WebKit/commit/4309297ef9ad7d05e1b106010c0655d9f61c1fa4
  Author: Russell Epstein <repstein at apple.com>
  Date:   2023-06-07 (Wed, 07 Jun 2023)

  Changed paths:
    M Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7616.1.17.1

Identifier: 263322.1539 at safari-7616.1.17-branch


  Commit: 682d2decf21744bf8ef4689d1465b7f6720c4af3
      https://github.com/WebKit/WebKit/commit/682d2decf21744bf8ef4689d1465b7f6720c4af3
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
    M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm

  Log Message:
  -----------
  Cherry-pick 369109ea28ce. rdar://problem/109845717

    Safari may crash when tapping on video after returning to full screen from PiP
    https://bugs.webkit.org/show_bug.cgi?id=257651
    rdar://109845717

    Reviewed by Youenn Fablet.

    Temporary fix to get around rdar://110172009. When exiting PiP, the
    UIWindow gets deleted while the video view is still a child of it.
    As such [videoView window] becomes a dangling pointers and any references
    to the old window will cause a crash.

    For now, we override the window method of the WKLayerHostView so
    that it can detects if the window parent is still alive.

    * Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
    (VideoFullscreenInterfaceAVKit::cleanupFullscreen):
    * Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (-[WKLayerHostView willMoveToWindow:]):
    (-[WKLayerHostView window]):
    (WebKit::VideoFullscreenManagerProxy::returnVideoView):

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

Identifier: 263322.1540 at safari-7616.1.17-branch


  Commit: b90bf3e9e3798ce7918ce1857027c87e3242e7dc
      https://github.com/WebKit/WebKit/commit/b90bf3e9e3798ce7918ce1857027c87e3242e7dc
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h

  Log Message:
  -----------
  Cherry-pick ca3c4b77be91. rdar://problem/110281842

    Add nullability annotation to removeDataStoreForIdentifier
    https://bugs.webkit.org/show_bug.cgi?id=257733
    rdar://110281842

    Reviewed by Per Arne Vollan.

    The generated Swift API should mark Error as optional.

    * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h:

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

Identifier: 263322.1541 at safari-7616.1.17-branch


  Commit: 357fffd30e23d98af0a2967327b31d17231e793b
      https://github.com/WebKit/WebKit/commit/357fffd30e23d98af0a2967327b31d17231e793b
  Author: Gerald Squelart <g_squelart at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M LayoutTests/fast/attachment/cocoa/wide-attachment-save-event-expected.txt
    M LayoutTests/fast/attachment/mac/wide-attachment-image-controls-basic-expected.txt
    M LayoutTests/platform/ios-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt
    M LayoutTests/platform/mac-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt
    M Source/WebCore/html/HTMLAttachmentElement.cpp
    M Source/WebCore/html/HTMLAttachmentElement.h
    M Source/WebCore/html/shadow/attachmentElementShadow.css
    M Source/WebCore/rendering/RenderAttachment.cpp
    M Source/WebCore/rendering/RenderAttachment.h
    M Source/WebCore/rendering/RenderThemeIOS.mm
    M Source/WebCore/rendering/RenderThemeMac.mm

  Log Message:
  -----------
  Cherry-pick 333b4b2030a1. rdar://problem/108157331

    Use RenderAttachment for wide-layout attachments, with some modified layout and rendering
    https://bugs.webkit.org/show_bug.cgi?id=256637
    rdar://108157331

    Reviewed by Alan Baradlay.

    A lot of the editor code interacting with attachments relies on the renderer being exactly `RenderAttachment`, which led to some misbehavior when the wide-layout attachment was using the more generic `RenderBlockFlow`.
    So now the renderer is always `RenderAttachment`, but the layout and rendering paths redirect to special wide-layout-only functions.

    * LayoutTests/fast/attachment/cocoa/wide-attachment-save-event-expected.txt:
    * LayoutTests/fast/attachment/mac/wide-attachment-image-controls-basic-expected.txt:
    * LayoutTests/platform/ios-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt:
    * LayoutTests/platform/mac-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt:
    * Source/WebCore/html/HTMLAttachmentElement.cpp:
    (WebCore::HTMLAttachmentElement::createElementRenderer):
    Always return a `RenderAttachment`, like it was before introducing the wide-layout styling.

    (WebCore::HTMLAttachmentElement::insertedIntoAncestor):
    Because of how the root element does the layout, the shadow root element's margins were ignored, so now the margins are added here in the root element.

    * Source/WebCore/html/HTMLAttachmentElement.h:
    * Source/WebCore/html/shadow/attachmentElementShadow.css:
    (div#attachment-container):
    Since the margin is now in the top-level element outside the shadow tree, it is not needed here anymore.

    (div#attachment-container::selection): Deleted.
    The selection coloring is handled by the `RenderReplaced` painting code, so this styling was ignored anyway.

    * Source/WebCore/rendering/RenderAttachment.cpp:
    (WebCore::RenderAttachment::RenderAttachment):
    (WebCore::RenderAttachment::layoutWideLayoutAttachmentOnly):
    (WebCore::RenderAttachment::layout):
    Layout the wide-layout shadow tree if present, the "replaced" and shadow content layouts are still performed to handle all the necessary sizing and optional image controls.

    (WebCore::RenderAttachment::paintWideLayoutAttachmentOnly const):
    New wide-layout paint code, handling the full Foreground and Selection phases and painting everything in the shadow tree.

    * Source/WebCore/rendering/RenderAttachment.h:
    Cleaned up "Shadow" functions, to separate just "shadow controls" (like image controls) and any "shadow content" that may include the wide-layout shadow tree.
    Also let the `RenderReplaced` painting code handle the selection tint.

    * Source/WebCore/rendering/RenderThemeIOS.mm:
    (WebCore::RenderThemeIOS::paintAttachment):
    * Source/WebCore/rendering/RenderThemeMac.mm:
    (WebCore::RenderThemeMac::paintAttachment):
    When actually painting a wide-layout attachment, skip the legacy painting.

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

Identifier: 263322.1542 at safari-7616.1.17-branch


  Commit: 918db9d0c22e9e2fc6485aba9aa77b4dcf13c2cd
      https://github.com/WebKit/WebKit/commit/918db9d0c22e9e2fc6485aba9aa77b4dcf13c2cd
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M Source/WebCore/page/ChromeClient.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/page/RenderingUpdateScheduler.cpp
    M Source/WebCore/page/RenderingUpdateScheduler.h
    M Source/WebKit/SourcesCocoa.txt
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
    M Source/WebKit/WebProcess/WebPage/DrawingArea.h
    R Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h
    R Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

  Log Message:
  -----------
  Cherry-pick fa67a2625225. rdar://problem/110174274

    Schedule rendering via RemoteLayerTreeDrawingArea directly, rather than using a 'fake' DisplayRefreshMonitor.
    https://bugs.webkit.org/show_bug.cgi?id=257290
    <rdar://problem/109953504>

    Reviewed by Simon Fraser.

    RemoteLayerTreeDisplayRefreshMonitor is mostly just a wrapper around asking the RemoteLayerTreeDrawingArea to schedule when it wants to display next.
    This is specific to that drawing area, and can be throttled if the drawing area is failing to commit layer trees as fast as expected.

    DisplayRefreshMonitorManager caches DisplayRefreshMonitors, and shares them between all WebCore::Page/RenderingUpdateSchedulers on the same Display.
    This means if we have multiple RemoteLayerTreeDrawingAreas on the same display (and in the same process), we'll be sharing a single RemoteLayerTreeDisplayRefreshMonitor, driven at the effective rate of one of the drawing areas.

    If the first drawing area is trying to hit full frame rate, but rendering takes too long, it'll run at the fastest rate it can manage. Any other drawing areas that are using the shared display refresh
    monitor will then be throttled to that same rate, even if they could otherwise run at full speed.

    DrawingAreaCoordinatedGraphics is currently working around this by synthesizing a DisplayID for each drawing area, to prevent DisplayRefreshMonitor sharing.

    This change makes WebChromeClient pass the scheduleRenderingUpdate request onto RemoteLayerTreeDrawingArea directly, so we can avoid falling back to the RenderingUpdateScheduler/DisplayRefreshMonitor implementation.

    RemoteLayerTreeDisplayRefreshMonitor is removed, since it should never be used.

    * Source/WebCore/page/ChromeClient.h:
    (WebCore::ChromeClient::renderingUpdateFrequencyChanged):
    * Source/WebCore/page/Page.cpp:
    (WebCore::Page::windowScreenDidChange):
    (WebCore::Page::triggerRenderingUpdateForTesting):
    (WebCore::Page::timelineControllerMaximumAnimationFrameRateDidChange):
    (WebCore::Page::setIsVisuallyIdleInternal):
    (WebCore::Page::handleLowModePowerChange):
    * Source/WebCore/page/Page.h:
    * Source/WebCore/page/RenderingUpdateScheduler.cpp:
    (WebCore::RenderingUpdateScheduler::triggerRenderingUpdateForTesting): Deleted.
    * Source/WebCore/page/RenderingUpdateScheduler.h:
    * Source/WebKit/SourcesCocoa.txt:
    * Source/WebKit/WebKit.xcodeproj/project.pbxproj:
    * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
    (WebKit::WebChromeClient::scheduleRenderingUpdate):
    (WebKit::WebChromeClient::renderingUpdateFrequencyChanged):
    * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
    * Source/WebKit/WebProcess/WebPage/DrawingArea.h:
    (WebKit::DrawingArea::scheduleRenderingUpdate):
    (WebKit::DrawingArea::renderingUpdateFrequencyChanged):
    * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h: Removed.
    * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: Removed.
    * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
    * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
    (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
    (WebKit::RemoteLayerTreeDrawingArea::createDisplayRefreshMonitor):
    (WebKit::RemoteLayerTreeDrawingArea::displayDidRefresh):
    (WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate):
    (WebKit::RemoteLayerTreeDrawingArea::renderingUpdateFrequencyChanged):
    (WebKit::RemoteLayerTreeDrawingArea::willDestroyDisplayRefreshMonitor): Deleted.
    (WebKit::RemoteLayerTreeDrawingArea::adoptDisplayRefreshMonitorsFromDrawingArea): Deleted.

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

Identifier: 263322.1543 at safari-7616.1.17-branch


  Commit: 824af0f62f372c352d1550660ae5f26e4bfcc2c3
      https://github.com/WebKit/WebKit/commit/824af0f62f372c352d1550660ae5f26e4bfcc2c3
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M Source/WebCore/dom/SimpleRange.h
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm

  Log Message:
  -----------
  Cherry-pick ce1f5b1c5dd7. rdar://problem/109582406

    REGRESSION (264086 at main): [iOS 17] Autocorrect highlight is sometimes incorrect in Mail compose
    https://bugs.webkit.org/show_bug.cgi?id=257830
    rdar://109582406

    Reviewed by Megan Gardner and Aditya Keerthi.

    The refactoring in 264086 at main introduced a subtle behavior change in the case where the text
    iterator emits spaces for soft line breaks in an `_editable` web view. When emitting text for a soft
    line break, we previously appended the zero rect in the list of `textRects` for this character
    range; however, after `264086 at main`, we now skip the rect altogether, which causes the list of rects
    to fall out of sync with the combined `contextBefore` + `selectedText` + `contextAfter` string.
    Consequently, UIKit (which currently assumes that indices into the string correspond directly to
    indices of rects in `textRects`) ends up using the wrong character layout rects.

    This patch fixes the above by restoring preexisting behavior and appending a single empty rect in
    the case where the text iterator finds (non-empty) text, but there are no character rects.

    Additionally, I attempted to add a debug assertion to verify that the number of resulting text rects
    is always consistent with the combined length of the context and selection strings; however, this
    uncovered some bugs in the existing implementation, even prior the changes in 264086 at main, where we
    would sometimes end up with either too many or too few rects, when running the following three
    layout tests:

    • editing/selection/ios/update-selection-after-iframe-scroll.html
    • editing/selection/ios/update-selection-after-overflow-scroll.html
    • editing/selection/shift-click-includes-existing-selection.html

    This patch fixes the assertion in `editing/selection/shift-click-includes-existing-selection.html`,
    where we end up with too many text rects due to the fact that the text iterator advances to both the
    upstream and downstream positions of a line break, emitting "\n" both times with the same rect. To
    avoid this, we keep track of the last `SimpleRange` we observed, and avoid emitting a duplicate rect
    in the case where we advance to the a range we just visited.

    Test: DocumentEditingContext.CharacterRectsInEditableWebView

    * Source/WebCore/dom/SimpleRange.h:
    * Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::requestDocumentEditingContext):
    * Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

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

Canonical link: https://commits.webkit.org/264854.12@safari-7616.1.17-branch


  Commit: 6d07430ef3bb622e595c2fa20b008c138c9903ba
      https://github.com/WebKit/WebKit/commit/6d07430ef3bb622e595c2fa20b008c138c9903ba
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-06-08 (Thu, 08 Jun 2023)

  Changed paths:
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm

  Log Message:
  -----------
  Cherry-pick 10a4bdb95f1d. rdar://problem/109810157

    Fix the setDisableImplicitTransactionMainThreadAssert: respondsToSelector check
    https://bugs.webkit.org/show_bug.cgi?id=257840
    rdar://109810157

    Reviewed by Matt Woodrow.

    The SPI is `+[CATransaction setDisableImplicitTransactionMainThreadAssert]` so we need to call `respondsToSelector:` on the
    Class, not instances of the class.

    * Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
    (WebKit::RemoteScrollingTreeMac::RemoteScrollingTreeMac):

    Canonical link: https://commits.webkit.org/264995@main
Identifier: 263319.1548 at safari-7616.1.17-branch


  Commit: 09d57f6974acbdea7e35b2575b251d85dbcd8ba6
      https://github.com/WebKit/WebKit/commit/09d57f6974acbdea7e35b2575b251d85dbcd8ba6
  Author: Myah Cobbs <mcobbs at apple.com>
  Date:   2023-06-12 (Mon, 12 Jun 2023)

  Changed paths:
    M Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7616.1.17.2

Identifier: 263322.1546 at safari-7616.1.17-branch


  Commit: d07907a41aba70af8ec2b877f3720a4bbee53f67
      https://github.com/WebKit/WebKit/commit/d07907a41aba70af8ec2b877f3720a4bbee53f67
  Author: Myah Cobbs <mcobbs at apple.com>
  Date:   2023-06-13 (Tue, 13 Jun 2023)

  Changed paths:
    M Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7616.1.17.3

Identifier: 263319.1550 at safari-7616.1.17-branch


  Commit: a8519b54b2cf9c6e1be003d817cefdabe16f11a6
      https://github.com/WebKit/WebKit/commit/a8519b54b2cf9c6e1be003d817cefdabe16f11a6
  Author: Myah Cobbs <mcobbs at apple.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M Configurations/Version.xcconfig

  Log Message:
  -----------
  Versioning.

WebKit-7616.1.17.4

Identifier: 263322.1548 at safari-7616.1.17-branch


Compare: https://github.com/WebKit/WebKit/compare/8651a560be06%5E...a8519b54b2cf


More information about the webkit-changes mailing list