Branch: refs/heads/safari-7616.1.14.11-branch Home: https://github.com/WebKit/WebKit Commit: 10b1c1a40933e8b2dc73527c5056f3918a071963 https://github.com/WebKit/WebKit/commit/10b1c1a40933e8b2dc73527c5056f3918a071963 Author: Russell Epstein <repst...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. Identifier: 262728.1070@safari-7616.1.14.11-branch Commit: aa29b14404cd7244a710f6b95c44dfbbb4cf911f https://github.com/WebKit/WebKit/commit/aa29b14404cd7244a710f6b95c44dfbbb4cf911f Author: Eric Carlson <eric.carl...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M Source/WebCore/PAL/pal/spi/mac/ScreenCaptureKitSPI.h Log Message: ----------- Cherry-pick 9fd6c7e3607b. rdar://problem/109162122 [macOS] Update ScreenCaptureKitSPI.h https://bugs.webkit.org/show_bug.cgi?id=256605 rdar://109162122 Reviewed by Jer Noble. * Source/WebCore/PAL/pal/spi/mac/ScreenCaptureKitSPI.h: Include new header. Canonical link: https://commits.webkit.org/263927@main Identifier: 263769.30@safari-7616.1.14.11-branch Commit: c55f2b970a4d959422cfc39b7e44a72d4c5c3cae https://github.com/WebKit/WebKit/commit/c55f2b970a4d959422cfc39b7e44a72d4c5c3cae Author: Sammy Gill <sammy.g...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M LayoutTests/TestExpectations A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp M Source/WebCore/rendering/GridTrackSizingAlgorithm.h M Source/WebCore/rendering/RenderGrid.cpp Log Message: ----------- Cherry-pick ff409be22993. rdar://problem/109170495 [css-grid][masonry] Containing block for items in a masonry columns grid should be the grid's content box logical width https://bugs.webkit.org/show_bug.cgi?id=256611 rdar://109170495 Reviewed by Matt Woodrow. The masonry spec states, "The containing block for a grid item is formed by its grid area in the grid axis and the grid container’s content-box in the masonry axis." This means that for a grid that has masonry columns specified, the masonry axis will be in the logical width direction of the grid. The items should have their containing block set to the content box logical box of the grid. We can modify GridTrackSizingAlgorithm::gridAreaBreadthForChild to return this value when the grid is a masonry columns grid since normally the grid area would be used as the containing block in non-masonry grids. This allows the rest of the code to use the grid area sizes of the containing block in both masonry and non-masonry scenarios. Previously, this function would have attempted to compute the value by iterating over the tracks in the specified direction, but there are no tracks in the masonry direction so we use the logic specified by the masonry spec instead. However, in order for this change to work properly we had to make a change in RenderGrid::layoutMasonry by removing code that was incorrectly overriding the logical width of the grid. The previous code was attempting to set the logical width of the grid to the masonry content size when the grid had masonry columns specified and an auto logical width. There were 2 main issues with this piece of code: 1.) m_masonryLayout.gridContentSize() will always return 0 since we actually haven't performed masonry layout at this point 2.) The grid shouldn't be overriding its logical width like this anyways and it should instead be set by sized by the rules of the formatting context it is participating in (e.g. block or inline layout). By removing this code we can get the actual width of the grid later on when we call m_renderGrid->contentLogicalWidth() rather than the incorrect 0 value that it was being set to. The following example highlights the changes that were made. <style> grid { display: grid; grid-template-columns:masonry; grid-template-rows: auto; } </style> <grid> <svg width="100" height="100" viewBox="0 0 1 1" style="width: 100%; max-width: 100px; background: green;"></svg> </grid> By removing the extra code in RenderGrid::layoutMasonry, the grid will get sizes as a block level box in the block formatting context it is participating in, giving it a logical width that takes up its available space. The svg's containing block logical width is set to its value so it is able to resolve its percentage width to the correct value whereas before the containing block logical width would have been 0px. https://drafts.csswg.org/css-grid-3/#containing-block * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html: Added. * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const): * Source/WebCore/rendering/GridTrackSizingAlgorithm.h: * Source/WebCore/rendering/RenderGrid.cpp: (WebCore::RenderGrid::layoutMasonry): Canonical link: https://commits.webkit.org/264011@main Identifier: 263769.31@safari-7616.1.14.11-branch Commit: 4f0beb88f91788251d4573d0b04831e322cc5cf4 https://github.com/WebKit/WebKit/commit/4f0beb88f91788251d4573d0b04831e322cc5cf4 Author: Sihui Liu <sihui_...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp M Source/WebCore/workers/service/server/SWRegistrationDatabase.h M Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm Log Message: ----------- Cherry-pick abde730eecbb. rdar://problem/108841865 ServiceWorkerStorageManager should only delete its own files when clearing registrations https://bugs.webkit.org/show_bug.cgi?id=256725 rdar://108841865 Reviewed by Chris Dumez. Existing SPI allows clients to set the same path for different data types, so directory of ServiceWorkerStorageManager might contain files for other types. Therefore, ServiceWorkerStorageManager should not remove the directory when clearing registrations. Test: WKWebsiteDataStoreConfiguration.SameCustomPathForDifferentTypes * Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp: (WebCore::SWRegistrationDatabase::~SWRegistrationDatabase): (WebCore::SWRegistrationDatabase::close): (WebCore::SWRegistrationDatabase::clearAllRegistrations): * Source/WebCore/workers/service/server/SWRegistrationDatabase.h: * Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp: (WebKit::ServiceWorkerStorageManager::clearAllRegistrations): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: (TEST): Canonical link: https://commits.webkit.org/264036@main Identifier: 263769.32@safari-7616.1.14.11-branch Commit: 66ca569e11ec1995f88958216c6b0492db1fffd8 https://github.com/WebKit/WebKit/commit/66ca569e11ec1995f88958216c6b0492db1fffd8 Author: Matthew Finkel <sys...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M Source/WebCore/Headers.cmake M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/html/CanvasBase.cpp M Source/WebCore/html/CanvasBase.h A Source/WebCore/html/CanvasNoiseInjection.cpp A Source/WebCore/html/CanvasNoiseInjection.h M Source/WebCore/html/HTMLCanvasElement.cpp Log Message: ----------- Cherry-pick 9084db41d592. rdar://problem/107371244 Refactor Canvas noise injection logic and improve support for gradients in post-processed ImageData https://bugs.webkit.org/show_bug.cgi?id=255993 rdar://107371244 Reviewed by Kimmo Kinnunen. Gradients present an interesting problem when post-processing canvas ImageData because tweaking colors result in significant visual anomalies. This change introduces some naive gradient detection by looking at all of the immediate neighbors of a pixel. We decide that a pixel is within a gradient if the current color is between its opposing adjacent colors (e.g., above and below, left and right, etc). If a color is decided to be within a gradient, then we set those adjacent colors as bounds within which we can tweak the current color. In addition, within this change, we move the noise injection logic into its own class, it removes the dependency on supplied colors for post-processing, and it reduces the magnitude of noise from ~5% to ~1%. * Source/WebCore/Headers.cmake: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/CanvasBase.cpp: (WebCore::CanvasBase::makeRenderingResultsAvailable): (WebCore::CanvasBase::didDraw): We clip the rect before passing it into CanvasNoiseInjection, and if the rect is std::nullopt then we pass in the entire canvas. (WebCore::CanvasBase::postProcessPixelBufferResults const): (WebCore::CanvasBase::postProcessDirtyCanvasBuffer const): Deleted. * Source/WebCore/html/CanvasBase.h: * Source/WebCore/html/CanvasNoiseInjection.cpp: Added. (WebCore::CanvasNoiseInjection::updateDirtyRect): (WebCore::isIndexInBounds): (WebCore::setTightnessBounds): (WebCore::getGradientNeighbors): (WebCore::CanvasNoiseInjection::postProcessDirtyCanvasBuffer): (WebCore::CanvasNoiseInjection::postProcessPixelBufferResults const): * Source/WebCore/html/CanvasNoiseInjection.h: Added. * Source/WebCore/html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::getImageData): Originally-landed-as: 264019@main (bfc25dc6ca1c). rdar://107371244 Identifier: 263769.33@safari-7616.1.14.11-branch Commit: 4031e0e6617a18cfaf6c2c9da5d1825033e2ba5a https://github.com/WebKit/WebKit/commit/4031e0e6617a18cfaf6c2c9da5d1825033e2ba5a Author: Russell Epstein <repst...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M LayoutTests/TestExpectations R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp M Source/WebCore/rendering/GridTrackSizingAlgorithm.h M Source/WebCore/rendering/RenderGrid.cpp Log Message: ----------- Revert ff409be22993. rdar://problem/109170495 Identifier: 262728.1075@safari-7616.1.14.11-branch Commit: 8267ba90289c35ac4ca8e6e921ac72f7353716b8 https://github.com/WebKit/WebKit/commit/8267ba90289c35ac4ca8e6e921ac72f7353716b8 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-15 (Mon, 15 May 2023) Changed paths: M Source/WebKit/Shared/cg/ShareableBitmapCG.cpp Log Message: ----------- Cherry-pick 58702859275c. rdar://problem/108072383 [GPU Process] (REGRESSION 262607@main): Copy pixels of CGImage only if it is not a sub-image https://bugs.webkit.org/show_bug.cgi?id=255677 rdar://108072383 Reviewed by Simon Fraser. In ShareableBitmap::createFromImagePixels(), CGImage and its CGDataProvider may disagree about how many bytes are in the pixels buffers. CGImage is most likely a sub-image of another CGImage which inherits its meta data but not the full pixels buffer. In this case we should fallback to ShareableBitmap::createFromImageDraw(). Ortherwise ShareableBitmapConfiguration will falsely describe the data in the SharedMemory. * Source/WebKit/Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::createFromImagePixels): Canonical link: https://commits.webkit.org/264021@main Identifier: 263319.485@safari-7616.1.14.11-branch Commit: 0df13e89ca39aa30fd0ea76b3267665a97edb74b https://github.com/WebKit/WebKit/commit/0df13e89ca39aa30fd0ea76b3267665a97edb74b Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-16 (Tue, 16 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. Identifier: 263319.486@safari-7616.1.14.11-branch Commit: 064508f94c287c4cb583fef1d1adb460c483e80f https://github.com/WebKit/WebKit/commit/064508f94c287c4cb583fef1d1adb460c483e80f Author: Simon Fraser <simon.fra...@apple.com> Date: 2023-05-16 (Tue, 16 May 2023) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WTF/wtf/NumberOfCores.cpp M Source/WTF/wtf/NumberOfCores.h M Source/WebKit/Shared/WebPreferencesDefaultValues.cpp M Source/WebKit/Shared/WebPreferencesDefaultValues.h M Source/WebKit/UIProcess/mac/WebViewImpl.mm Log Message: ----------- Cherry-pick 52e75d6babbd. rdar://problem/109234446 [GPU Process] Disable GPU Process on 2-core macOS devices https://bugs.webkit.org/show_bug.cgi?id=256681 rdar://109234446 Reviewed by Chris Dumez. Disable UI-side compositing and GPU Process by default on 2-core macOS devices, for performance reasons. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/NumberOfCores.cpp: (WTF::numberOfPhysicalProcessorCores): New function to get the number of physical cores. Currently only has an implementation that works for Darwin OSes. * Source/WTF/wtf/NumberOfCores.h: * Source/WebKit/Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultUseGPUProcessForDOMRenderingEnabled): * Source/WebKit/Shared/WebPreferencesDefaultValues.h: * Source/WebKit/UIProcess/mac/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): Canonical link: https://commits.webkit.org/264056@main Identifier: 263319.487@safari-7616.1.14.11-branch Commit: b68e81404888c481d41589694ae8f72fe8385915 https://github.com/WebKit/WebKit/commit/b68e81404888c481d41589694ae8f72fe8385915 Author: Russell Epstein <repst...@apple.com> Date: 2023-05-16 (Tue, 16 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.3 Canonical link: https://commits.webkit.org/263769.38@safari-7616.1.14.11-branch Commit: 02f15ad8f7a0aa2d7c2eb5ece83bbfae00235205 https://github.com/WebKit/WebKit/commit/02f15ad8f7a0aa2d7c2eb5ece83bbfae00235205 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-17 (Wed, 17 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. Identifier: 263319.489@safari-7616.1.14.11-branch Commit: e3a263997a2b1e3c23706d2c97f15cc0738c8485 https://github.com/WebKit/WebKit/commit/e3a263997a2b1e3c23706d2c97f15cc0738c8485 Author: Ryan Reno <rr...@apple.com> Date: 2023-05-17 (Wed, 17 May 2023) Changed paths: M Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm Log Message: ----------- Cherry-pick b85d783df356. rdar://problem/109210266 Add a null check for the current process' name when launching a new process on macOS https://bugs.webkit.org/show_bug.cgi?id=256853 rdar://109210266 Reviewed by Chris Dumez. -[NSRunningApplication localizedName] is nullable. This adds a null check and falls back to the -[NSProcessInfo processName] if it is null on macOS. * Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm: (WebKit::ProcessLauncher::launchProcess): Canonical link: https://commits.webkit.org/264128@main Identifier: 263319.490@safari-7616.1.14.11-branch Commit: 2f665bfc8f3d6a55bdbd93d2c61bbb3f0b9e9fbf https://github.com/WebKit/WebKit/commit/2f665bfc8f3d6a55bdbd93d2c61bbb3f0b9e9fbf Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-18 (Thu, 18 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. Identifier: 263319.491@safari-7616.1.14.11-branch Commit: f4a1681d87d4ea2235ae9f7a1d90964c5d514ca2 https://github.com/WebKit/WebKit/commit/f4a1681d87d4ea2235ae9f7a1d90964c5d514ca2 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-19 (Fri, 19 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. Identifier: 263319.492@safari-7616.1.14.11-branch Commit: 39a6a3c948597d22ef86d75e6053c30e4a347d66 https://github.com/WebKit/WebKit/commit/39a6a3c948597d22ef86d75e6053c30e4a347d66 Author: Alan Baradlay <za...@apple.com> Date: 2023-05-19 (Fri, 19 May 2023) Changed paths: A LayoutTests/fast/inline/range-replace-partial-layout-invalidation-expected.html A LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html M Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp Log Message: ----------- Cherry-pick 8922f7c4d332. rdar://problem/109538333 (REGRESSION 262148@main) No repaint when deleting text, possibly only when the deleted text spans more than one line https://bugs.webkit.org/show_bug.cgi?id=257043 <rdar://109538333> Reviewed by Antti Koivisto. Normally while editing inline content in a content-editable container e.g "This is some long long long long long text content" and select/delete "long long text" (spanning over line#2 and #3) What happens is RenderText receives a content mutation event pointing to the _beginning_ of "long long text". As a result we damage line #2 and run a partial layout staring from line#2 until after we see no layout change anymore or we hit content end. However some JS based editors call innerHTML instead to mimic editing steps turning the above example to a "range replace" type of mutation where the entire text content is getting replaced with the "new", shortened content. In such cases, instead of receiving the position of the actual damage, we end up with the offset value of 0 since the entire content is being replaced (even though it's just a slight change in the text content) Now we damage line#0 and start running layout from the very first line until we see no layout change...which is the second line since the actual damage is on the third line. Since IFC does not support such mutations yet, in this patch we disable range based bailout which means while we still run partial inline layout, we always go all the way to the bottom of the content. /fast/inline/range-replace-partial-layout-invalidation-expected.html: Added. * LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html: Added. * Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp: (WebCore::Layout::InlineInvalidation::textWillBeRemoved): Canonical link: https://commits.webkit.org/264274@main Identifier: 263769.43@safari-7616.1.14.11-branch Commit: 07d7aa3b5f2518af55881b4645d254e894195383 https://github.com/WebKit/WebKit/commit/07d7aa3b5f2518af55881b4645d254e894195383 Author: Brady Eidson <beid...@apple.com> Date: 2023-05-19 (Fri, 19 May 2023) Changed paths: M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj Log Message: ----------- Cherry-pick fbe202e644f1. rdar://problem/108176822 WebKitSwiftOverlay should (once again) include a WebKitAdditions overlay https://bugs.webkit.org/show_bug.cgi?id=257046 rdar://109577606 Reviewed by Andy Estes. Include WebKitAdditionsSwiftOverlay from a well known location. * Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/264278@main Identifier: 263319.494@safari-7616.1.14.11-branch Commit: 41ca1ef990f283afb0788cc642ac85d4fb6f3e13 https://github.com/WebKit/WebKit/commit/41ca1ef990f283afb0788cc642ac85d4fb6f3e13 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-19 (Fri, 19 May 2023) Changed paths: M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj Log Message: ----------- Revert fbe202e644f1. rdar://problem/108176822 Identifier: 263319.495@safari-7616.1.14.11-branch Commit: 01cd2d2c3f8bcafaeea6b71ba16053ff5625c5bf https://github.com/WebKit/WebKit/commit/01cd2d2c3f8bcafaeea6b71ba16053ff5625c5bf Author: Russell Epstein <repst...@apple.com> Date: 2023-05-20 (Sat, 20 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.7 Identifier: 263322.493@safari-7616.1.14.11-branch Commit: 05d675f07897795c58d6c8c7fdeb932e58d2a3d1 https://github.com/WebKit/WebKit/commit/05d675f07897795c58d6c8c7fdeb932e58d2a3d1 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/platform/graphics/RenderingResource.h M Source/WebCore/platform/graphics/filters/Filter.cpp M Source/WebCore/platform/graphics/filters/Filter.h M Source/WebCore/platform/graphics/filters/FilterFunction.cpp M Source/WebCore/platform/graphics/filters/FilterFunction.h M Source/WebCore/svg/graphics/filters/SVGFilter.cpp M Source/WebCore/svg/graphics/filters/SVGFilter.h M Source/WebKit/Shared/WebCoreArgumentCoders.cpp Log Message: ----------- Cherry-pick 9a8998b85a0a. rdar://problem/109673458 [GPU Process][Filters] Make FilterFunction a RenderingResource https://bugs.webkit.org/show_bug.cgi?id=256318 rdar://108900138 Reviewed by Simon Fraser. This will allow caching the SVGFilter in GPU Process and will allow referencing it in DisplayList items by its RenderingResourceIdentifier. To do that, FilterFunction has to be a RenderingResource. This will overcome a layering violation because we should not reference SVGFilter in platform sources. Also this will overcome a ref-counting problem since FilterFunction and RenderingResource are both RefCounted classes. * Source/WebCore/platform/graphics/RenderingResource.h: (WebCore::RenderingResource::renderingResourceIdentifierIfExists const): * Source/WebCore/platform/graphics/filters/Filter.cpp: (WebCore::Filter::Filter): * Source/WebCore/platform/graphics/filters/Filter.h: (WebCore::Filter::Filter): * Source/WebCore/platform/graphics/filters/FilterFunction.cpp: (WebCore::FilterFunction::FilterFunction): * Source/WebCore/platform/graphics/filters/FilterFunction.h: * Source/WebCore/svg/graphics/filters/SVGFilter.cpp: (WebCore::SVGFilter::create): (WebCore::SVGFilter::SVGFilter): * Source/WebCore/svg/graphics/filters/SVGFilter.h: * Source/WebKit/Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<SVGFilter>::encode): (IPC::ArgumentCoder<SVGFilter>::decode): Canonical link: https://commits.webkit.org/263820@main Identifier: 263769.47@safari-7616.1.14.11-branch Commit: f6d7fdfeb933f634021f4b55f5aec06c23b935cd https://github.com/WebKit/WebKit/commit/f6d7fdfeb933f634021f4b55f5aec06c23b935cd Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/platform/graphics/DecomposedGlyphs.h M Source/WebCore/platform/graphics/Gradient.h M Source/WebCore/platform/graphics/NativeImage.h M Source/WebCore/platform/graphics/RenderingResource.h M Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h Log Message: ----------- Cherry-pick d67761f1060a. rdar://problem/109673458 [GPU Process] Cache all RenderingResources as one type https://bugs.webkit.org/show_bug.cgi?id=256408 <rdar://problem/108977457> Reviewed by Simon Fraser. This makes adding a new RenderingResource less pervasive. RenderingResources are mainly cached to control their lifetime between WebProcess and GPUProcess. Their concrete types are rarely used especially in WebProcess. So replace the pointers to NativeImage, DecomposedGlyphs and Gradient to just a pointer to RenderingResource. Add traits to these classes so RenderingResource can be casted to any of them. * Source/WebCore/platform/graphics/DecomposedGlyphs.h: (isType): * Source/WebCore/platform/graphics/Gradient.h: (isType): * Source/WebCore/platform/graphics/NativeImage.h: (isType): * Source/WebCore/platform/graphics/RenderingResource.h: (WebCore::RenderingResource::isNativeImage const): (WebCore::RenderingResource::isGradient const): (WebCore::RenderingResource::isDecomposedGlyphs const): * Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h: (WebCore::DisplayList::LocalResourceHeap::add): * Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h: (WebKit::QualifiedResourceHeap::add): (WebKit::QualifiedResourceHeap::getNativeImage const): (WebKit::QualifiedResourceHeap::getDecomposedGlyphs const): (WebKit::QualifiedResourceHeap::getGradient const): (WebKit::QualifiedResourceHeap::removeRenderingResource): (WebKit::QualifiedResourceHeap::releaseAllResources): (WebKit::QualifiedResourceHeap::releaseAllImageResources): (WebKit::QualifiedResourceHeap::checkInvariants const): (WebKit::QualifiedResourceHeap::removeNativeImage): Deleted. (WebKit::QualifiedResourceHeap::removeDecomposedGlyphs): Deleted. (WebKit::QualifiedResourceHeap::removeGradient): Deleted. * Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp: (WebKit::RemoteResourceCache::releaseRenderingResource): * Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp: (WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy): (WebKit::RemoteResourceCacheProxy::clear): (WebKit::RemoteResourceCacheProxy::imagesCount const): (WebKit::RemoteResourceCacheProxy::cachedNativeImage const): (WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse): (WebKit::RemoteResourceCacheProxy::recordGradientUse): (WebKit::RemoteResourceCacheProxy::recordNativeImageUse): (WebKit::RemoteResourceCacheProxy::releaseRenderingResource): (WebKit::RemoteResourceCacheProxy::clearRenderingResourceMap): (WebKit::RemoteResourceCacheProxy::clearNativeImageMap): (WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed): (WebKit::RemoteResourceCacheProxy::releaseMemory): (WebKit::RemoteResourceCacheProxy::clearDecomposedGlyphsMap): Deleted. (WebKit::RemoteResourceCacheProxy::clearGradientMap): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h: (WebKit::RemoteResourceCacheProxy::imagesCount const): Deleted. Canonical link: https://commits.webkit.org/263824@main Identifier: 263769.48@safari-7616.1.14.11-branch Commit: 4a63d837404a73d384e020369685bff9b160db98 https://github.com/WebKit/WebKit/commit/4a63d837404a73d384e020369685bff9b160db98 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/Headers.cmake M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/svg/graphics/filters/SVGFilter.cpp M Source/WebCore/svg/graphics/filters/SVGFilter.h M Source/WebCore/svg/graphics/filters/SVGFilterExpression.h R Source/WebCore/svg/graphics/filters/SVGFilterExpressionReference.h M Source/WebCore/svg/graphics/filters/SVGFilterGraph.h M Source/WebKit/Shared/WebCoreArgumentCoders.cpp M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in Log Message: ----------- Cherry-pick 56cc7591e5e3. rdar://problem/109673458 [GPU Process][Filters] Make SVGFilter own a vector of unique FilterEffects https://bugs.webkit.org/show_bug.cgi?id=256333 rdar://109060794 Reviewed by Simon Fraser. Currently, SVGFilterExpressionTerm holds a Ref<FilterEffect> which may be referenced more than once by multiple SVGFilterExpressionTerms. We need make SVGFilter own a Vector of unique FilterEffects. SVGFilterExpressionTerm will hold an index to this Vector. This will allow building an SVGFilterTransaction which is a set of altered unique FilterEffects identified by the index in the vector of unique FilterEffects of SVGFilter. * Source/WebCore/Headers.cmake: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/svg/graphics/filters/SVGFilter.cpp: (WebCore::SVGFilter::create): (WebCore::SVGFilter::SVGFilter): (WebCore::SVGFilter::buildExpression): (WebCore::SVGFilter::supportedFilterRenderingModes const): (WebCore::SVGFilter::effectsOfType const): (WebCore::SVGFilter::apply): (WebCore::SVGFilter::createFilterStyles const): (WebCore::SVGFilter::externalRepresentation const): * Source/WebCore/svg/graphics/filters/SVGFilter.h: * Source/WebCore/svg/graphics/filters/SVGFilterExpression.h: * Source/WebCore/svg/graphics/filters/SVGFilterExpressionReference.h: Removed. * Source/WebCore/svg/graphics/filters/SVGFilterGraph.h: (WebCore::SVGFilterGraph::SVGFilterGraph): (WebCore::SVGFilterGraph::nodes const): * Source/WebKit/Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<SVGFilter>::encode): (IPC::ArgumentCoder<SVGFilter>::decode): * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: Canonical link: https://commits.webkit.org/263886@main Identifier: 263769.49@safari-7616.1.14.11-branch Commit: 48a02f5386b1ff4c7a0451e64fe9d1657294405d https://github.com/WebKit/WebKit/commit/48a02f5386b1ff4c7a0451e64fe9d1657294405d Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/platform/graphics/filters/FilterResults.h M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp M Source/WebCore/rendering/svg/RenderSVGResourceFilter.h M Source/WebCore/svg/graphics/filters/SVGFilter.cpp M Source/WebCore/svg/graphics/filters/SVGFilter.h Log Message: ----------- Cherry-pick b860110f0ae4. rdar://problem/109673458 [GPU Process][Filters] Top level SVGFilter should own its FilterResults https://bugs.webkit.org/show_bug.cgi?id=256535 rdar://109107572 Reviewed by Simon Fraser. This allows caching the FilterResults along with the SVGFilter in RemoteResourceCache. SVGFilter::ensureResults() returns FilterResults& but it takes FilterResultsCreator. FilterResultsCreator returns a std::unique_ptr<FilterResults> which SVGFilter will maintain. * Source/WebCore/platform/graphics/filters/FilterResults.h: * Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::applyResource): (WebCore::RenderSVGResourceFilter::markFilterForRepaint): * Source/WebCore/rendering/svg/RenderSVGResourceFilter.h: * Source/WebCore/svg/graphics/filters/SVGFilter.cpp: (WebCore::SVGFilter::ensureResults): (WebCore::SVGFilter::clearEffectResult): * Source/WebCore/svg/graphics/filters/SVGFilter.h: Canonical link: https://commits.webkit.org/263996@main Identifier: 263769.50@safari-7616.1.14.11-branch Commit: 1cef389cb253bcf73669dc564f462898e00ab07c https://github.com/WebKit/WebKit/commit/1cef389cb253bcf73669dc564f462898e00ab07c Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/platform/graphics/SourceImage.cpp M Source/WebCore/platform/graphics/SourceImage.h M Source/WebCore/platform/graphics/filters/DistantLightSource.cpp M Source/WebCore/platform/graphics/filters/DistantLightSource.h M Source/WebCore/platform/graphics/filters/FEBlend.cpp M Source/WebCore/platform/graphics/filters/FEBlend.h M Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp M Source/WebCore/platform/graphics/filters/FEColorMatrix.h M Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp M Source/WebCore/platform/graphics/filters/FEComponentTransfer.h M Source/WebCore/platform/graphics/filters/FEComposite.cpp M Source/WebCore/platform/graphics/filters/FEComposite.h M Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp M Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h M Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h M Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp M Source/WebCore/platform/graphics/filters/FEDisplacementMap.h M Source/WebCore/platform/graphics/filters/FEDropShadow.cpp M Source/WebCore/platform/graphics/filters/FEDropShadow.h M Source/WebCore/platform/graphics/filters/FEFlood.cpp M Source/WebCore/platform/graphics/filters/FEFlood.h M Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp M Source/WebCore/platform/graphics/filters/FEGaussianBlur.h M Source/WebCore/platform/graphics/filters/FEImage.cpp M Source/WebCore/platform/graphics/filters/FEImage.h M Source/WebCore/platform/graphics/filters/FELighting.cpp M Source/WebCore/platform/graphics/filters/FELighting.h M Source/WebCore/platform/graphics/filters/FEMerge.cpp M Source/WebCore/platform/graphics/filters/FEMerge.h M Source/WebCore/platform/graphics/filters/FEMorphology.cpp M Source/WebCore/platform/graphics/filters/FEMorphology.h M Source/WebCore/platform/graphics/filters/FEOffset.cpp M Source/WebCore/platform/graphics/filters/FEOffset.h M Source/WebCore/platform/graphics/filters/FESpecularLighting.h M Source/WebCore/platform/graphics/filters/FETurbulence.cpp M Source/WebCore/platform/graphics/filters/FETurbulence.h M Source/WebCore/platform/graphics/filters/FilterEffect.cpp M Source/WebCore/platform/graphics/filters/FilterEffect.h M Source/WebCore/platform/graphics/filters/LightSource.h M Source/WebCore/platform/graphics/filters/PointLightSource.cpp M Source/WebCore/platform/graphics/filters/PointLightSource.h M Source/WebCore/platform/graphics/filters/SpotLightSource.cpp M Source/WebCore/platform/graphics/filters/SpotLightSource.h M Source/WebCore/svg/SVGPreserveAspectRatioValue.h Log Message: ----------- Cherry-pick 5f6cc633dcd4. rdar://problem/109673458 [GPU Process][Filters] Implement equality operator for FilterEffect https://bugs.webkit.org/show_bug.cgi?id=256759 rdar://109303025 Reviewed by Simon Fraser. The FilterEffect::operator==() will be virtual and will be overridden by all the superclasses. All the properties of the superclass and the properties of FilterEffect will be compared for equality. * Source/WebCore/platform/graphics/SourceImage.cpp: (WebCore::SourceImage::operator== const): * Source/WebCore/platform/graphics/SourceImage.h: * Source/WebCore/platform/graphics/filters/DistantLightSource.cpp: (WebCore::DistantLightSource::operator== const): * Source/WebCore/platform/graphics/filters/DistantLightSource.h: * Source/WebCore/platform/graphics/filters/FEBlend.cpp: (WebCore::FEBlend::operator== const): * Source/WebCore/platform/graphics/filters/FEBlend.h: * Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp: (WebCore::FEColorMatrix::operator== const): * Source/WebCore/platform/graphics/filters/FEColorMatrix.h: * Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp: (WebCore::FEComponentTransfer::operator== const): * Source/WebCore/platform/graphics/filters/FEComponentTransfer.h: * Source/WebCore/platform/graphics/filters/FEComposite.cpp: (WebCore::FEComposite::operator== const): * Source/WebCore/platform/graphics/filters/FEComposite.h: * Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp: (WebCore::FEConvolveMatrix::operator== const): * Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h: * Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h: (WebCore::FEDiffuseLighting::operator== const): * Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp: (WebCore::FEDisplacementMap::operator== const): * Source/WebCore/platform/graphics/filters/FEDisplacementMap.h: * Source/WebCore/platform/graphics/filters/FEDropShadow.cpp: (WebCore::FEDropShadow::operator== const): * Source/WebCore/platform/graphics/filters/FEDropShadow.h: * Source/WebCore/platform/graphics/filters/FEFlood.cpp: (WebCore::FEFlood::operator== const): * Source/WebCore/platform/graphics/filters/FEFlood.h: * Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp: (WebCore::FEGaussianBlur::operator== const): * Source/WebCore/platform/graphics/filters/FEGaussianBlur.h: * Source/WebCore/platform/graphics/filters/FEImage.cpp: (WebCore::FEImage::operator== const): * Source/WebCore/platform/graphics/filters/FEImage.h: * Source/WebCore/platform/graphics/filters/FELighting.cpp: (WebCore::FELighting::operator== const): * Source/WebCore/platform/graphics/filters/FELighting.h: * Source/WebCore/platform/graphics/filters/FEMerge.cpp: (WebCore::FEMerge::operator== const): * Source/WebCore/platform/graphics/filters/FEMerge.h: * Source/WebCore/platform/graphics/filters/FEMorphology.cpp: (WebCore::FEMorphology::operator== const): * Source/WebCore/platform/graphics/filters/FEMorphology.h: * Source/WebCore/platform/graphics/filters/FEOffset.cpp: (WebCore::FEOffset::operator== const): * Source/WebCore/platform/graphics/filters/FEOffset.h: * Source/WebCore/platform/graphics/filters/FESpecularLighting.h: (WebCore::FESpecularLighting::operator== const): * Source/WebCore/platform/graphics/filters/FETurbulence.cpp: (WebCore::FETurbulence::operator== const): * Source/WebCore/platform/graphics/filters/FETurbulence.h: * Source/WebCore/platform/graphics/filters/FilterEffect.cpp: (WebCore::FilterEffect::operator== const): * Source/WebCore/platform/graphics/filters/FilterEffect.h: (WebCore::FilterEffect::areEqual): * Source/WebCore/platform/graphics/filters/LightSource.h: (WebCore::LightSource::operator== const): (WebCore::LightSource::areEqual): * Source/WebCore/platform/graphics/filters/PointLightSource.cpp: (WebCore::PointLightSource::operator== const): * Source/WebCore/platform/graphics/filters/PointLightSource.h: * Source/WebCore/platform/graphics/filters/SpotLightSource.cpp: (WebCore::SpotLightSource::operator== const): * Source/WebCore/platform/graphics/filters/SpotLightSource.h: * Source/WebCore/svg/SVGPreserveAspectRatioValue.h: Canonical link: https://commits.webkit.org/264050@main Identifier: 263769.51@safari-7616.1.14.11-branch Commit: b8409a737f9b44858b5eb86c2822f466f13d3764 https://github.com/WebKit/WebKit/commit/b8409a737f9b44858b5eb86c2822f466f13d3764 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/platform/graphics/RenderingResource.h M Source/WebCore/platform/graphics/displaylists/DisplayList.h M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h M Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h M Source/WebCore/platform/graphics/filters/Filter.h M Source/WebCore/platform/graphics/filters/FilterFunction.h M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h Log Message: ----------- Cherry-pick e4cb3bdcaddc. rdar://problem/109673458 [GPU Process][Filters] Make RemoteResourceCache be capable of caching Filter https://bugs.webkit.org/show_bug.cgi?id=256324 rdar://109069946 Reviewed by Simon Fraser. This will allow sending the SVGFilter once to the GPU Process and referencing it later by its RenderingResourceIdentifier in the StreamConnection message. * Source/WebCore/platform/graphics/RenderingResource.h: (WebCore::RenderingResource::isFilter const): * Source/WebCore/platform/graphics/displaylists/DisplayList.h: (WebCore::DisplayList::DisplayList::cacheFilter): * Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h: * Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp: (WebCore::DisplayList::RecorderImpl::recordResourceUse): * Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h: * Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h: (WebCore::DisplayList::LocalResourceHeap::add): * Source/WebCore/platform/graphics/filters/Filter.h: (isType): * Source/WebCore/platform/graphics/filters/FilterFunction.h: (WebCore::FilterFunction::isFilter const): Deleted. * Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h: (WebKit::QualifiedResourceHeap::add): (WebKit::QualifiedResourceHeap::getFilter const): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::cacheFilter): (WebKit::RemoteRenderingBackend::cacheFilterWithQualifiedIdentifier): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in: * Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp: (WebKit::RemoteResourceCache::cacheFilter): (WebKit::RemoteResourceCache::cachedFilter const): * Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: (WebKit::RemoteDisplayListRecorderProxy::recordResourceUse): * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::cacheFilter): * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp: (WebKit::RemoteResourceCacheProxy::recordFilterUse): * Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h: Canonical link: https://commits.webkit.org/264001@main Identifier: 263769.52@safari-7616.1.14.11-branch Commit: d37854b362b067ea53810d43c2b80c5f6171fb05 https://github.com/WebKit/WebKit/commit/d37854b362b067ea53810d43c2b80c5f6171fb05 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp M Source/WebCore/svg/graphics/filters/SVGFilter.cpp M Source/WebCore/svg/graphics/filters/SVGFilter.h M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp Log Message: ----------- Cherry-pick b686ba471d7a. rdar://problem/109673458 [GPU Process] [Filters] Cache the SVGFilter applying results in RemoteResourceCache https://bugs.webkit.org/show_bug.cgi?id=232845 rdar://85426641 Reviewed by Simon Fraser. This allows caching the results of applying an SVGFilter to a source ImageBuffer in GPU Process. We should be able to use the cached result if the Filter was not changed. We should be also able to clear some of the result FilterImages if a FilterEffect was changed. * Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::applyResource): * Source/WebCore/svg/graphics/filters/SVGFilter.cpp: (WebCore::SVGFilter::mergeEffects): * Source/WebCore/svg/graphics/filters/SVGFilter.h: * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp: (WebKit::RemoteDisplayListRecorder::drawFilteredImageBufferInternal): (WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer): * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: (WebKit::RemoteDisplayListRecorderProxy::recordDrawFilteredImageBuffer): Canonical link: https://commits.webkit.org/264087@main Identifier: 263769.53@safari-7616.1.14.11-branch Commit: d5dc16911ffef2ec34128099c7bb65ed74fab658 https://github.com/WebKit/WebKit/commit/d5dc16911ffef2ec34128099c7bb65ed74fab658 Author: Dan Robson <dtr_bugzi...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.8 Identifier: 263769.54@safari-7616.1.14.11-branch Commit: 49eadf462ca2355439b5fff1c404b5845084e941 https://github.com/WebKit/WebKit/commit/49eadf462ca2355439b5fff1c404b5845084e941 Author: Brady Eidson <beid...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj Log Message: ----------- Cherry-pick 8792d34445e2. rdar://problem/109674033 WebKitSwiftOverlay should (once again) include a WebKitAdditions overlay https://bugs.webkit.org/show_bug.cgi?id=257046 rdar://109674033 Reviewed by Tim Horton. Informal review by James Savage. Include WebKitAdditionsSwiftOverlay from a well known location. * Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/264381@main Identifier: 263769.55@safari-7616.1.14.11-branch Commit: 59318f8f05a747e9abb09e9532354f20ba9bee2c https://github.com/WebKit/WebKit/commit/59318f8f05a747e9abb09e9532354f20ba9bee2c Author: Matt Woodrow <mattwood...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in Log Message: ----------- RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread blocks on a task running on the main thread. https://bugs.webkit.org/show_bug.cgi?id=256073 <rdar://108642579> Reviewed by Simon Fraser. We attempt to wait for flushes of RemoteImageBufferProxy on a background thread, but the 'didFlush' IPC message is received on the main thread. This can mean it gets delayed (and we don't know the flush is completed) if the main thread is otherwise busy. This delays first-paint on CPLT. This change passes a Semphore across to the GPUP instead of the flush identifier, and we signal it when the flush is completed rather than sending a return 'didFlush' message. The WebProcess waits on each flush Semaphore in a background WorkQueue, and then processes the equivalent of 'didFlush' asynchronously and notifies the condition variable to wake any waiting threads. waitForDidFlushWithTimeout is removed, and all waiters now use the waitForDidFlushOnSecondaryThread code path (renamed) since all waiters are now 'secondary' WRT the flushing WorkQueue. Synchronous flushes now use a proper synchronous IPC message, rather than relying on async + wait. * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp: (WebKit::RemoteDisplayListRecorder::flushContext): (WebKit::RemoteDisplayListRecorder::flushContextSync): * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h: * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::didFlush): Deleted. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: (WebKit::RemoteDisplayListRecorderProxy::sendSync): (WebKit::RemoteDisplayListRecorderProxy::flushContext): (WebKit::RemoteDisplayListRecorderProxy::flushContextSync): * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp: (WebKit::RemoteImageBufferProxy::flushDrawingContext): (WebKit::RemoteImageBufferProxy::flushDrawingContextAsync): (WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush): (WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout): Deleted. (WebKit::RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy): (WebKit::RemoteRenderingBackendProxy::disconnectGPUProcess): (WebKit::RemoteRenderingBackendProxy::addPendingFlush): (WebKit::RemoteRenderingBackendProxy::waitForDidFlush): Deleted. (WebKit::RemoteRenderingBackendProxy::didFlush): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in: Canonical link: https://commits.webkit.org/263572@main Identifier: 263769.56@safari-7616.1.14.11-branch Commit: 74158dd5d3f917fce77df6a55b5914bc039a4904 https://github.com/WebKit/WebKit/commit/74158dd5d3f917fce77df6a55b5914bc039a4904 Author: Matt Woodrow <mattwood...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm Log Message: ----------- Cherry-pick d2f31696424a. rdar://problem/108642579 RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread blocks on a task running on the main thread. https://bugs.webkit.org/show_bug.cgi?id=256073 <rdar://108642579> Reviewed by Simon Fraser. We attempt to wait for flushes of RemoteImageBufferProxy on a background thread, but the 'didFlush' IPC message is received on the main thread. This can mean it gets delayed (and we don't know the flush is completed) if the main thread is otherwise busy. This delays first-paint on CPLT. This change passes a Semphore across to the GPUP instead of the flush identifier, and we signal it when the flush is completed rather than sending a return 'didFlush' message. The WebProcess waits on each flush Semaphore in a background WorkQueue, and then processes the equivalent of 'didFlush' asynchronously and notifies the condition variable to wake any waiting threads. waitForDidFlushWithTimeout is removed, and all waiters now use the waitForDidFlushOnSecondaryThread code path (renamed) since all waiters are now 'secondary' WRT the flushing WorkQueue. Synchronous flushes now use a proper synchronous IPC message, rather than relying on async + wait. Adds a 0-delay asynchronous callOnMainThread hop when triggering the rendering update from RemoteLaterTreeDisplayRefreshMonitor::requestRefreshCallback. It appears that when doing the first requestRefreshCallback after idle, we currently just trigger a rendering update immediately, rather than waiting for displayDidRefresh. This differs from the non-GPUP code. This 0-delay step makes our behaviour more similar to the old code, but adding a proper displayDidRefresh wait would be preferable in the longer term. * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp: (WebKit::RemoteDisplayListRecorder::flushContext): (WebKit::RemoteDisplayListRecorder::flushContextSync): * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h: * Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::didFlush): Deleted. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: (WebKit::RemoteDisplayListRecorderProxy::sendSync): (WebKit::RemoteDisplayListRecorderProxy::flushContext): (WebKit::RemoteDisplayListRecorderProxy::flushContextSync): * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp: (WebKit::RemoteImageBufferProxy::flushDrawingContext): (WebKit::RemoteImageBufferProxy::flushDrawingContextAsync): (WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush): (WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout): Deleted. (WebKit::RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy): (WebKit::RemoteRenderingBackendProxy::disconnectGPUProcess): (WebKit::RemoteRenderingBackendProxy::addPendingFlush): (WebKit::RemoteRenderingBackendProxy::waitForDidFlush): Deleted. (WebKit::RemoteRenderingBackendProxy::didFlush): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: (WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback): Canonical link: https://commits.webkit.org/263993@main Identifier: 263769.57@safari-7616.1.14.11-branch Commit: 59c8eb664fcc63bc5fd4cf9d83cfcfb1c299bf0c https://github.com/WebKit/WebKit/commit/59c8eb664fcc63bc5fd4cf9d83cfcfb1c299bf0c Author: Dan Robson <dtr_bugzi...@apple.com> Date: 2023-05-22 (Mon, 22 May 2023) Changed paths: M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj Log Message: ----------- Apply patch. rdar://problem/109674033 Identifier: 263769.58@safari-7616.1.14.11-branch Commit: 33c1065d575698fb69ab07117d3ebc6b6cfccd06 https://github.com/WebKit/WebKit/commit/33c1065d575698fb69ab07117d3ebc6b6cfccd06 Author: Tyler Wilcock <tyle...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: M Source/WebCore/accessibility/AccessibilityObjectInterface.h M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm Log Message: ----------- Cherry-pick 9c6ff227993d. rdar://problem/109586801 AX: WebAccessibilityObjectWrapperBase and WKAccessibilityWebPageObjectBase should hold WeakPtrs to their associated backing objects https://bugs.webkit.org/show_bug.cgi?id=257071 rdar://109586801 Reviewed by Andres Gonzalez. Continue the transition to ubiquitous smart pointer member usage per https://github.com/WebKit/WebKit/wiki/Smart-Pointer-Usage-Guidelines. * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper axBackingObject]): * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h: * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm: (-[WebAccessibilityObjectWrapperBase attachIsolatedObject:]): (-[WebAccessibilityObjectWrapperBase hasIsolatedObject]): (-[WebAccessibilityObjectWrapperBase axBackingObject]): Canonical link: https://commits.webkit.org/264429@main Identifier: 263322.506@safari-7616.1.14.11-branch Commit: 0258c15df5b165b19e0459ae24bb556268ae03a2 https://github.com/WebKit/WebKit/commit/0258c15df5b165b19e0459ae24bb556268ae03a2 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html A LayoutTests/fast/images/decode-decoding-change-image-src.html M LayoutTests/fast/images/decoding-attribute-async-small-image.html M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html M Source/WebCore/rendering/RenderBoxModelObject.cpp Log Message: ----------- Cherry-pick 36adb36a799f. rdar://problem/108930635 Charts on sixcolors.com flicker when zooming in https://bugs.webkit.org/show_bug.cgi?id=256620 rdar://108930635 Reviewed by Simon Fraser. If 1. An image is in the current viewport, 2. It has the attribute decoding="async", 3. The layer has already painted at least once, 4. And the image frame is being re-decoded Then the decoding="async" attribute should be ignored to avoid flickering. RenderBoxModelObject::decodingModeForImageDraw() is re-factored such that caces which return DecodingMode::Synchronous are checked first. Then flickering case is checked. Then cases which return DecodingMode::Asynchronous are checked last. Two layout tests are changed to ensure the image is displayed on a fresh layer when the image has the decoding="async". * LayoutTests/fast/images/decode-decoding-change-image-src-expected.html: Added. * LayoutTests/fast/images/decode-decoding-change-image-src.html: Added. * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::decodingModeForImageDraw const): Canonical link: https://commits.webkit.org/264433@main Identifier: 263322.507@safari-7616.1.14.11-branch Commit: 805eb5976bcfbf7eb4b20c272f401b0a04ed9563 https://github.com/WebKit/WebKit/commit/805eb5976bcfbf7eb4b20c272f401b0a04ed9563 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.9 Identifier: 263322.508@safari-7616.1.14.11-branch Commit: 020ec3aa668d2922ffb369e1c7fd91197550dd03 https://github.com/WebKit/WebKit/commit/020ec3aa668d2922ffb369e1c7fd91197550dd03 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: R LayoutTests/fast/images/decode-decoding-change-image-src-expected.html R LayoutTests/fast/images/decode-decoding-change-image-src.html M LayoutTests/fast/images/decoding-attribute-async-small-image.html M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html M Source/WebCore/rendering/RenderBoxModelObject.cpp Log Message: ----------- Revert 36adb36a799f. rdar://problem/108930635 Identifier: 263322.509@safari-7616.1.14.11-branch Commit: d43cbc4bc24a0d7a60bbbbdd246a3d9e6ae0a429 https://github.com/WebKit/WebKit/commit/d43cbc4bc24a0d7a60bbbbdd246a3d9e6ae0a429 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html A LayoutTests/fast/images/decode-decoding-change-image-src.html M LayoutTests/fast/images/decoding-attribute-async-small-image.html M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html M Source/WebCore/rendering/RenderBoxModelObject.cpp Log Message: ----------- Cherry-pick 36adb36a799f. rdar://problem/108930635 Charts on sixcolors.com flicker when zooming in https://bugs.webkit.org/show_bug.cgi?id=256620 rdar://108930635 Reviewed by Simon Fraser. If 1. An image is in the current viewport, 2. It has the attribute decoding="async", 3. The layer has already painted at least once, 4. And the image frame is being re-decoded Then the decoding="async" attribute should be ignored to avoid flickering. RenderBoxModelObject::decodingModeForImageDraw() is re-factored such that caces which return DecodingMode::Synchronous are checked first. Then flickering case is checked. Then cases which return DecodingMode::Asynchronous are checked last. Two layout tests are changed to ensure the image is displayed on a fresh layer when the image has the decoding="async". * LayoutTests/fast/images/decode-decoding-change-image-src-expected.html: Added. * LayoutTests/fast/images/decode-decoding-change-image-src.html: Added. * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::decodingModeForImageDraw const): Canonical link: https://commits.webkit.org/264433@main Identifier: 263322.510@safari-7616.1.14.11-branch Commit: 2422f56571aa4a65c15c0fb79a187963ca849f47 https://github.com/WebKit/WebKit/commit/2422f56571aa4a65c15c0fb79a187963ca849f47 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-23 (Tue, 23 May 2023) Changed paths: R LayoutTests/fast/images/decode-decoding-change-image-src-expected.html R LayoutTests/fast/images/decode-decoding-change-image-src.html M LayoutTests/fast/images/decoding-attribute-async-small-image.html M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html M Source/WebCore/rendering/RenderBoxModelObject.cpp Log Message: ----------- Revert 0258c15df5b1. rdar://problem/108930635 Identifier: 263322.511@safari-7616.1.14.11-branch Commit: d231f837f6aeacd679dc53e448c3c00ad04a3221 https://github.com/WebKit/WebKit/commit/d231f837f6aeacd679dc53e448c3c00ad04a3221 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.10 Identifier: 263769.65@safari-7616.1.14.11-branch Commit: b20627b5a7ffdccb59d28da8a96e1c7749ee4132 https://github.com/WebKit/WebKit/commit/b20627b5a7ffdccb59d28da8a96e1c7749ee4132 Author: Jer Noble <jer.no...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm Log Message: ----------- Cherry-pick 0c7bb633923a. rdar://problem/109528876 [iOS] Auto-PiP on Yahoo.com may display black feed https://bugs.webkit.org/show_bug.cgi?id=257059 rdar://109528876 Reviewed by Eric Carlson. Auto-PiP (as opposed to an explicit PiP operation) works by creating a empty WebAVPlayerLayerView, and WebAVPlayerViewController, and returning YES from the -playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground: delegate. However, auto-PiP will transfer the video view from the empty WebAVPlayerLayerView to the PiP window, and if the empty view doesn't have a video view, the resulting PiP window will be empty. * Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm: (VideoFullscreenInterfaceAVKit::doSetup): Canonical link: https://commits.webkit.org/264307@main Identifier: 263769.66@safari-7616.1.14.11-branch Commit: 383b52b75cbac9e21320c4f347dd34e129c87946 https://github.com/WebKit/WebKit/commit/383b52b75cbac9e21320c4f347dd34e129c87946 Author: Brent Fulgham <bfulg...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Source/WebKit/GPUProcess/GPUProcess.cpp M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm Log Message: ----------- Cherry-pick fe4af8b17fb6. rdar://problem/109380900 Cherry-pick 264460@main (fe4af8b17fb6). <rdar://109380900> [Cocoa] Call [AVCaptureDevice ensureServerConnection] when new extensions are made to the GPU Process https://bugs.webkit.org/show_bug.cgi?id=257241 <rdar://109380900> Reviewed by Eric Carlson. Our current code only calls [AVCaptureDevice ensureServerConnection] the first time we extend the sandbox. This can lead to problems if the user visits a site that only needs Microphone access (for example), and then visits a site that needs Camera access. Because the camera-related extensions are only recognized by the video capture system when [AVCaptureDevice ensureServiceConnection] is called, the fact that we called it before the new sandbox extensions were in place mean we never activate the relevant features. To fix this, we should simply call [AVCaptureDevice ensureServerConnection] any time we extend the sandbox. I have confirmed with the relevant teams that this call is low-cost (performance wise), and is not harmful to call repeatedly for things that have already been activated. This patch also adds new logging to help debug similar problems in the future. * Source/WebKit/GPUProcess/GPUProcess.cpp: (WebKit::GPUProcess::updateSandboxAccess): Add logging. (WebKit::GPUProcess::updateCaptureAccess): Ditto. * Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm: (WebKit::GPUProcess::ensureAVCaptureServerConnection): Add new logging, no longer make this a 'std::call_once'. Canonical link: https://commits.webkit.org/264460@main Identifier: 263769.67@safari-7616.1.14.11-branch Commit: f0bd22f8802084634fe0aa265e685a8ea8811ffb https://github.com/WebKit/WebKit/commit/f0bd22f8802084634fe0aa265e685a8ea8811ffb Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Source/WebKit/GPUProcess/GPUProcess.cpp M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm Log Message: ----------- Revert 383b52b75cba. rdar://problem/109380900 Identifier: 263769.68@safari-7616.1.14.11-branch Commit: 54d0a5767da4bbbeb581b806ff580a73966c7a79 https://github.com/WebKit/WebKit/commit/54d0a5767da4bbbeb581b806ff580a73966c7a79 Author: Brent Fulgham <bfulg...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Source/WebKit/GPUProcess/GPUProcess.cpp M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm Log Message: ----------- Cherry-pick 264460@main (fe4af8b17fb6). <rdar://109380900> [Cocoa] Call [AVCaptureDevice ensureServerConnection] when new extensions are made to the GPU Process https://bugs.webkit.org/show_bug.cgi?id=257241 <rdar://109380900> Reviewed by Eric Carlson. Our current code only calls [AVCaptureDevice ensureServerConnection] the first time we extend the sandbox. This can lead to problems if the user visits a site that only needs Microphone access (for example), and then visits a site that needs Camera access. Because the camera-related extensions are only recognized by the video capture system when [AVCaptureDevice ensureServiceConnection] is called, the fact that we called it before the new sandbox extensions were in place mean we never activate the relevant features. To fix this, we should simply call [AVCaptureDevice ensureServerConnection] any time we extend the sandbox. I have confirmed with the relevant teams that this call is low-cost (performance wise), and is not harmful to call repeatedly for things that have already been activated. This patch also adds new logging to help debug similar problems in the future. * Source/WebKit/GPUProcess/GPUProcess.cpp: (WebKit::GPUProcess::updateSandboxAccess): Add logging. (WebKit::GPUProcess::updateCaptureAccess): Ditto. * Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm: (WebKit::GPUProcess::ensureAVCaptureServerConnection): Add new logging, no longer make this a 'std::call_once'. Canonical link: https://commits.webkit.org/264460@main Identifier: 263769.69@safari-7616.1.14.11-branch Commit: ff724d100bcfb2e88227d671517af587d21b8dd5 https://github.com/WebKit/WebKit/commit/ff724d100bcfb2e88227d671517af587d21b8dd5 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html A LayoutTests/fast/images/decode-decoding-change-image-src.html M LayoutTests/fast/images/decoding-attribute-async-small-image.html M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html M Source/WebCore/rendering/RenderBoxModelObject.cpp Log Message: ----------- Apply patch 0258c15df5b1 rdar://108930635 (Images on sixcolors.com and other sites flicker when zooming in) Identifier: 263769.70@safari-7616.1.14.11-branch Commit: 482524e77a12073b99364a37150a97f625c080ce https://github.com/WebKit/WebKit/commit/482524e77a12073b99364a37150a97f625c080ce Author: J Pascoe <j_pas...@apple.com> Date: 2023-05-24 (Wed, 24 May 2023) Changed paths: M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm Log Message: ----------- Cherry-pick 52e6f05d3e91. rdar://problem/109060751 [WebAuthn] Clean up observers in CcidService https://bugs.webkit.org/show_bug.cgi?id=257240 rdar://109060751 Reviewed by Brent Fulgham. This change ensures removeObserver:forKeyPath: is called for each observer we add via addObserver in CcidService. * Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h: * Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm: (WebKit::CcidService::~CcidService): (WebKit::CcidService::removeObservers): (WebKit::CcidService::platformStartDiscovery): (WebKit::CcidService::updateSlots): (-[_WKSmartCardSlotStateObserver observeValueForKeyPath:ofObject:change:context:]): (-[_WKSmartCardSlotStateObserver removeObserver]): Canonical link: https://commits.webkit.org/264485@main Identifier: 263769.71@safari-7616.1.14.11-branch Commit: 4f89809fa512d635abfa78f8de781f5f9aa28d32 https://github.com/WebKit/WebKit/commit/4f89809fa512d635abfa78f8de781f5f9aa28d32 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-25 (Thu, 25 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.11 Identifier: 263769.72@safari-7616.1.14.11-branch Commit: 0ab29f95cba3dd2d9614678f5e0735f1ba52fa8a https://github.com/WebKit/WebKit/commit/0ab29f95cba3dd2d9614678f5e0735f1ba52fa8a Author: Kimmo Kinnunen <kkinnu...@apple.com> Date: 2023-05-25 (Thu, 25 May 2023) Changed paths: M Source/WebCore/platform/ScrollbarsController.h M Source/WebCore/platform/graphics/cocoa/IOSurface.h M Source/WebCore/platform/graphics/cocoa/IOSurface.mm M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/SourcesCocoa.txt M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h Log Message: ----------- Cherry-pick b9e5b9ff4fe9. rdar://problem/106651668 Cocoa Small RemoteLayerBackingStores should be drawn with software https://bugs.webkit.org/show_bug.cgi?id=253447 rdar://problem/106651668 Reviewed by Simon Fraser. Add a specific GPUP side backend for ImageBitmaps used for LayerBacking purposes, e.g. RemoteLayerBackingStore buffers. The buffers are drawn to with software rasterization. Fixes a bug in RemoteDisplayListRecorderProxy::createImageBuffer where intermediate ImageBuffers for filters would be created as Layer rendering purpose, where as the Layer purpose is supposed to be only for the Layer backing stores. Fixes a bug in RenderingPurpose where missing ShareableLocalSnapshot was not part of the enum serialization, making the serialization incorrect. * Source/WebCore/platform/ScrollbarsController.h: * Source/WebCore/platform/graphics/cocoa/IOSurface.h: * Source/WebCore/platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::createBitmapPlatformContext): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::isSmallLayerBacking): (WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier): (WebKit::RemoteRenderingBackend::prepareLayerBuffersForDisplay): * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: (WebKit::RemoteDisplayListRecorderProxy::createImageBuffer const): * Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp: Added. (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::create): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::ImageBufferShareableMappedIOSurfaceBitmapBackend): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::createBackendHandle const): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::context): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setOwnershipIdentity): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::backendSize const): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::bytesPerRow const): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImage): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImageForDrawing): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::sinkIntoNativeImage): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::isInUse const): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::releaseGraphicsContext): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatile): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setNonVolatile): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::volatilityState const): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatilityState): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::transferToNewContext): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::getPixelBuffer): (WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::putPixelBuffer): * Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h: Added. * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h: Canonical link: https://commits.webkit.org/264004@main Identifier: 263769.73@safari-7616.1.14.11-branch Commit: 6bfde3ff757fbbbe2f22308e5a4aec0c03ef9a6e https://github.com/WebKit/WebKit/commit/6bfde3ff757fbbbe2f22308e5a4aec0c03ef9a6e Author: Matthew Finkel <sys...@apple.com> Date: 2023-05-25 (Thu, 25 May 2023) Changed paths: M Source/WebCore/html/CanvasBase.cpp Log Message: ----------- Cherry-pick 1212e9728215. rdar://problem/109318643 Ensure we have an image buffer before considering Canvas noise https://bugs.webkit.org/show_bug.cgi?id=257143 rdar://109318643 Reviewed by Matt Woodrow. If we don't have a ImageBuffer, then we don't have a canvas that needs post-processing. We can shortcircuit this path by checking if the image buffer is present. * Source/WebCore/html/CanvasBase.cpp: (WebCore::CanvasBase::shouldInjectNoiseBeforeReadback const): Canonical link: https://commits.webkit.org/264427@main Identifier: 263769.74@safari-7616.1.14.11-branch Commit: ad49b3d1867c253080c763d8590c8e115ded568a https://github.com/WebKit/WebKit/commit/ad49b3d1867c253080c763d8590c8e115ded568a Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-26 (Fri, 26 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.12 Identifier: 263319.525@safari-7616.1.14.11-branch Commit: 1f44c529755dfe8fe994bbba05e2f32f9dd0e114 https://github.com/WebKit/WebKit/commit/1f44c529755dfe8fe994bbba05e2f32f9dd0e114 Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-30 (Tue, 30 May 2023) Changed paths: M Configurations/Version.xcconfig Log Message: ----------- Versioning. WebKit-7616.1.14.11.13 Identifier: 263319.526@safari-7616.1.14.11-branch Commit: 24069ade6e4f3739b47722bfe1f0209454e91fd7 https://github.com/WebKit/WebKit/commit/24069ade6e4f3739b47722bfe1f0209454e91fd7 Author: Youenn Fablet <youe...@gmail.com> Date: 2023-05-30 (Tue, 30 May 2023) Changed paths: M Source/WebKit/UIProcess/UserMediaProcessManager.cpp M Source/WebKit/UIProcess/WebPageProxy.cpp M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm Log Message: ----------- Cherry-pick 6406adae9bf2. rdar://problem/109896538 getDisplayMedia capture should mute other tabs when starting https://bugs.webkit.org/show_bug.cgi?id=257386 rdar://problem/109896538 Reviewed by Eric Carlson. We were muting other tabs within UserMediaProcessManager::willCreateMediaStream but only for microphone and camera as the screen/window code path was exiting early. Move the call to mute other tabs in WebPageProxy::willStartCapture so that it covers all code paths. Covered by API test. * Source/WebKit/UIProcess/UserMediaProcessManager.cpp: (WebKit::UserMediaProcessManager::willCreateMediaStream): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::willStartCapture): * Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/264611@main Identifier: 263319.527@safari-7616.1.14.11-branch Commit: d4905a4d528d79021fe11b5adbc30f5ddf45499d https://github.com/WebKit/WebKit/commit/d4905a4d528d79021fe11b5adbc30f5ddf45499d Author: Myah Cobbs <mco...@apple.com> Date: 2023-05-30 (Tue, 30 May 2023) Changed paths: M Source/WebKit/UIProcess/UserMediaProcessManager.cpp M Source/WebKit/UIProcess/WebPageProxy.cpp M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm Log Message: ----------- Revert "Cherry-pick 6406adae9bf2. rdar://problem/109896538" This reverts commit 24069ade6e4f3739b47722bfe1f0209454e91fd7. Identifier: 263319.528@safari-7616.1.14.11-branch Compare: https://github.com/WebKit/WebKit/compare/10b1c1a40933%5E...d4905a4d528d _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes