[webkit-changes] [WebKit/WebKit] 4de0f4: [Cocoa] Introduce WKSLinearMediaPlayer
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4de0f4880b7b12b8f995bfbe480b41503219ab67 https://github.com/WebKit/WebKit/commit/4de0f4880b7b12b8f995bfbe480b41503219ab67 Author: Andy Estes Date: 2024-01-30 (Tue, 30 Jan 2024) Changed paths: M Source/WebKit/WebKit.xcodeproj/project.pbxproj A Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift A Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h M Source/WebKit/WebKitSwift/WebKitSwift.h Log Message: --- [Cocoa] Introduce WKSLinearMediaPlayer https://bugs.webkit.org/show_bug.cgi?id=268361 rdar://121907476 Reviewed by Jer Noble. Declared an Objective-C interface for WKSLinearMediaPlayer and a protocol for WKSLinearMediaPlayerDelegate. The interface is implemented in Swift, where it conforms to the Playable protocol. The properties exposed to Objective-C are bound to Publishers via key-value observing, and Playable functions are exposed to Objective-C via the delegate. Since @_objcImplementation classes can only contain stored properties representable in Objective-C, Swift-only types are stored indirectly via SwiftOnlyData. * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: Added. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift: Drive-by fix to support Public SDK builds on visionOS. * Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h: Added. * Source/WebKit/WebKitSwift/WebKitSwift.h: Canonical link: https://commits.webkit.org/273806@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f1fd55: "Function could be declared with attribute 'noretu...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f1fd5543da45033aad082598fca3290af392b7e7 https://github.com/WebKit/WebKit/commit/f1fd5543da45033aad082598fca3290af392b7e7 Author: Andy Estes Date: 2024-01-31 (Wed, 31 Jan 2024) Changed paths: M Source/WebKit/Scripts/generate-serializers.py Log Message: --- "Function could be declared with attribute 'noreturn'" warnings generated in some configurations when building GeneratedSerializers.mm https://bugs.webkit.org/show_bug.cgi?id=268501 rdar://122043321 Reviewed by Elliott Williams. In configurations where -Wmissing-noreturn is enabled, a warning (promoted to error in engineering builds) in GeneratedSerializers.mm is emitted when an instance of ArgumentCoder::encode is generated where each subclass is guarded by a condition that evaluates to false in that particular build configuration. In that case the only code in the function is an ASSERT_NOT_REACHED(), which indeed is a case where [[noreturn]] could be used. Resolved this by ignoring -Wmissing-noreturn when generating ArgumentCoder::encode functions with subclass members. * Source/WebKit/Scripts/generate-serializers.py: (generate_one_impl): Canonical link: https://commits.webkit.org/273874@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7223f0: REGRESSION(ExtensionKit): Video stops playing on m...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7223f04262f101f416e31198f62ca743ea803cdc https://github.com/WebKit/WebKit/commit/7223f04262f101f416e31198f62ca743ea803cdc Author: Andy Estes Date: 2024-02-02 (Fri, 02 Feb 2024) Changed paths: M Source/WebKit/SourcesCocoa.txt M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/PageClient.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/WKContentView.h M Source/WebKit/UIProcess/ios/WKContentView.mm A Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.h A Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.mm M Source/WebKit/UIProcess/mac/WebViewImpl.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj Log Message: --- REGRESSION(ExtensionKit): Video stops playing on mlb.com when entering PiP https://bugs.webkit.org/show_bug.cgi?id=268532 rdar://121120961 Reviewed by Per Arne Vollan. Prior to managing WebKit auxiliary processes as extensions and enabling media capability grants, the iOS media system tracked the visibility of the WebKit host process by observing the foreground status of the app whose PID WebKit provided to AVSystemController via the AVSystemController_PIDToInheritAppStateFrom SPI. When a PiP window is visible on screen then the associated app and its WebContent and GPU processes are considered in the foreground and media playback is allowed by the system. Once WebKit started managing auxiliary processes as extensions we stopped using AVSystemController SPIs and relied instead on BrowserEngineKit visibility propagation interactions to propagate visibility from the host app to the WebContent and GPU extensions. Visibility propagation interactions were installed on the WKContentView, and so long as the content view was in a visible scene then the WebContent and GPU extensions would be considered visible by the media system. However, the PiP window is in a different scene and may be visible at times when the WKContentView's scene isn't. In these cases the WebContent and GPU extensions would not be considered visible, preventing media playback from continuing in the PiP window while the host app is in the backround. Resolved this by encapsulating the logic for creating visibility propagation interactions into a new UIView subclass (WKVisibilityPropagationView) that is added as a subview of WKContentViews and WKLayerHostViews (the latter only when in a fullscreen or PiP presentation mode). This ensures that WebContent and GPU extensions are considered visible whenever either of these views are in a visible scene. WKContentView keeps a weak set of all WKVisibilityPropagationViews and is responsible for creating and removing visibility propagation interactions as auxiliary processes launch and exit. * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (-[WKLayerHostView visibilityPropagationView]): (-[WKLayerHostView setVisibilityPropagationView:]): (WebKit::VideoPresentationManagerProxy::setupFullscreenWithID): (WebKit::VideoPresentationManagerProxy::didCleanupFullscreen): (WebKit::VideoPresentationManagerProxy::setVideoLayerFrame): * Source/WebKit/UIProcess/PageClient.h: (WebKit::PageClient::createVisibilityPropagationView): * Source/WebKit/UIProcess/ios/PageClientImplIOS.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::createVisibilityPropagationView): * Source/WebKit/UIProcess/ios/WKContentView.h: * Source/WebKit/UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): (-[WKContentView _installVisibilityPropagationViews]): (-[WKContentView _setupVisibilityPropagationForWebProcess]): (-[WKContentView _setupVisibilityPropagationForGPUProcess]): (-[WKContentView _removeVisibilityPropagationViewForWebProcess]): (-[WKContentView _removeVisibilityPropagationViewForGPUProcess]): (-[WKContentView _didRelaunchProcess]): (-[WKContentView _webProcessDidCreateContextForVisibilityPropagation]): (-[WKContentView _gpuProcessDidCreateContextForVisibilityPropagation]): (-[WKContentView _createVisibilityPropagationView]): (-[WKContentView _setupVisibilityPropagationViewForWebProcess]): Deleted. (-[WKContentView _setupVisibilityPropagationViewForGPUProcess]): Deleted. * Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.h: Added. * Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.mm: Added. (-[WKVisibilityPropagationView propagateVisibilityToProcess:]): (-[WKVisibilityPropagationView stopPropagatingVisibilityToProcess:]): (-[WKVisibilityPropagationView _containsInteractionForProcess:]): * Source/WebKit/UIProcess/mac/WebViewImpl.mm: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/274037@main _
[webkit-changes] [WebKit/WebKit] af77a7: Fix the visionOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: af77a74a416c46bc085ba8064716bcf4831662e4 https://github.com/WebKit/WebKit/commit/af77a74a416c46bc085ba8064716bcf4831662e4 Author: Andy Estes Date: 2024-02-04 (Sun, 04 Feb 2024) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm Log Message: --- Fix the visionOS build https://bugs.webkit.org/show_bug.cgi?id=268716 rdar://122278109 Unreviewed build fix. * Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm: Canonical link: https://commits.webkit.org/274072@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e8c784: [iOS] Remove User-Agent quirk for facebook.com
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e8c7841cdc9f72a2182040fea3751531995c92ef https://github.com/WebKit/WebKit/commit/e8c7841cdc9f72a2182040fea3751531995c92ef Author: Andy Estes Date: 2024-02-07 (Wed, 07 Feb 2024) Changed paths: M Source/WebCore/page/Quirks.cpp M Source/WebCore/page/Quirks.h M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm Log Message: --- [iOS] Remove User-Agent quirk for facebook.com https://bugs.webkit.org/show_bug.cgi?id=268841 rdar://121813084 Reviewed by Tim Horton. The User-Agent quirk for facebook.com is no longer necessary and can be removed. * Source/WebCore/page/Quirks.cpp: (WebCore::Quirks::shouldAvoidUsingIOS17UserAgentForFacebook const): Deleted. * Source/WebCore/page/Quirks.h: * Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::platformUserAgent const): Canonical link: https://commits.webkit.org/274245@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fb92aa: [iOS] Define a runtime feature flag for LinearMedi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fb92aa9cc02bec122dc9147bfdec0a302e1b4046 https://github.com/WebKit/WebKit/commit/fb92aa9cc02bec122dc9147bfdec0a302e1b4046 Author: Andy Estes Date: 2024-02-12 (Mon, 12 Feb 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WTF/wtf/PlatformEnable.h M Source/WebCore/html/HTMLMediaElement.cpp Log Message: --- [iOS] Define a runtime feature flag for LinearMediaPlayer https://bugs.webkit.org/show_bug.cgi?id=269210 rdar://122814889 Reviewed by Eric Carlson. Defined a LinearMediaPlayerEnabled web preference with a default value of false. When the preference is enabled, deactivated the code path in HTMLMediaElement that requires element fullscreen for video fullscreen. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/PlatformEnable.h: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::enterFullscreen): Canonical link: https://commits.webkit.org/274486@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 58b61c: [Xcode] Teach "Create symlinks to XPC services" bu...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 58b61c2b391439afb6e58cf7fc9e20d5a0e82b3a https://github.com/WebKit/WebKit/commit/58b61c2b391439afb6e58cf7fc9e20d5a0e82b3a Author: Andy Estes Date: 2024-02-12 (Mon, 12 Feb 2024) Changed paths: M Source/WebKit/WebKit.xcodeproj/project.pbxproj Log Message: --- [Xcode] Teach "Create symlinks to XPC services" build phase to also symlink libWebKitSwift.dylib https://bugs.webkit.org/show_bug.cgi?id=269229 rdar://122825232 Reviewed by Elliott Williams. libWebKitSwift.dylib expects to be installed in WebKit.framework/Frameworks, but nothing in the engineering build system places it in that location. While WebKitSwiftSoftLink.mm will find the dylib in $BUILT_PRODUCTS_DIR on macOS, tools for creating roots from engineering built products (e.g., `package-root`) do not know to include the dylib without at least a symlink to it in the expected location. To fix this, extended WebKit's "Create symlinks to XPC services" build phase to create a symlink to libWebKitSwift.dylib in the expected install location. * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/274514@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fecabc: [Cocoa] Implement LinearMediaKit versions of Playb...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fecabc2385988b2c0e4ba5397bf8d6c3f9e5721a https://github.com/WebKit/WebKit/commit/fecabc2385988b2c0e4ba5397bf8d6c3f9e5721a Author: Andy Estes Date: 2024-02-15 (Thu, 15 Feb 2024) Changed paths: M Source/WTF/wtf/PlatformEnable.h M Source/WebCore/DerivedSources-input.xcfilelist M Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj A Source/WebCore/PAL/pal/spi/vision/LinearMediaKitSPI.h M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm M Source/WebCore/platform/graphics/PlatformPlaybackSessionInterface.h M Source/WebCore/platform/graphics/PlatformVideoPresentationInterface.h M Source/WebCore/platform/ios/PlaybackSessionInterfaceAVKit.h M Source/WebCore/platform/ios/PlaybackSessionInterfaceAVKit.mm M Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.h M Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.mm M Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.h M Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.mm M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm M Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.messages.in M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm Log Message: --- [Cocoa] Implement LinearMediaKit versions of PlaybackSessionInterface and VideoPresentationInterface https://bugs.webkit.org/show_bug.cgi?id=269442 rdar://problem/122995773 Reviewed by Jer Noble. Provided implementations of PlaybackSessionInterfaceLMK and VideoPresentationInterfaceLMK backed by LMPlayableViewController and WKSLinearMediaPlayer. * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: * Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.messages.in: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm: Implemented toggleFullscreen by setting the media element's presentation mode. * Source/WebCore/platform/graphics/PlatformPlaybackSessionInterface.h: * Source/WebCore/platform/graphics/PlatformVideoPresentationInterface.h: Defined PlatformPlaybackSessionInterface to PlaybackSessionInterfaceIOS and PlatformVideoPresentationInterface to VideoPresentationInterfaceIOS on platforms with ENABLE(LINEAR_MEDIA_PLAYER). Using abstract base classes allow us to vary the implementation based on the setting of the LinearMediaPlayer runtime preference. * Source/WebCore/platform/ios/PlaybackSessionInterfaceAVKit.h: * Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.h: * Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.mm: Added a virtual linearMediaPlayer() and moved m_playerIdentifier from VideoPresentationInterfaceIOS. * Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.h: * Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.mm: * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h: * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm: Added a virtual isExternalPlaybackActive() and moved m_playerIdentifier to PlaybackSessionInterfaceIOS. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: Implemented in terms of WKSLinearMediaPlayer. * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: Created either VideoPresentationInterfaceLMK or VideoPresentationInterfac
[webkit-changes] [WebKit/WebKit] fcbb7a: [Cocoa] Plumb a video receiver endpoint from Linea...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fcbb7a1f693fb471274776914171257eb48e08de https://github.com/WebKit/WebKit/commit/fcbb7a1f693fb471274776914171257eb48e08de Author: Andy Estes Date: 2024-02-15 (Thu, 15 Feb 2024) Changed paths: M Source/WTF/wtf/Forward.h M Source/WebCore/Headers.cmake M Source/WebCore/SourcesCocoa.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj A Source/WebCore/platform/VideoReceiverEndpoint.h M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h M Source/WebCore/platform/graphics/MediaPlayer.h M Source/WebCore/platform/graphics/MediaPlayerPrivate.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h A Source/WebCore/platform/graphics/cocoa/MediaPlayerCocoa.mm M Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm M Source/WebCore/platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.h M Source/WebCore/platform/mediastream/mac/ScreenCaptureKitSharingSessionManager.mm M Source/WebKit/GPUProcess/EntryPoint/Cocoa/XPCService/GPUServiceEntryPoint.mm M Source/WebKit/GPUProcess/GPUProcess.cpp M Source/WebKit/GPUProcess/GPUProcess.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm A Source/WebKit/Platform/ios/VideoReceiverEndpointMessage.h A Source/WebKit/Platform/ios/VideoReceiverEndpointMessage.mm A Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCEndpointMessages.h A Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCEndpointMessages.mm M Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/SourcesCocoa.txt M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h R Source/WebKit/WebProcess/cocoa/HandleXPCEndpointMessages.h R Source/WebKit/WebProcess/cocoa/HandleXPCEndpointMessages.mm Log Message: --- [Cocoa] Plumb a video receiver endpoint from LinearMediaPlayer to MediaPlayerPrivate https://bugs.webkit.org/show_bug.cgi?id=269490 rdar://123028396 Reviewed by Jer Noble. To support entity-based rendering in LinearMediaPlayer, we must pass a video receiver endpoint from LinearMediaPlayer to MediaPlayerPrivate so that it can be added as a target to AVPlayers and AVSampleBufferVideoRenderers in the GPU process. This PR adds that plumbing (but saves actually attaching the endpoint to AVFoundation objects for a later PR). Note that a video receiver endpoint object contains an xpc_endpoint_t, which is not a type we can serialize in CoreIPC. Like we do for other xpc_endpoint_ts, this PR sends it directly over the XPC connection from the UI process to the GPU process. * Source/WTF/wtf/Forward.h: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::setVideoReceiverEndpoint): * Source/WebCore/platform/graphics/MediaPlayer.h: * Source/WebCore/platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::setVideoReceiverEndpoint): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebCore/platform/ios/VideoReceiverEndpoint.h: Renamed from Source/WebKit/WebProcess/cocoa/HandleXPCEndpointMessages.mm. * Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm: * Source/WebKit/GPUProcess/EntryPoint/Cocoa/XPCService/GPUServiceEntryPoint.mm: (WebKit::initializeAuxiliaryProcess): Deleted. * Source/WebKit/GPUProcess/GPUProcess.cpp: (WebKit::GPUProcess::GPUProcess): (WebKit::GPUProcess::singleton): * Source/WebKit/GPUProcess/GPUProcess.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayer:setVideoReceiverEndpoint:]): * Source/WebKit/Platform/ios/VideoReceiverEndpointMessage.h: Added. (WebKit::VideoReceiverEndpointMessage::messageName): (WebKit::VideoReceiverEndpointMessage::processIdentifier const): (WebKit::VideoReceiverEndpointMessage::playerIdentifier const): (WebKit::VideoReceiverEndpointMessage::endpoint const): * Source/WebKit/Platform/ios/VideoReceiverEndpointMessage.mm: Added. (WebKit::VideoReceiverEndpointMessage::VideoReceiverEndpointMessage): (WebKit::VideoReceiverEndpointMessage::decode): (WebKit::VideoReceiverEndpointMessage::encode const): * Source/WebKit/Shared/EntryPointUtilities/Cocoa/X
[webkit-changes] [WebKit/WebKit] 4c41ca: [visionOS] Attach a FigVideoTarget to AVPlayers wh...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4c41ca668ae286837aa75be14f091232419d9858 https://github.com/WebKit/WebKit/commit/4c41ca668ae286837aa75be14f091232419d9858 Author: Andy Estes Date: 2024-02-16 (Fri, 16 Feb 2024) Changed paths: M Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.cpp M Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.h M Source/WebCore/PAL/pal/spi/cocoa/MediaToolboxSPI.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift Log Message: --- [visionOS] Attach a FigVideoTarget to AVPlayers when a receiver endpoint is available https://bugs.webkit.org/show_bug.cgi?id=269561 rdar://123073265 Reviewed by Jer Noble. When MediaPlayer has a VideoReceiverEndpoint, use it to create a FigVideoTarget and add it to MediaPlayerPrivateAVFoundationObjC's AVPlayer. In order for LinearMediaPlayer to emit a VideoReceiverEndpoint, also created an Entity with a caption layer rather than an AVPlayer. * Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.cpp: * Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.h: * Source/WebCore/PAL/pal/spi/cocoa/MediaToolboxSPI.h: Declared and soft-linked FigVideoTargetCreateWithVideoReceiverEndpointID. * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: When non-null, used the VideoReceiverEndpoint to create a FigVideoTargetRef, added it to AVPlayer, and removed the player from the AVPlayerLayer. When null, removed the video target from the player and re-attached the player to the AVPlayerLayer. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: Cleared the VideoReceiverEndpoint when exiting fullscreen. Drive-by fix: set m_playerDelegate as m_player's delegate. * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: Set m_player's captionLayer prior to creating a view controller. * Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: Allowed lookup of mach port com.apple.coremedia.videotarget.xpc. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: Stopped publishing captionLayer and used it to create an Entity instead. Canonical link: https://commits.webkit.org/274909@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d7df52: [MediaSource] Use an AVSampleBufferVideoRenderer w...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d7df52b60ed83af41b0534cca154a3ac5a0533de https://github.com/WebKit/WebKit/commit/d7df52b60ed83af41b0534cca154a3ac5a0533de Author: Andy Estes Date: 2024-02-17 (Sat, 17 Feb 2024) Changed paths: M Source/WTF/wtf/PlatformHave.h M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm M Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/platform/graphics/avfoundation/WebAVSampleBufferListener.h M Source/WebCore/platform/graphics/avfoundation/WebAVSampleBufferListener.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm A Source/WebCore/platform/graphics/cocoa/WebSampleBufferVideoRendering.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm Log Message: --- [MediaSource] Use an AVSampleBufferVideoRenderer when a video receiver endpoint is available https://bugs.webkit.org/show_bug.cgi?id=269621 rdar://123119816 Reviewed by Jean-Yves Avenard. When MediaPlayer has a VideoReceiverEndpoint, use it to create a FigVideoTarget and add it to MediaPlayerPrivateMediaSourceAVFObjC's AVSampleBufferVideoRenderer. Since AVSampleBufferDisplayLayer's video renderer does not support adding video targets, this patch teaches MediaPlayerPrivateMediaSourceAVFObjC to create an AVSampleBufferVideoRenderer when a VideoReceiverEndpoint is available. This required abstracting the common interface between AVSampleBufferDisplayLayer and AVSampleBufferVideoRenderer into @protocol WebSampleBufferVideoRendering and passing that type to clients of MediaPlayerPrivateMediaSourceAVFObjC. Note that MediaPlayerPrivateWebM has not been taught to create a AVSampleBufferVideoRenderer; that will occur in a follow-up fix. * Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h: * Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm: * Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h: Declared and soft-linked AVSampleBufferVideoRenderer notification names. * Source/WebCore/platform/graphics/avfoundation/WebAVSampleBufferListener.h: * Source/WebCore/platform/graphics/avfoundation/WebAVSampleBufferListener.mm: * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: * Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm: * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h: * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: * Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h: * Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm: Changed to work in terms of WebSampleBufferVideoRendering. * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: Taught to ensure and destroy a AVSampleBufferVideoRenderer and changed to work in terms of WebSampleBufferVideoRendering. * Source/WebCore/platform/graphics/cocoa/WebSampleBufferVideoRendering.h: Added. Defines a protocol that encapsulates the common interface subset of AVSampleBufferDisplayLayer and AVSampleBufferVideoRenderer. Canonical link: https://commits.webkit.org/274931@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4abab8: [visionOS] Enable Linear Media Player at build tim...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4abab8a63ae6ed247f3c65f75a88ac47528a9ce7 https://github.com/WebKit/WebKit/commit/4abab8a63ae6ed247f3c65f75a88ac47528a9ce7 Author: Andy Estes Date: 2024-02-20 (Tue, 20 Feb 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WTF/wtf/PlatformEnable.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaTypes.h Log Message: --- [visionOS] Enable Linear Media Player at build time and runtime https://bugs.webkit.org/show_bug.cgi?id=269767 rdar://123284989 Reviewed by Wenson Hsieh. Set ENABLE_LINEAR_MEDIA_PLAYER to 1 and enabled the LinearMediaPlayerEnabled runtime setting by default. While here, fixed an issue where the wrong mach port was specified in the GPU process seatbelt profile for using FigVideoTarget rendering and adjusted the imports of WebKitSwift headers to avoid creating a circular dependency in the Xcode build system. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/PlatformEnable.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: * Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h: * Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaTypes.h: Canonical link: https://commits.webkit.org/275053@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ad3406: REGRESSION (LinearMediaPlayer): Start and end time...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ad340677c00a4b4b6a299c93a6e18cd073b3f4e9 https://github.com/WebKit/WebKit/commit/ad340677c00a4b4b6a299c93a6e18cd073b3f4e9 Author: Andy Estes Date: 2024-02-21 (Wed, 21 Feb 2024) Changed paths: M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm Log Message: --- REGRESSION (LinearMediaPlayer): Start and end times are not displayed in the scrubber https://bugs.webkit.org/show_bug.cgi?id=269817 rdar://123339430 Reviewed by Jer Noble. WebKit needs to provide `remainingTime` to LinearMediaPlayer in order for start and end times to be computed in the scrubber. Computed remainingTime as duration - currentTime. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (WebKit::PlaybackSessionInterfaceLMK::durationChanged): (WebKit::PlaybackSessionInterfaceLMK::currentTimeChanged): Canonical link: https://commits.webkit.org/275119@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 6b339d: REGRESSION (275053@main): Crash in PlaybackSession...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6b339dfcfdc1c7c57144bd1291ecdd58077364d6 https://github.com/WebKit/WebKit/commit/6b339dfcfdc1c7c57144bd1291ecdd58077364d6 Author: Andy Estes Date: 2024-02-21 (Wed, 21 Feb 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml Log Message: --- REGRESSION (275053@main): Crash in PlaybackSessionInterfaceLMK::seekableRangesChanged when entering fullscreen https://bugs.webkit.org/show_bug.cgi?id=269868 rdar://123397849 Reviewed by Tim Horton. Due to issues in Apple's Production build, libWebKitSwift.dylib may be missing at runtime when entering fullscreen on visionOS. Until those issues are resolved, disable the LinearMediaPlayer feature at runtime. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Canonical link: https://commits.webkit.org/275133@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d97f5a: getUserMedia camera stream lost on history pushSta...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d97f5a09e4f10a05d93ad47f08ac293180c75f77 https://github.com/WebKit/WebKit/commit/d97f5a09e4f10a05d93ad47f08ac293180c75f77 Author: Andy Estes Date: 2024-02-23 (Fri, 23 Feb 2024) Changed paths: M Source/WebKit/Platform/cocoa/MediaCapability.h M Source/WebKit/Platform/cocoa/MediaCapability.mm M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/WebKit.xcodeproj/project.pbxproj Log Message: --- getUserMedia camera stream lost on history pushState in iOS 17.4 Beta 4 https://bugs.webkit.org/show_bug.cgi?id=269846 rdar://123381737 Reviewed by Eric Carlson and Youenn Fablet. When WebKit adopted media capability grants for camera capture we chose to tie the lifetime of the media environment to the top frame document's current URL, such that if the URL changes (ignoring fragment identifiers) then the current media environment is destroyed and a new one is created. If a capture session is active when the media environment changes then the system will pause the capture session as it's no longer associated with the current media environment. The logic of comparing URLs was meant as a proxy for detecting cross-document navigations but failed to account for same-document navigations that changed the path of the current URL (e.g., via pushState). Since the origin associated with the media environment does not change during a same-document navigation there is no need to recreate the media environment. Addressed this by moving the logic for creating and destroying media environments to WebPageProxy::didChangeMainDocument. Further, since only the top document's origin is displayed to the user in iOS's privacy accounting UI, changed MediaCapability to only track a SecurityOrigin. The logic for when to activate and deactivate a media environment's capability remains unchanged. Manually verified that this resolves the issue reported in bug #269846. Unfortunately no new tests are possible since the underlying platform support for media capabilities is not available in iOS Simulator. * Source/WebKit/Platform/cocoa/MediaCapability.h: * Source/WebKit/Platform/cocoa/MediaCapability.mm: (WebKit::MediaCapability::MediaCapability): (WebKit::m_mediaEnvironment): (WebKit::MediaCapability::registrableDomain const): Deleted. * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::setMediaCapability): (WebKit::WebPageProxy::deactivateMediaCapability): (WebKit::WebPageProxy::resetMediaCapability): (WebKit::WebPageProxy::updateMediaCapability): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCommitLoadForFrame): (WebKit::WebPageProxy::didChangeMainDocument): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/275244@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8e5cdd: Try to fix the visionOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8e5cdd60e829600d8d6f15121f73d0cafa897974 https://github.com/WebKit/WebKit/commit/8e5cdd60e829600d8d6f15121f73d0cafa897974 Author: Andy Estes Date: 2024-02-23 (Fri, 23 Feb 2024) Changed paths: M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift Log Message: --- Try to fix the visionOS build https://bugs.webkit.org/show_bug.cgi?id=269998 rdar://123520955 Unreviewed build fix for visionOS SDKs that do not have required LinearMediaKit APIs. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: (WKSLinearMediaPlayer.makeViewController): (WKSLinearMediaPlayer.makeDefaultEntity): * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift: Canonical link: https://commits.webkit.org/275254@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d26e92: [iOS] Element fullscreen window should not support...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d26e92fa4929bcb060871bda4d299dd0ea151a51 https://github.com/WebKit/WebKit/commit/d26e92fa4929bcb060871bda4d299dd0ea151a51 Author: Andy Estes Date: 2024-02-24 (Sat, 24 Feb 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- [iOS] Element fullscreen window should not support pinch-to-dismiss https://bugs.webkit.org/show_bug.cgi?id=270001 rdar://122838328 Reviewed by Jer Noble. For parity with AVPlayerViewController on iOS, remove support for dismissing the element fullscreen window via pinch gesture. Pan dismissal remains supported. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController interactionControllerForDismissal:]): (-[WKFullScreenWindowController _interactiveDismissChanged:]): (-[WKFullScreenWindowController _interactivePinchDismissChanged:]): Deleted. Canonical link: https://commits.webkit.org/275288@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c515c4: REGRESSION(274626main): Unable to exit fullscreen ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c515c4be3ed61124f16cd57e1dfedd9c7709ef26 https://github.com/WebKit/WebKit/commit/c515c4be3ed61124f16cd57e1dfedd9c7709ef26 Author: Andy Estes Date: 2024-02-25 (Sun, 25 Feb 2024) Changed paths: M Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.mm Log Message: --- REGRESSION(274626main): Unable to exit fullscreen on tvOS https://bugs.webkit.org/show_bug.cgi?id=270020 rdar://123534305 Reviewed by Jer Noble. When refactoring VideoPresentationInterfaceAVKit in 274626main we inadvertently removed WebAVPlayerViewControllerDelegate's conformance to -playerViewControllerShouldDismiss:, which broke the ability to exit fullscreen on tvOS. Restored the delegate method. * Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.mm: (-[WebAVPlayerViewControllerDelegate playerViewControllerShouldDismiss:]): Canonical link: https://commits.webkit.org/275295@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 144fac: REGRESSION (275244@main): Crash in MediaCapability...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 144facca643556ff386784f2ff15735984bb049b https://github.com/WebKit/WebKit/commit/144facca643556ff386784f2ff15735984bb049b Author: Andy Estes Date: 2024-02-29 (Thu, 29 Feb 2024) Changed paths: M Source/WebKit/Platform/cocoa/MediaCapability.h M Source/WebKit/Platform/cocoa/MediaCapability.mm M Source/WebKit/SourcesCocoa.txt M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj Log Message: --- REGRESSION (275244@main): Crash in MediaCapability::MediaCapability when loading 'about:blank' https://bugs.webkit.org/show_bug.cgi?id=270318 rdar://123856265 Reviewed by Jer Noble. In 275244@main MediaCapability was changed to track a SecurityOrigin rather than a URL. Since 'about:blank' is considered an opaque origin, a nil NSURL is returned by SecurityOrigin::toURL() (after implicit conversion). A crash occurs when MediaCapability attempts to instantiate a BEMediaEnvironment with the nil URL since -initWithWebPageURL: requires a nonnull NSURL. Fixed this by reverting MediaCapability to storing the webpage URL as a WebCore::URL, and instead using URL::protocolHostAndPort() and protocolHostAndPortAreEqual() to ensure that the MediaEnvironment is not reset during same-origin navigations. * Source/WebKit/Platform/cocoa/MediaCapability.h: * Source/WebKit/Platform/cocoa/MediaCapability.mm: (WebKit::createMediaEnvironment): (WebKit::MediaCapability::MediaCapability): * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::setMediaCapability): (WebKit::WebPageProxy::deactivateMediaCapability): (WebKit::WebPageProxy::resetMediaCapability): * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/275533@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7a74dc: [Cocoa] Legacy EME tests time out with SampleBuffe...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7a74dcab081bf155995c7eb7fb745d444dbb4eae https://github.com/WebKit/WebKit/commit/7a74dcab081bf155995c7eb7fb745d444dbb4eae Author: Andy Estes Date: 2024-03-08 (Fri, 08 Mar 2024) Changed paths: M Source/WebCore/SourcesCocoa.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp M Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h A Source/WebCore/platform/graphics/avfoundation/objc/CDMFairPlayStreamingAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm Log Message: --- [Cocoa] Legacy EME tests time out with SampleBufferContentKeySessionSupportEnabled enabled https://bugs.webkit.org/show_bug.cgi?id=270678 rdar://problem/123089013 Reviewed by Jer Noble. The following legacy EME + MSE tests time out when enabling SampleBufferContentKeySessionSupportEnabled: - http/tests/media/fairplay/legacy-fairplay-mse-v2.html - http/tests/media/fairplay/legacy-fairplay-mse-v3.html This occurred because SourceBufferPrivateAVFObjC::canEnqueueSample would only consult m_cdmInstance (the modern CDM) to determine if a usable key existed to decrypt a sample. When legacy EME is in use there would not be a modern CDM instance, so all samples would be considered un-enqueueable and ultimately the canplay event would never be dispatched. Addressed this by teaching SourceBufferPrivateAVFObjC to check m_session (the legacy CDM) for usable keys if m_cdmInstance is null. Also, taught CDMSessionAVContentKeySession to attach content keys to samples rather than relying on AVStreamDataParser to do so; this matches how CDMInstanceSessionFairPlayStreamingAVFObjC attaches handles content key attachment. To fully resolve these timeouts, one additional change was necessary. In 274351@main we taught the FairPlay CDM how to decrypt MPEG2-TS streams, but we used a keyID that is incompatible with the AVContentKeyRequests vended by AVContentKeySession. Since AVContentKeySession vends MPEG2-TS key requests with an identifier of "TransportStreamIdentifier" and our CDM prefers to use the request identifier over request initialization data to represent the keyID, this commit changes CDMPrivateFairPlayStreaming::mptsKeyIDs() to return "TransportStreamIdentifier" instead of the preivious 16-byte value No new tests; covered by existing tests. * Source/WebCore/SourcesCocoa.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: (WebCore::CDMPrivateFairPlayStreaming::mptsKeyIDs): * Source/WebCore/platform/graphics/avfoundation/CDMFairPlayStreaming.h: * Source/WebCore/platform/graphics/avfoundation/objc/CDMFairPlayStreamingAVFObjC.mm: Added. (WebCore::CDMPrivateFairPlayStreaming::keyIDsForRequest): * Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::keyIDsForRequest): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateKeyStatuses): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::contentKeyForSample): * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h: * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: (WebCore::CDMSessionAVContentKeySession::isAnyKeyUsable const): (WebCore::CDMSessionAVContentKeySession::attachContentKeyToSample): (WebCore::CDMSessionAVContentKeySession::contentKeyRequest const): (WebCore::CDMSessionAVContentKeySession::contentKeyRequest): Deleted. * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::SourceBufferPrivateAVFObjC::canEnqueueSample): (WebCore::SourceBufferPrivateAVFObjC::attachContentKeyToSampleIfNeeded): Canonical link: https://commits.webkit.org/275839@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ad43bc: [visionOS] LinearMediaPlayer does not present audi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ad43bc6864cfe68b83ec4f3e67444f64e6ffe1ff https://github.com/WebKit/WebKit/commit/ad43bc6864cfe68b83ec4f3e67444f64e6ffe1ff Author: Andy Estes Date: 2024-03-09 (Sat, 09 Mar 2024) Changed paths: M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm Log Message: --- [visionOS] LinearMediaPlayer does not present audio and text track options https://bugs.webkit.org/show_bug.cgi?id=270727 rdar://124308729 Reviewed by Eric Carlson. When introducing PlaybackSessionInterfaceLMK we neglected to provide implementations for {audio, legible}MediaSelectionOptionsChanged, resulting in LinearMediaPlayer not presenting these options in its UI. Implemented these functions as well as the delegate callbacks to learn when the user changes tracks. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayer:setAudioTrack:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayer:setLegibleTrack:]): (WebKit::PlaybackSessionInterfaceLMK::audioMediaSelectionOptionsChanged): (WebKit::PlaybackSessionInterfaceLMK::legibleMediaSelectionOptionsChanged): (WebKit::PlaybackSessionInterfaceLMK::audioMediaSelectionIndexChanged): (WebKit::PlaybackSessionInterfaceLMK::legibleMediaSelectionIndexChanged): * Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h: * Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm: Canonical link: https://commits.webkit.org/275885@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 81afed: REGRESSION (274873@main): Audio is not anchored to...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 81afed49cdfeb190a1004c3665002e81d129b6da https://github.com/WebKit/WebKit/commit/81afed49cdfeb190a1004c3665002e81d129b6da Author: Andy Estes Date: 2024-03-13 (Wed, 13 Mar 2024) Changed paths: M Source/WTF/wtf/text/WTFString.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm Log Message: --- REGRESSION (274873@main): Audio is not anchored to WKWebView's spatial location https://bugs.webkit.org/show_bug.cgi?id=270919 rdar://123800596 Reviewed by Jer Noble. In 274873@main we added the infrastructure for passing a spatial tracking label from the UI process to the GPU process. Because a null WTF::String is implicitly converted to @"", this change had the unintended side effect of setting AVSampleBufferVidoRenderer and AVPlayer's spatial tracking label to the empty string rather than the default value of nil, breaking spatial tracking for the audio emitted from WKWebView. Resolved this by introducing nsStringNilIfNull -- returning nil if the WTF::String is null otherwise converting it as-is to NSString -- and using it to set spatial tracking labels in MediaPlayerPrivate. * Source/WTF/wtf/text/WTFString.h: (WTF::nsStringNilIfNull): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): (WebCore::MediaPlayerPrivateAVFoundationObjC::setSpatialTrackingLabel): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateSpatialTrackingLabel): Canonical link: https://commits.webkit.org/276074@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 1294f7: [visionOS] Video briefly resizes to full-window wh...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1294f70d6126f5642f5293fe3298e83f1551cd89 https://github.com/WebKit/WebKit/commit/1294f70d6126f5642f5293fe3298e83f1551cd89 Author: Andy Estes Date: 2024-03-15 (Fri, 15 Mar 2024) Changed paths: M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm Log Message: --- [visionOS] Video briefly resizes to full-window when entering LinearMediaPlayer fullscreen https://bugs.webkit.org/show_bug.cgi?id=271032 rdar://123315074 Reviewed by Jer Noble. Prior to this change, VideoPresentationInterfaceIOS would create a new UIWindow in which the player view controller would be presented. However, LinearMediaKit would immediately hide this window and present the fullscreen video in a new UIScene. When entering LinearMediaPlayer fullscreen, this resulted in the UIWindow briefly appearing then being hidden prior to the LinearMediaKit scene being presented. To avoid this, skip creating the UIWindow for LinearMediaPlayer fullscreen. Instead, embed the LMPlayableViewController in WKWebView's presenting view controller with its root view sized to match the inline video element. Then, allow LinearMediaKit to hide the WKWebView's UIWindowScene and present its own scene. This results in a less flashy, more direct transition from inline to fullscreen. * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h: (WebCore::VideoPresentationInterfaceIOS::hasMode const): (WebCore::VideoPresentationInterfaceIOS::fullscreenViewController const): * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm: (WebCore::VideoPresentationInterfaceIOS::presentingViewController): (WebCore::VideoPresentationInterfaceIOS::doSetup): (WebCore::VideoPresentationInterfaceIOS::cleanupFullscreen): Canonical link: https://commits.webkit.org/276177@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2464f1: [visionOS] Video fails to render after returning f...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2464f16d3d6d11f34c0991d00dbf205af7ac0031 https://github.com/WebKit/WebKit/commit/2464f16d3d6d11f34c0991d00dbf205af7ac0031 Author: Andy Estes Date: 2024-03-15 (Fri, 15 Mar 2024) Changed paths: M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm Log Message: --- [visionOS] Video fails to render after returning from LinearMediaPlayer fullscreen https://bugs.webkit.org/show_bug.cgi?id=271024 rdar://12859 Reviewed by Eric Carlson. When returning from LinearMediaPlayer fullscreen we failed to clear the video receiver endpoint from MediaPlayer, leaving it in a state where it was rendering to an endpoint that no longer existed. We attempted to clear the endpoint in PlaybackSessionInterfaceLMK's implementation of -linearMediaPlayer:didExitFullscreenWithError:, but it turns out this delegate method isn't called when using `allowFullScreenFromInline`. Instead, clear the entpoint in -linearMediaPlayerToggleInlineMode:. With this bug fixed, there is a second issue where the inline controls do not appear. This ended up being a side effect of setting VideoPresentationInterface's captionsLayer on the LinearMediaPlayer. Since there is still outstanding work for supporting captions (see rdar://124223292), for now just pass an empty layer to LinearMediaPlayer. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayerToggleInlineMode:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayer:didExitFullscreenWithError:]): Deleted. * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::setupPlayerViewController): Canonical link: https://commits.webkit.org/276179@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 6f450c: REGRESSION (276177@main): Fullscreen API tests cra...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6f450cea7dc661b1cc94e487fd99e5703b7c83c5 https://github.com/WebKit/WebKit/commit/6f450cea7dc661b1cc94e487fd99e5703b7c83c5 Author: Andy Estes Date: 2024-03-19 (Tue, 19 Mar 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm M Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm M Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm M Source/WebKit/UIProcess/PageClient.h M Source/WebKit/UIProcess/XR/ios/PlatformXRARKit.mm M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/WKUSDPreviewView.mm M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- REGRESSION (276177@main): Fullscreen API tests crash with a UIViewControllerHierarchyInconsistency exception https://bugs.webkit.org/show_bug.cgi?id=271193 rdar://124974019 Reviewed by Eric Carlson. 276177@main changed how VideoPresentationInterface embeds its player view in the parent view to ensure that -addChildViewController: and -didMoveToParentViewController: are called on the parent view's view controller. This exposed a bug in VideoPresentationInterfaceIOS::presentingViewController() where the API client's presenting view controller would be returned even if the WKWebView was moved to a WKFullScreenViewController, resulting in a UIViewControllerHierarchyInconsistency exception being thrown. Resolved this by ensuring VideoPresentationInterfaceIOS::presentingViewController() returns the WKFullScreenViewController when in element fullscreen. This is done by introducing PageClient::presentingViewController() which returns the WKFullScreenViewController if in element fullscreen, otherwise returning UIClient::presentingViewController(). Added FIXME comments to other call sites of UIClient::presentingViewController() mentioning that this call may be incorrect when in element fullscreen. * Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm: (WebKit::ModelElementController::takeModelElementFullscreen): * Source/WebKit/UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: (WebKit::SOAuthorizationSession::presentViewController): * Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationModelContext::presentingViewController): * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::startApplePayAMSUISession): * Source/WebKit/UIProcess/PageClient.h: * Source/WebKit/UIProcess/XR/ios/PlatformXRARKit.mm: (WebKit::ARKitCoordinator::startSession): * Source/WebKit/UIProcess/ios/PageClientImplIOS.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::presentingViewController const): * Source/WebKit/UIProcess/ios/WKUSDPreviewView.mm: (-[WKUSDPreviewView thumbnailView:wantsToPresentPreviewController:forItem:]): * Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::showValidationMessage): (WebKit::WebPageProxy::Internals::paymentCoordinatorPresentingViewController): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController fullScreenViewController]): Canonical link: https://commits.webkit.org/276356@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e021db: REGRESSION (276177@main): LinearMediaPlayer contro...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e021db348aed9d2cc916ea427bb6b3113558de12 https://github.com/WebKit/WebKit/commit/e021db348aed9d2cc916ea427bb6b3113558de12 Author: Andy Estes Date: 2024-03-19 (Tue, 19 Mar 2024) Changed paths: M Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm Log Message: --- REGRESSION (276177@main): LinearMediaPlayer controls briefly appear when entering element fullscreen https://bugs.webkit.org/show_bug.cgi?id=271251 rdar://125019855 Reviewed by Jer Noble. On platforms that support fullscreen standby, VideoPresentationInterface::setupFullscreen() is called (with `standby` set to true) when element fullscreen is activated for an element containing a descendant. This prewarms the presentation interface so that's it's ready to enter picture-in-picture if requested. After 276177@main, this prewarming inserts a LMKPlayableViewController in the WKWebView's hierarchy. Even though the VC's root view's `hidden` property is set to YES, due to a bug in LinearMediaKit parts of the media controls remain visible for a brief period. To work around this bug, since visionOS does not support automatic picture-in-picture we can just disable support for fullscreen standby. This avoids calls to VideoPresentationInterface::setupFullscreen() when entering element fullscreen. * Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm: (WebKit::VideoPresentationManager::supportsVideoFullscreenStandby const): Canonical link: https://commits.webkit.org/276364@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c330ea: [visionOS] Enable Linear Media Player by default
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c330ea99229f6bb478dde74497ee652e44a3d7d5 https://github.com/WebKit/WebKit/commit/c330ea99229f6bb478dde74497ee652e44a3d7d5 Author: Andy Estes Date: 2024-03-19 (Tue, 19 Mar 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml Log Message: --- [visionOS] Enable Linear Media Player by default https://bugs.webkit.org/show_bug.cgi?id=271172 rdar://123402134 Reviewed by Jer Noble. Changed LinearMediaPlayerEnabled's category to internal and set its default value to true in WebKit. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Canonical link: https://commits.webkit.org/276373@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b52c0d: Try to fix the iOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b52c0d8d38f219e0535827e86d3a31e253e11d64 https://github.com/WebKit/WebKit/commit/b52c0d8d38f219e0535827e86d3a31e253e11d64 Author: Andy Estes Date: 2024-03-21 (Thu, 21 Mar 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.h M Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.mm Log Message: --- Try to fix the iOS build https://bugs.webkit.org/show_bug.cgi?id=271426 rdar://125199641 Unreviewed build fix; imported UniqueRef.h in ExtensionCapabilityGranter.h so that the declaration of WTF::makeUniqueRefWithoutFastMallocCheck is visible. * Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.h: * Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.mm: Canonical link: https://commits.webkit.org/276506@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 19d9df: Add a button to element fullscreen on visionOS tha...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 19d9df6cb3583f7b1f266afaa7db3db5d9007a3d https://github.com/WebKit/WebKit/commit/19d9df6cb3583f7b1f266afaa7db3db5d9007a3d Author: Andy Estes Date: 2024-03-21 (Thu, 21 Mar 2024) Changed paths: M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm M Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.messages.in M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm Log Message: --- Add a button to element fullscreen on visionOS that enters video fullscreen https://bugs.webkit.org/show_bug.cgi?id=271198 rdar://124975583 Reviewed by Jer Noble. Patch by Dana Estra . Added a button to WKFullScreenViewController that transitions from element fullscreen to video fullscreen when the LinearMediaPlayer feature is enabled. * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::enterFullscreen): * Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionModelContext::enterFullscreen): (WebKit::PlaybackSessionManagerProxy::enterFullscreen): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController loadView]): (-[WKFullScreenViewController _enterVideoFullscreenAction:]): * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.messages.in: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm: (WebKit::PlaybackSessionManager::enterFullscreen): Canonical link: https://commits.webkit.org/276512@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bbfd3d: [visionOS] Captions do not render in Linear Media ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bbfd3d9efcbb9c24abb655b8759ee700ef5d5f34 https://github.com/WebKit/WebKit/commit/bbfd3d9efcbb9c24abb655b8759ee700ef5d5f34 Author: Andy Estes Date: 2024-03-27 (Wed, 27 Mar 2024) Changed paths: M Source/WebCore/platform/cocoa/VideoFullscreenCaptions.h M Source/WebCore/platform/cocoa/VideoFullscreenCaptions.mm M Source/WebCore/platform/graphics/cocoa/NullVideoPresentationInterface.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebCore/platform/mac/VideoPresentationInterfaceMac.h M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm Log Message: --- [visionOS] Captions do not render in Linear Media Player https://bugs.webkit.org/show_bug.cgi?id=271797 rdar://124223292 Reviewed by Jer Noble. Re-enabled captions by setting VideoPresentationInterfaceLMK::captionsLayer() as WKSLinearMediaPlayer's captionLayer. Fixed the bug that caused us to previously disable captions by ensuring the captions layer is unparented and does not have an explicit zPosition. LinearMediaKit expects to insert the caption layer into its hierarchy and manage its z-order. * Source/WebCore/platform/cocoa/VideoFullscreenCaptions.h: * Source/WebCore/platform/cocoa/VideoFullscreenCaptions.mm: (WebCore::VideoFullscreenCaptions::setupCaptionsLayer): * Source/WebCore/platform/graphics/cocoa/NullVideoPresentationInterface.h: * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h: * Source/WebCore/platform/mac/VideoPresentationInterfaceMac.h: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::setupPlayerViewController): (WebKit::VideoPresentationInterfaceLMK::setupCaptionsLayer): Canonical link: https://commits.webkit.org/276771@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c89127: [visionOS] Unable to set playback speed back to 1x...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c891276841b8a3fdf2198720f71010d4382a8848 https://github.com/WebKit/WebKit/commit/c891276841b8a3fdf2198720f71010d4382a8848 Author: Andy Estes Date: 2024-03-28 (Thu, 28 Mar 2024) Changed paths: M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm Log Message: --- [visionOS] Unable to set playback speed back to 1x after changing it to a different speed https://bugs.webkit.org/show_bug.cgi?id=271813 rdar://125522760 Reviewed by Eric Carlson. In LinearMediaPlayer we set selectedPlaybackRate to 1 and never updated it when the playback rate changed. As a result, if you set the playback rate to, e.g., 1.25x then attempt to change it back to 1x, LinearMediaKit would never call playbackRateChanged() on our Playable object because it belives 1x is already the selected rate. Resolved this by updating selectedPlaybackRate when the playback rate changes. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (WebKit::PlaybackSessionInterfaceLMK::rateChanged): Canonical link: https://commits.webkit.org/276795@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ea7c4f: [visionOS] When entering video fullscreen from ele...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ea7c4f2a062104518cc5f1eb6dddcd489392d1d7 https://github.com/WebKit/WebKit/commit/ea7c4f2a062104518cc5f1eb6dddcd489392d1d7 Author: Andy Estes Date: 2024-04-01 (Mon, 01 Apr 2024) Changed paths: M Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj R Source/WebCore/PAL/pal/spi/vision/LinearMediaKitSPI.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.h M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj A Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.h A Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.swift A Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitSPI.h M Source/WebKit/WebKitSwift/WebKitSwift.h Log Message: --- [visionOS] When entering video fullscreen from element fullscreen, go directly to docked mode https://bugs.webkit.org/show_bug.cgi?id=271922 rdar://123529719 Reviewed by Jer Noble. Updated WKFullScreenViewController to insert LMPlayableViewController's environmentPickerButtonView into the fullscreen controls stack view, replacing the placeholder button we had before, and to set properties on the LMPlayableViewController saying that it should dock when entering fullscreen and exit video fullscreen when undocking (thus returning to element fullscreen directly). * Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj: * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h: (WebCore::VideoPresentationInterfaceIOS::playableViewController): * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayerToggleInlineMode:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayerWillEnterFullscreen:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayerWillExitFullscreen:]): (-[WKLinearMediaPlayerDelegate _exitFullscreen]): * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::setupPlayerViewController): (WebKit::VideoPresentationInterfaceLMK::playableViewController): (WebKit::VideoPresentationInterfaceLMK::ensurePlayableViewController): * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.h: * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationManagerProxy::playableViewController const): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController videoControlsManagerDidChange]): (-[WKFullScreenViewController _configureEnvironmentPickerButtonViewWithPlayableViewController:]): (-[WKFullScreenViewController loadView]): (-[WKFullScreenViewController _enterVideoFullscreenAction:]): Deleted. * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.h: Copied from Source/WebCore/PAL/pal/spi/vision/LinearMediaKitSPI.h. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.swift: Added. (PlayableViewController.wks_automaticallyDockOnFullScreenPresentation): (PlayableViewController.wks_dismissFullScreenOnExitingDocking): (PlayableViewController.wks_environmentPickerButtonViewController): * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitSPI.h: Renamed from Source/WebCore/PAL/pal/spi/vision/LinearMediaKitSPI.h. * Source/WebKit/WebKitSwift/WebKitSwift.h: Canonical link: https://commits.webkit.org/276898@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 122f2b: Try to fix the visionOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 122f2bd05db439925e762f681d12f4128f39e836 https://github.com/WebKit/WebKit/commit/122f2bd05db439925e762f681d12f4128f39e836 Author: Andy Estes Date: 2024-04-01 (Mon, 01 Apr 2024) Changed paths: M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.swift Log Message: --- Try to fix the visionOS build https://bugs.webkit.org/show_bug.cgi?id=272007 rdar://125747739 Unreviewed build fix after 276898@main. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaKitExtras.swift: (PlayableViewController.wks_automaticallyDockOnFullScreenPresentation): (PlayableViewController.wks_dismissFullScreenOnExitingDocking): (PlayableViewController.wks_environmentPickerButtonViewController): Canonical link: https://commits.webkit.org/276915@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] dc3e74: [visionOS] WebContent process crashes when enterin...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: dc3e748f38f819c210474d6b29e560d5a462 https://github.com/WebKit/WebKit/commit/dc3e748f38f819c210474d6b29e560d5a462 Author: Andy Estes Date: 2024-04-02 (Tue, 02 Apr 2024) Changed paths: M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm Log Message: --- [visionOS] WebContent process crashes when entering docked fullscreen on netflix.com https://bugs.webkit.org/show_bug.cgi?id=272057 rdar://125742417 Reviewed by Jer Noble. When entering docked fullscreen on netflix.com, com.apple.WebKit.GPU crashes with the following uncaught exception: ``` *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[AVContentKeySession addContentKeyRecipient:] cannot add this object as an AVContentKeyRecipient' ``` The proximate cause is that SourceBufferPrivateAVFObjC is passing nil to -addContentKeyRecipient:, but since SampleBufferContentKeySessionSupportEnabled is enabled on visionOS this method should not even be called; AVSampleBufferAttachContentKey should be called instead. This occurs because of a mistake where we only considered extension processes to be eligible for AVSampleBufferAttachContentKey. Fixed this by replacing the extension process check with an entitlement check. * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::supportsAttachContentKey): Canonical link: https://commits.webkit.org/276984@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c73791: [visionOS] After exiting docked fullscreen, elemen...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c73791d25f70d40a33c043af83c786729448e796 https://github.com/WebKit/WebKit/commit/c73791d25f70d40a33c043af83c786729448e796 Author: Andy Estes Date: 2024-04-03 (Wed, 03 Apr 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm Log Message: --- [visionOS] After exiting docked fullscreen, element fullscreen window contains only a view snapshot https://bugs.webkit.org/show_bug.cgi?id=272114 rdar://125734832 Reviewed by Jer Noble. Element fullscreen expects to exit when switching to LinearMediaPlayer fullscreen, but we lack the API from LinearMediaKit to do this properly. As a result, when exiting LinearMediaKit fullscreen the element fullscreen window remains visible with a view snapshot displayed in place of the web view. Work around this issue by exiting element fullscreen when we receive a video receiver endpoint. * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::setVideoReceiverEndpoint): Canonical link: https://commits.webkit.org/277031@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f11225: [visionOS] Repeated attempts to enter and exit Lin...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f1122551722bf80eedb0eaf548808a999282e0ce https://github.com/WebKit/WebKit/commit/f1122551722bf80eedb0eaf548808a999282e0ce Author: Andy Estes Date: 2024-04-06 (Sat, 06 Apr 2024) Changed paths: M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm M Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaTypes.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.messages.in M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm Log Message: --- [visionOS] Repeated attempts to enter and exit LinearMediaPlayer fullscreen may fail https://bugs.webkit.org/show_bug.cgi?id=272253 rdar://125994291 Reviewed by Jer Noble. When exiting LinearMediaPlayer fullscreen LinearMediaKit may call willExitFullscreen() twice, and each time PlaybackSessionInterfaceLMK would respond by calling PlaybackSessionModel::toggleFullscreen(). The first call would exit fullscreen and ultimately destroy the LinearMediaPlayer, but since the second call would occur before VideoPresentationInterfaceIOS::cleanupFullscreen() was called the fullscreen state machine would be left in a bad state where it believed it was in standard fullscreen but a LinearMediaPlayer would not exist. Later attempts to enter fullscreen would fail due to the LMPlayableViewController not having a valid Playable-conforming object. Resolved this by teaching LinearMediaPlayer to track a presentationState indepenently of the value of presentationMode, allowing it to tolerate multiple calls to willEnterFullscreen(), willExitFullscreen(), and toggleInlineMode(). When LinearMediaKit calls willEnterFullscreen() and presentationState is .inline we change it to .enteringFullscreen an ddispatch -linearMediaPlayerEnterFullscreen:, otherwise we ignore the call. When LinearMediaKit calls willExitFullscreen() and presentationState is .fullscreen we change it to .exitingFullscreen and dispatch -linearMediaPlayerExitFullscreen:, otherwise we ignore the call. When LinearMediaKit calls toggleInlineMode() and presentationState is .inline or .fullscreen, we change it to .enteringFullscreen or .exitingFullscreen respectively, otherwise we ignore the call. Next, rather than allowing LinearMediaPlayer's client to mutate presentationMode directly, exposed -enterFullscreen and -exitFullscreen methods. When -enterFullscreen is called when presentationState is anything but .fullscreen, we change presentationState to .fullscreen and presentationMode to .fullscreenFromInline. When -exitFullscreen is called when presentationState is anything but .inline, we change presentationState and presentationMode to .inline. Finally, PlaybackSessionModel::toggleFullscreen() was removed and an explicit PlaybackSessionModel::exitFullscreen() was added. When PlaybackSessionInterfaceLMK receives -linearMediaPlayerEnterFullscreen: or -linearMediaPlayerExitFullscreen: it calls PlaybackSessionModel::enterFullscreen() and PlaybackSessionModel::exitFullscreen() respectively. VideoPresentationInterfaceLMK was also changed to call -enterFullscreen and -exitFullscreen instead of mutating LinearMediaPlayer's presentationMode directly. The net result of these changes is that a request from LinearMediaKit to enter or exit fullscreen is ignored if a previous request is still in progress or if the state machine is already in the requested state. * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::exitFullscreen): (WebCore::PlaybackSessionModelMediaElement::toggleFullscreen): Deleted. * Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayerEnterFullscreen:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayerExitFullscreen:]): (-[WKLinearMediaPlayerDelegate linearMediaPlayerToggleInlineMode:]): Deleted. (-[WKLinearMediaPlayerDelegate linearMediaPlayerWillEnterFullscreen:]): Deleted. (-[WKLinearMediaPlayerDelegate linearMediaPlayerW
[webkit-changes] [WebKit/WebKit] f4043d: [tvOS] Hide custom fullscreen controls when a vide...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f4043d01a8ce50588522034ce58ab83fbdb0d5cd https://github.com/WebKit/WebKit/commit/f4043d01a8ce50588522034ce58ab83fbdb0d5cd Author: Andy Estes Date: 2024-06-26 (Wed, 26 Jun 2024) Changed paths: M Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp M Source/WebKit/UIProcess/WebFullScreenManagerProxy.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp Log Message: --- [tvOS] Hide custom fullscreen controls when a video element is in element fullscreen https://bugs.webkit.org/show_bug.cgi?id=275887 rdar://130560759 Reviewed by Aditya Keerthi and Eric Carlson. Replaced PLATFORM(VISION) checks with ENABLE(VIDEO_USES_ELEMENT_FULLSCREEN) to enable the ability to hide custom fullscreen controls when a video element is in element fullscreen on tvOS. * Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp: (WebKit::WebFullScreenManagerProxy::enterFullScreen): * Source/WebKit/UIProcess/WebFullScreenManagerProxy.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController initWithWebView:]): (-[WKFullScreenViewController videoControlsManagerDidChange]): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController enterFullScreen:]): * Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp: (WebKit::WebFullScreenManager::enterFullScreenForElement): Canonical link: https://commits.webkit.org/280379@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8b5dbf: [tvOS] Enforce `object-fit: contain` for videos in...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8b5dbfa6c16adb0ab4110a48bc8c2930bce1f1fd https://github.com/WebKit/WebKit/commit/8b5dbfa6c16adb0ab4110a48bc8c2930bce1f1fd Author: Andy Estes Date: 2024-06-26 (Wed, 26 Jun 2024) Changed paths: M Source/WebCore/css/fullscreen.css Log Message: --- [tvOS] Enforce `object-fit: contain` for videos in element fullscreen https://bugs.webkit.org/show_bug.cgi?id=275889 rdar://130561454 Reviewed by Eric Carlson. Adding !important to `object-fit: contain` in fullscreen.css improves compatibility when placing video elements in element fullscreen on tvOS. While ultimately we should add an internal pseudo-class that selects a video in element fullscreen, for now this change modifies the definition of the Fullscreen API UA stylesheet on tvOS. * Source/WebCore/css/fullscreen.css: Canonical link: https://commits.webkit.org/280382@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e2b915: [iOS] Add a _WKFullscreenDelegate method for the c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e2b9154b8477825124b39e22df82f4677bb6eac9 https://github.com/WebKit/WebKit/commit/e2b9154b8477825124b39e22df82f4677bb6eac9 Author: Andy Estes Date: 2024-07-06 (Sat, 06 Jul 2024) Changed paths: M Source/WebKit/UIProcess/API/APIFullscreenClient.h M Source/WebKit/UIProcess/API/Cocoa/_WKFullscreenDelegate.h M Source/WebKit/UIProcess/Cocoa/FullscreenClient.h M Source/WebKit/UIProcess/Cocoa/FullscreenClient.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- [iOS] Add a _WKFullscreenDelegate method for the client to provide a presenting view controller https://bugs.webkit.org/show_bug.cgi?id=276274 rdar://131200749 Reviewed by Eric Carlson. Added -_webView:requestPresentingViewControllerWithCompletionHandler: to _WKFullscreenDelegate on iOS. If the delegate responds to this method, WKFullScreenWindowController uses the view controller prodivded in its completion handler to determine the UIWindowScene in which to create its UIWindow. * Source/WebKit/UIProcess/API/APIFullscreenClient.h: (API::FullscreenClient::requestPresentingViewController): * Source/WebKit/UIProcess/API/Cocoa/_WKFullscreenDelegate.h: * Source/WebKit/UIProcess/Cocoa/FullscreenClient.h: (WebKit::FullscreenClient::~FullscreenClient): Deleted. * Source/WebKit/UIProcess/Cocoa/FullscreenClient.mm: (WebKit::FullscreenClient::setDelegate): (WebKit::FullscreenClient::requestPresentingViewController): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController _enterFullScreen:windowScene:]): Canonical link: https://commits.webkit.org/280711@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e56299: Crash in WebCore::PlaybackSessionModelMediaElement...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e56299b4f1d9bb84f69ad5cb7ee24fa6fc93eb56 https://github.com/WebKit/WebKit/commit/e56299b4f1d9bb84f69ad5cb7ee24fa6fc93eb56 Author: Andy Estes Date: 2024-07-09 (Tue, 09 Jul 2024) Changed paths: M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm Log Message: --- Crash in WebCore::PlaybackSessionModelMediaElement::exitFullscreen due to null m_mediaElement https://bugs.webkit.org/show_bug.cgi?id=276341 rdar://131143888 Reviewed by Jean-Yves Avenard and Eric Carlson. Despite an ASSERT(element) in PlaybackSessionModelMediaElement::exitFullscreen, crash reports indicate that m_mediaElement can be null when exitFullscreen is called. Resolved this by null-checking m_mediaElement prior to dereferencing it (in exitFullscreen and elsewhere); the debug assertion is left to help investigate why m_mediaElement is unexpectedly null. While here, updated PlaybackSessionModelMediaElement to follow our latest smart pointer usage guidelines. * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::setMediaElement): (WebCore::PlaybackSessionModelMediaElement::play): (WebCore::PlaybackSessionModelMediaElement::pause): (WebCore::PlaybackSessionModelMediaElement::togglePlayState): (WebCore::PlaybackSessionModelMediaElement::beginScrubbing): (WebCore::PlaybackSessionModelMediaElement::endScrubbing): (WebCore::PlaybackSessionModelMediaElement::seekToTime): (WebCore::PlaybackSessionModelMediaElement::fastSeek): (WebCore::PlaybackSessionModelMediaElement::beginScanningForward): (WebCore::PlaybackSessionModelMediaElement::beginScanningBackward): (WebCore::PlaybackSessionModelMediaElement::endScanning): (WebCore::PlaybackSessionModelMediaElement::setDefaultPlaybackRate): (WebCore::PlaybackSessionModelMediaElement::setPlaybackRate): (WebCore::PlaybackSessionModelMediaElement::selectAudioMediaOption): (WebCore::PlaybackSessionModelMediaElement::selectLegibleMediaOption): (WebCore::PlaybackSessionModelMediaElement::togglePictureInPicture): (WebCore::PlaybackSessionModelMediaElement::toggleInWindowFullscreen): (WebCore::PlaybackSessionModelMediaElement::enterFullscreen): (WebCore::PlaybackSessionModelMediaElement::exitFullscreen): (WebCore::PlaybackSessionModelMediaElement::setMuted): (WebCore::PlaybackSessionModelMediaElement::setVolume): (WebCore::PlaybackSessionModelMediaElement::setPlayingOnSecondScreen): (WebCore::PlaybackSessionModelMediaElement::spatialTrackingLabel const): (WebCore::PlaybackSessionModelMediaElement::setSpatialTrackingLabel): (WebCore::PlaybackSessionModelMediaElement::sendRemoteCommand): (WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions): (WebCore::PlaybackSessionModelMediaElement::playbackStartedTime const): (WebCore::PlaybackSessionModelMediaElement::duration const): (WebCore::PlaybackSessionModelMediaElement::currentTime const): (WebCore::PlaybackSessionModelMediaElement::bufferedTime const): (WebCore::PlaybackSessionModelMediaElement::isPlaying const): (WebCore::PlaybackSessionModelMediaElement::isStalled const): (WebCore::PlaybackSessionModelMediaElement::defaultPlaybackRate const): (WebCore::PlaybackSessionModelMediaElement::playbackRate const): (WebCore::PlaybackSessionModelMediaElement::seekableRanges const): (WebCore::PlaybackSessionModelMediaElement::seekableTimeRangesLastModifiedTime const): (WebCore::PlaybackSessionModelMediaElement::liveUpdateInterval const): (WebCore::PlaybackSessionModelMediaElement::canPlayFastReverse const): (WebCore::PlaybackSessionModelMediaElement::audioMediaSelectionOptions const): (WebCore::PlaybackSessionModelMediaElement::legibleMediaSelectionOptions const): (WebCore::PlaybackSessionModelMediaElement::legibleMediaSelectedIndex const): (WebCore::PlaybackSessionModelMediaElement::externalPlaybackEnabled const): (WebCore::PlaybackSessionModelMediaElement::externalPlaybackTargetType const): (WebCore::PlaybackSessionModelMediaElement::externalPlaybackLocalizedDeviceName const): (WebCore::PlaybackSessionModelMediaElement::wirelessVideoPlaybackDisabled const): (WebCore::PlaybackSessionModelMediaElement::isMuted const): (WebCore::PlaybackSessionModelMediaElement::volume const): (WebCore::PlaybackSessionModelMediaElement::isPictureInPictureSupported const): (WebCore::PlaybackSessionModelMediaElement::isPictureInPictureActive const): (WebCore::PlaybackSessionModelMediaElement::isInWindowFullscreenActive const): (WebCore::PlaybackSessionModelMediaElement::logIdentifier const): (WebCore::PlaybackSessionModelMediaElement::loggerPtr const): Canonical link: https://commits.webkit.org/280780@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/w
[webkit-changes] [WebKit/WebKit] ad9437: Allow WKWebView clients to toggle fullscreen video
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ad94373263a77c433dc04da03a3029c58962182b https://github.com/WebKit/WebKit/commit/ad94373263a77c433dc04da03a3029c58962182b Author: Andy Estes Date: 2024-07-10 (Wed, 10 Jul 2024) Changed paths: M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/html/HTMLMediaElement.h M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/WebFullScreenManagerProxy.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/mac/PageClientImplMac.mm M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSpatialTrackingLabels.mm M Tools/TestWebKitAPI/Tests/mac/InWindowFullscreen.mm M Tools/TestWebKitAPI/Utilities.h Log Message: --- Allow WKWebView clients to toggle fullscreen video https://bugs.webkit.org/show_bug.cgi?id=276376 rdar://131394306 Reviewed by Jer Noble. Added APIs to WKWebViewPrivate.h that allow clients to (a) determine whether they can enter fullscreen video (-_canEnterFullscreen), and (b) enter fullscreen programatically (-_enterFullscreen). -_canEnterFullscreen is key-value observable. While here, made it possible to create a CheckedPtr to PlaybackSessionModel and WebFullScreenManagerProxy and fixed a bug with how PlaybackSessionManager::(enter|exit)Fullscreen created UserGestureIndicators. Added an API test. * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/HTMLMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.h: * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::enterFullscreen): (WebCore::PlaybackSessionModelMediaElement::exitFullscreen): * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _canEnterFullscreen]): (-[WKWebView _enterFullscreen]): * Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h: * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h: * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm: (WebKit::PageClientImplCocoa::videoControlsManagerDidChange): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h: (WebKit::PlaybackSessionManagerProxy::hasControlsManagerInterface const): * Source/WebKit/UIProcess/WebFullScreenManagerProxy.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::canEnterFullscreen): (WebKit::WebPageProxy::enterFullscreen): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::videoControlsManagerDidChange): * Source/WebKit/UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::videoControlsManagerDidChange): * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm: (WebKit::PlaybackSessionManager::enterFullscreen): (WebKit::PlaybackSessionManager::exitFullscreen): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm: Added. (-[FullscreenLifecycleObserver observeValueForKeyPath:ofObject:change:context:]): (TEST(Fullscreen, Lifecycle)): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSpatialTrackingLabels.mm: (TEST(WKWebView, DefaultSTSLabel)): * Tools/TestWebKitAPI/Tests/mac/InWindowFullscreen.mm: (TestWebKitAPI::TEST(InWindowFullscreen, CanToggleAfterPlaybackStarts)): (TestWebKitAPI::TEST(InWindowFullscreen, ToggleChangesIsActive)): (TestWebKitAPI::TEST(InWindowFullscreen, ToggleChangesIsActiveWithoutUserGesture)): (TestWebKitAPI::testEventually): Deleted. * Tools/TestWebKitAPI/Utilities.h: (TestWebKitAPI::Util::waitFor): Canonical link: https://commits.webkit.org/280839@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d5fddb: [LinearMediaPlayer] Blank video frames seen before...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb https://github.com/WebKit/WebKit/commit/d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb Author: Andy Estes Date: 2024-07-11 (Thu, 11 Jul 2024) Changed paths: M Source/WebCore/platform/graphics/MediaPlayerEnums.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm Log Message: --- [LinearMediaPlayer] Blank video frames seen before docking and after undocking https://bugs.webkit.org/show_bug.cgi?id=276453 rdar://130425275 Reviewed by Jer Noble. Two issues resulted in blank frames briefly appearing in an element in element fullscreen: 1. Just prior to docking, an LMPlayableViewController is presented that obscures the web view. Since this VC's presentationMode is immediately changed to `.fullscreenFromInline` which hides the web view's scene and presents a new fullscreen scene, we should hide the view controller while it's in `.inline` mode (by setting its root view's alpha to 0). 2. Right after undocking, when committing the staged AVSampleBufferDisplayLayer, MediaPlayerPrivate would call renderingModeChanged(), which calls Element::invalidateStyleAndLayerComposition(). This results in the element briefly rendering a black frame. To avoid this, changed MediaPlayerPrivate to call renderingModeChanged() as soon as the AVSampleBufferDisplayLayer is staged, while the LinearMediaKit scene is still occluding the web view. * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/graphics/MediaPlayerEnums.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateDisplayLayerAndDecompressionSession): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyDecompressionSession): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayerOrVideoRenderer): * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h: * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::updateDisplayLayerAndDecompressionSession): (WebCore::MediaPlayerPrivateWebM::destroyDecompressionSession): (WebCore::MediaPlayerPrivateWebM::ensureLayerOrVideoRenderer): * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::ensurePlayableViewController): Canonical link: https://commits.webkit.org/280848@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 677b11: [visionOS] Safari window is sometimes hidden after...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 677b11ce01d0dca2299d9d6d0135dcde940f169b https://github.com/WebKit/WebKit/commit/677b11ce01d0dca2299d9d6d0135dcde940f169b Author: Andy Estes Date: 2024-07-16 (Tue, 16 Jul 2024) Changed paths: M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- [visionOS] Safari window is sometimes hidden after exiting element fullscreen https://bugs.webkit.org/show_bug.cgi?id=276670 rdar://131617118 Reviewed by Jer Noble and Tim Horton. In 277877@main a workaround was added to address an issue where the element fullscreen window was not frontmost after exiting docked fullscreen. In some circumstances, however, exiting docked fullscreen may also exit element fullscreen and this could result in a transform with `kOutgoingWindowZOffset` being set on the WKWebView's window *after* WKFullScreenWindowControllerIOS had already undid that transform. The result would be that the window remained hidden even though the element fullscreen window had been closed. Since the workaround was added the underlying bug tracked by rdar://126894293 has been resolved. Since the workaround is no longer necessary and causes the issue described above, this change removes it. * Source/WebKit/UIProcess/ios/PageClientImplIOS.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didExitFullscreen): Deleted. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController didExitFullscreen]): Deleted. Canonical link: https://commits.webkit.org/281029@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c6b254: [tvOS] Unable to start camera via getUserMedia
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c6b254d068016e9ac46e974d1710e92c84a4c56f https://github.com/WebKit/WebKit/commit/c6b254d068016e9ac46e974d1710e92c84a4c56f Author: Andy Estes Date: 2024-07-18 (Thu, 18 Jul 2024) Changed paths: M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp Log Message: --- [tvOS] Unable to start camera via getUserMedia https://bugs.webkit.org/show_bug.cgi?id=276804 rdar://131596698 Reviewed by Tim Horton. Two issues prevented us from starting continuity camera on tvOS: 1. `AVCaptureSessionSetAuthorizedToUseCameraInMultipleForegroundAppLayout()` is not available on tvOS, preventing us from using the camera in multi-app layouts. 2. `MediaSessionManageriOS::providePresentingApplicationPID()` was not called when starting camera capture. Addressed (1) by calling `-[AVCaptureSession setMultitaskingCameraAccessEnabled:]` instead, which is available on tvOS. Addressed (2) by adjusting an `#ifdef` to include tvOS. * Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm: (WebCore::AVVideoCaptureSource::setupSession): * Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp: Canonical link: https://commits.webkit.org/281123@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8c6a0b: [iOS] WebKit XPC services are not always considere...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8c6a0b63833a0fd180e5e0b7b5f05fbb560244fa https://github.com/WebKit/WebKit/commit/8c6a0b63833a0fd180e5e0b7b5f05fbb560244fa Author: Andy Estes Date: 2024-07-19 (Fri, 19 Jul 2024) Changed paths: M Source/WebKit/GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist M Source/WebKit/ModelProcess/EntryPoint/Cocoa/XPCService/ModelService/Info-embedded.plist M Source/WebKit/NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist M Source/WebKit/WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist Log Message: --- [iOS] WebKit XPC services are not always considered managed by RunningBoard https://bugs.webkit.org/show_bug.cgi?id=276834 rdar://132063557 Reviewed by Per Arne Vollan. Whether or not RunningBoard manages an XPC service depends on the type of its host process. While XPC services hosted by UI applications are managed by default, XPC services hosted by launchd daemons are not managed even if the daemon itself is managed by RunningBoard and can show UI. Some bugs are introduced when WebKit XPC services are not managed by RunningBoard, such as: 1. Some parts of iOS not considering the XPC service to be in the foreground even though it is running and has propagated visibility. 2. RunningBoard not suspending/freezing XPC services it does not manage. Resolved this by opting WebKit XPC services into RunningBoard management on iOS using the same Info.plist key we use on macOS. * Source/WebKit/GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist: * Source/WebKit/ModelProcess/EntryPoint/Cocoa/XPCService/ModelService/Info-embedded.plist: * Source/WebKit/NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist: * Source/WebKit/WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist: Canonical link: https://commits.webkit.org/281165@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 79d73e: REGRESSION (281145@main): nullptr dereference in V...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 79d73eae9a7659f407d71194cb50bdbd15409a04 https://github.com/WebKit/WebKit/commit/79d73eae9a7659f407d71194cb50bdbd15409a04 Author: Andy Estes Date: 2024-07-24 (Wed, 24 Jul 2024) Changed paths: M Source/WebCore/platform/cocoa/VideoPresentationModelVideoElement.mm Log Message: --- REGRESSION (281145@main): nullptr dereference in VideoPresentationModelVideoElement::requestFullscreenMode https://bugs.webkit.org/show_bug.cgi?id=276975 rdar://132349049 Reviewed by Eric Carlson. A null check was added in 281266@main, which landed simultaneously with posting this change for review. 281266@main fixes the crash, and this change follows it up by conforming to our smart pointer guidelines. Crash covered by existing tests. * Source/WebCore/platform/cocoa/VideoPresentationModelVideoElement.mm: (WebCore::VideoPresentationModelVideoElement::requestFullscreenMode): Canonical link: https://commits.webkit.org/281299@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 700d10: [tvOS] Add a scrubber bar to media controls
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 700d10c33417fbc5cf21cc0c0ea93a2d5652be2d https://github.com/WebKit/WebKit/commit/700d10c33417fbc5cf21cc0c0ea93a2d5652be2d Author: Andy Estes Date: 2024-07-24 (Wed, 24 Jul 2024) Changed paths: M Source/WebCore/Modules/modern-media-controls/controls/time-control.js M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js Log Message: --- [tvOS] Add a scrubber bar to media controls https://bugs.webkit.org/show_bug.cgi?id=277025 rdar://132426889 Reviewed by Eric Carlson. Moved the play/pause and seek back/forward buttons to the bottom and added an interactive scrubber bar above these controls. Added an option to TimeControl to render the elapsed/remaining time labels below the scrubber. * Source/WebCore/Modules/modern-media-controls/controls/time-control.js: (TimeControl.prototype._performIdealLayout): * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css: (.media-controls.fullscreen.tvos > .controls-bar): (.media-controls.fullscreen.tvos.uses-ltr-user-interface-layout-direction > .controls-bar.top-left,): (.media-controls.fullscreen.tvos.uses-ltr-user-interface-layout-direction > .controls-bar.top-right,): (.media-controls.fullscreen.tvos > .controls-bar.bottom): (.media-controls.fullscreen.tvos > .controls-bar.bottom > .buttons-container): (.media-controls.fullscreen.tvos > .controls-bar.center): Deleted. * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js: (TVOSMediaControls.prototype.layout): (TVOSMediaControls.prototype._centerContainerButtons): Deleted. Canonical link: https://commits.webkit.org/281327@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c6cc54: [tvOS] WKFullScreenViewController should outlive t...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c6cc543b87b696e3a9ea27f77967e9a368ed945e https://github.com/WebKit/WebKit/commit/c6cc543b87b696e3a9ea27f77967e9a368ed945e Author: Andy Estes Date: 2024-07-31 (Wed, 31 Jul 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- [tvOS] WKFullScreenViewController should outlive the web view placeholder https://bugs.webkit.org/show_bug.cgi?id=277396 rdar://132871287 Reviewed by Eric Carlson. Allow WKFullScreenViewController to remain on screen after the web view placeholder is removed from the view hierarchy. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController placeholderWillMoveToSuperview:]): Canonical link: https://commits.webkit.org/281658@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ec9c5d: _hasActiveNowPlayingSession incorrectly set to NO ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ec9c5dbe3501425a942c3e0c969802c2998be98e https://github.com/WebKit/WebKit/commit/ec9c5dbe3501425a942c3e0c969802c2998be98e Author: Andy Estes Date: 2024-07-31 (Wed, 31 Jul 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/NowPlayingSession.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/large-video-test-now-playing.html Log Message: --- _hasActiveNowPlayingSession incorrectly set to NO when a subframe navigation occurs https://bugs.webkit.org/show_bug.cgi?id=277404 rdar://131082146 Reviewed by Jean-Yves Avenard. WebPageProxy::didCommitLoadForFrame would set WKWebView's _hasActiveNowPlayingSession property to NO when a load committed in *any* frame, even if that frame was not playing media. Furthermore, it would be set to NO during a same-document navigation even if the navigation did not stop media playback. To correct these two mistakes, moved the call to PageClient::hasActiveNowPlayingSessionChanged from WebPageProxy::didCommitLoadForFrame to WebPageProxy::didChangeMainDocument and ensured that it's only called on the main frame. Added API tests. * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm: (WebKit::PageClientImplCocoa::hasActiveNowPlayingSessionChanged): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCommitLoadForFrame): (WebKit::WebPageProxy::didChangeMainDocument): * Tools/TestWebKitAPI/Tests/WebKitCocoa/NowPlayingSession.mm: (TEST(NowPlayingSession, NavigateToFragmentAfterHasSession)): (TEST(NowPlayingSession, LoadSubframeAfterHasSession)): * Tools/TestWebKitAPI/Tests/WebKitCocoa/large-video-test-now-playing.html: Canonical link: https://commits.webkit.org/281664@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4d1345: [tvOS] Present title and artist metadata in media ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4d134575ba2efbde2d21a489d7aca35831e0f1eb https://github.com/WebKit/WebKit/commit/4d134575ba2efbde2d21a489d7aca35831e0f1eb Author: Andy Estes Date: 2024-08-05 (Mon, 05 Aug 2024) Changed paths: M Source/WebCore/DerivedSources-input.xcfilelist M Source/WebCore/DerivedSources.make M Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp M Source/WebCore/Modules/mediacontrols/MediaControlsHost.h M Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl M Source/WebCore/Modules/mediasession/MediaSession.cpp M Source/WebCore/Modules/mediasession/MediaSession.h M Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js M Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js M Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js A Source/WebCore/Modules/modern-media-controls/controls/metadata-container.css A Source/WebCore/Modules/modern-media-controls/controls/metadata-container.js M Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js M Source/WebCore/Modules/modern-media-controls/controls/vision-layout-traits.js M Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js M Source/WebCore/Modules/modern-media-controls/media/media-controller.js A Source/WebCore/Modules/modern-media-controls/media/metadata-support.js M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/dom/EventNames.json M Source/WebCore/en.lproj/modern-media-controls-localized-strings.js Log Message: --- [tvOS] Present title and artist metadata in media controls https://bugs.webkit.org/show_bug.cgi?id=277641 rdar://133226960 Reviewed by Jer Noble. Taught TVOSMediaControls to present title and artist metadata when the website makes this information available via MediaSession. This is accomplished by adding a new MetadataSupport support class that is installed when TVOSMediaControls are enabled. MetadataSupport asks MediaControlsHost to add itself as a MediaSessionObserver. When MediaSession metadata changes MediaControlsHost dispatches a new webkitmediasessionmetadatachanged event to the User-Agent shadow root, and when MetadataSupport observes this event it syncs TVOSMediaControls' metadataContainer control by updating its title and artist labels. To make it easier to specify supporting object classes for a given platform, supportingObjectClasses was moved from MediaController to LayoutTraits so that LayoutTraits subclasses can override it. Since this serves the purpose of overridenSupportingObjectClasses (but with more flexibility), overridenSupportingObjectClasses was removed. * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp: (WebCore::MediaControlsHost::mediaSession const): (WebCore::MediaControlsHost::ensureMediaSessionObserver): (WebCore::MediaControlsHost::metadataChanged): * Source/WebCore/Modules/mediacontrols/MediaControlsHost.h: * Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl: * Source/WebCore/Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::hasObserver const): * Source/WebCore/Modules/mediasession/MediaSession.h: * Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js: (IOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted. * Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js: (LayoutTraits.prototype.supportingObjectClasses): (LayoutTraits.prototype.overridenSupportingObjectClasses): Deleted. * Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js: (MacOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted. * Source/WebCore/Modules/modern-media-controls/controls/metadata-container.css: Added. (.media-controls.fullscreen.tvos > .metadata-container > .title-label): (.media-controls.fullscreen.tvos > .metadata-container > .artist-label): * Source/WebCore/Modules/modern-media-controls/controls/metadata-container.js: Added. (MetadataContainer.prototype.get title): (MetadataContainer.prototype.set title): (MetadataContainer.prototype.get artist): (MetadataContainer.prototype.set artist): (MetadataContainer.prototype.commitProperty): * Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js: (TVOSLayoutTraits.prototype.supportingObjectClasses): (TVOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted. * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css: (.media-controls.fullscreen.tvos): (.media-controls.fullscreen.tvos > .metadata-container): (.media-controls.fullscreen
[webkit-changes] [WebKit/WebKit] 1a5a25: [tvOS] Allow publishing Now Playing metadata in ep...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1a5a2565fbf688e88695b85cc558964873ee2afb https://github.com/WebKit/WebKit/commit/1a5a2565fbf688e88695b85cc558964873ee2afb Author: Andy Estes Date: 2024-08-12 (Mon, 12 Aug 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/Modules/webaudio/AudioContext.cpp M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/html/MediaElementSession.cpp M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h Log Message: --- [tvOS] Allow publishing Now Playing metadata in ephemeral sessions https://bugs.webkit.org/show_bug.cgi?id=277723 rdar://133340530 Reviewed by Jer Noble. Added an embedder-controlled web preference to allow privacy-sensitive operations to occur in non-persistent website data stores. For now this preference is used to control whether media metadata (e.g., title, artist, artwork) is vended to Now Playing. It may be used in other places in the future (e.g., when deciding whether privacy-sensitive logging should be allowed). * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WebCore/Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::nowPlayingInfo const): * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::mediaSessionTitle const): * Source/WebCore/html/MediaElementSession.cpp: (WebCore::MediaElementSession::computeNowPlayingInfo const): * Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences _setAllowPrivacySensitiveOperationsInNonPersistentDataStores:]): (-[WKPreferences _allowPrivacySensitiveOperationsInNonPersistentDataStores]): * Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h: Canonical link: https://commits.webkit.org/282138@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8da9da: [visionOS] Environment docking may fail if a video...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8da9da634316e1ff561390301de8f03b4c25886a https://github.com/WebKit/WebKit/commit/8da9da634316e1ff561390301de8f03b4c25886a Author: Andy Estes Date: 2024-08-13 (Tue, 13 Aug 2024) Changed paths: M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/WebPageProxy.cpp Log Message: --- [visionOS] Environment docking may fail if a video's src changes while in element fullscreen https://bugs.webkit.org/show_bug.cgi?id=278004 rdar://130920037 Reviewed by Eric Carlson. When a video's src (or srcObject) changes a new WebAVPlayerLayer will be created in the UI process, removing the previous layer. VideoPresentationManagerProxy::removeClientForContext is called when the old layer is removed, which invalidates and removes the video presentation model and interface associated with the video element's context ID. When VideoPresentationInterfaceLMK is invalidated it removes its LMPlayableViewController, even though an environment picker button owned by that now-deallocated view controller may be presented in WKFullScreenViewController if the video is part of an element fullscreen presentation. If the user were to tap that button and choose an environment then docking would not occur since the LMPlayzableViewController and its associated playable object no longer exist. VideoPresentationInterfaceLMK attempted to account for this during invalidation by calling VideoPresentationModel::didCleanupFullscreen(), which would ultimately call -[WKFullScreenViewController configureEnvironmentPickerButtonView], re-creating a new video presentation interface, LMPlayableViewController, playable object, and environment picker button if the video was still in an element fullscreen presentation. While this re-creation did happen after some forms of invalidation (e.g., when undocking and returning to element fullscreen) it did *not* happen when a video layer changed because in VideoPresentationManagerProxy::removeClientForContext the video presentation model had already been removed from the interface by the time VideoPresentationInterface::invalidate was called. To account ensure that a valid environment picker button is displayed in this case, this change calls WebPageProxy::didCleanupFullscreen explicitly in VideoPresentationManagerProxy::removeClientForContext. Also added additional logging to help diagnose bugs like this in the future. * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h: * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm: (WebCore::VideoPresentationInterfaceIOS::cleanupFullscreen): * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::invalidatePlayerViewController): (WebKit::VideoPresentationInterfaceLMK::ensurePlayableViewController): * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationManagerProxy::removeClientForContext): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCleanupFullscreen): Canonical link: https://commits.webkit.org/282176@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 565dbe: -[WKWebView _canEnterFullscreen] can return YES fo...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 565dbe7cbd923005f7a6c399977b325b6bfae891 https://github.com/WebKit/WebKit/commit/565dbe7cbd923005f7a6c399977b325b6bfae891 Author: Andy Estes Date: 2024-08-22 (Thu, 22 Aug 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj M Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm A Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/fullscreen-lifecycle-audio.html Log Message: --- -[WKWebView _canEnterFullscreen] can return YES for elements https://bugs.webkit.org/show_bug.cgi?id=278085 rdar://131872096 Reviewed by Eric Carlson. The (poorly) named -[WKWebView _enterFullscreen] method requires that the media element backing the current controls manager interface be a element, but -[WKWebView _canEnterFullscreen] would return YES whenever there was a controls manager interface, regardless of the type of media element backing it. This leads to a problem where -_enterFullscreen can silently fail even though -_canEnterFullscreen returns YES. While in general it is possible for an element to have a fullscreen presentation, not all platforms' media controls handle this case. Addressed this (for now) by modifying -_canEnterFullscreen to only consider controls manager interfaces for elements when computing its value. Added an API test. * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm: (WebKit::PageClientImplCocoa::videoControlsManagerDidChange): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h: (WebKit::PlaybackSessionManagerProxy::canEnterVideoFullscreen const): (WebKit::PlaybackSessionManagerProxy::hasControlsManagerInterface const): Deleted. * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID): (WebKit::PlaybackSessionManagerProxy::clearPlaybackControlsManager): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::canEnterFullscreen): * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm: (WebKit::PlaybackSessionManager::setUpPlaybackControlsManager): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm: (TEST(Fullscreen, AudioLifecycle)): (TEST(Fullscreen, VideoLifecycle)): (TEST(Fullscreen, Lifecycle)): Deleted. * Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/fullscreen-lifecycle-audio.html: Added. Canonical link: https://commits.webkit.org/282639@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 78f72a: [iOSMac] Enable AVPictureInPicturePlayerLayerView
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 78f72ab7d0ad1a87b350546787beaf871ebcd76c https://github.com/WebKit/WebKit/commit/78f72ab7d0ad1a87b350546787beaf871ebcd76c Author: Andy Estes Date: 2024-08-26 (Mon, 26 Aug 2024) Changed paths: M Source/WTF/wtf/PlatformHave.h M Source/WebCore/page/Page.cpp Log Message: --- [iOSMac] Enable AVPictureInPicturePlayerLayerView https://bugs.webkit.org/show_bug.cgi?id=278658 rdar://134298669 Reviewed by Wenson Hsieh. Enabled AVPictureInPicturePlayerLayerView on Mac Catalyst. * Source/WTF/wtf/PlatformHave.h: * Source/WebCore/page/Page.cpp: (WebCore::Page::setMuted): Drive-by fixed a Mac Catalyst build error in engineering builds. Canonical link: https://commits.webkit.org/282764@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 760da7: REGRESSION (282639@main): [Mac][Release] Fullscree...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 760da727299a6ed92f885463a90c121667583651 https://github.com/WebKit/WebKit/commit/760da727299a6ed92f885463a90c121667583651 Author: Andy Estes Date: 2024-08-26 (Mon, 26 Aug 2024) Changed paths: M Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm Log Message: --- REGRESSION (282639@main): [Mac][Release] Fullscreen.VisibilityChangeNotDispatched times out https://bugs.webkit.org/show_bug.cgi?id=278669 rdar://problem/134717935 Unreviewed test gardening; disabled Fullscreen.VisibilityChangeNotDispatched in Release builds. * Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm: (TestWebKitAPI::TEST(Fullscreen, VisibilityChangeNotDispatched)): Canonical link: https://commits.webkit.org/282765@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7d7765: Teach messages.py to handle || conjunctions in Ena...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7d7765892bff21fb526e4b04fcc1a56a7d6def63 https://github.com/WebKit/WebKit/commit/7d7765892bff21fb526e4b04fcc1a56a7d6def63 Author: Andy Estes Date: 2024-08-27 (Tue, 27 Aug 2024) Changed paths: M Source/WebKit/Scripts/webkit/messages.py M Source/WebKit/Scripts/webkit/model.py M Source/WebKit/Scripts/webkit/parser.py M Source/WebKit/Scripts/webkit/tests/Makefile M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp M Source/WebKit/Scripts/webkit/tests/MessageNames.cpp M Source/WebKit/Scripts/webkit/tests/MessageNames.h M Source/WebKit/Scripts/webkit/tests/TestWithEnabledBy.messages.in A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunction.messages.in A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessageReceiver.cpp A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessages.h M Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessageReceiver.cpp M Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessages.h A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunction.messages.in A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessageReceiver.cpp A Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessages.h Log Message: --- Teach messages.py to handle || conjunctions in EnabledBy attributes https://bugs.webkit.org/show_bug.cgi?id=278754 rdar://problem/134823689 Reviewed by Ryosuke Niwa. Taught messages.py to handle || conjunctions in EnabledBy attributes, e.g. [EnabledBy=SomeSetting || OtherSetting]. This compliments the existing ability to handle && conjunctions and will be used in a future change to how WebFullScreenManagerProxy will be enabled. Note that for now we explicitly reject combinations of && and ||. Added webkitpy tests. * Source/WebKit/Scripts/webkit/messages.py: (generate_enabled_by): Changed to join preferences using the passed-in conjunction. (generate_runtime_enablement): Changed to bracket the generated expression with parentheses when there are multiple preferences. (generate_enabled_by_for_receiver): Passed receiver_enabled_by_conjunction to generate_enabled_by(). * Source/WebKit/Scripts/webkit/model.py: (MessageReceiver.__init__): (Message.__init__): Stored the EnabledBy conjunction. (generate_global_model): * Source/WebKit/Scripts/webkit/parser.py: (parse): (parse_parameters_string): (parse_enabled_by_string): Added a helper method to parse the preferences and conjunction from the EnabledBy string. * Source/WebKit/Scripts/webkit/tests/Makefile: * Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp: * Source/WebKit/Scripts/webkit/tests/MessageNames.cpp: * Source/WebKit/Scripts/webkit/tests/MessageNames.h: * Source/WebKit/Scripts/webkit/tests/TestWithEnabledBy.messages.in: * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunction.messages.in: Added. * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessageReceiver.cpp: Added. * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByAndConjunctionMessages.h: Added. * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessageReceiver.cpp: * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByMessages.h: * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunction.messages.in: Added. * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessageReceiver.cpp: Added. * Source/WebKit/Scripts/webkit/tests/TestWithEnabledByOrConjunctionMessages.h: Added. Canonical link: https://commits.webkit.org/282830@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 14ac3c: WKWebView _obscuredInsets sometimes incorrectly ap...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 14ac3c34ea68a5a108f2a0687b35473da0f4bab2 https://github.com/WebKit/WebKit/commit/14ac3c34ea68a5a108f2a0687b35473da0f4bab2 Author: Andy Estes Date: 2024-08-29 (Thu, 29 Aug 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- WKWebView _obscuredInsets sometimes incorrectly applied in element fullscreen https://bugs.webkit.org/show_bug.cgi?id=278842 rdar://131878433 Reviewed by Wenson Hsieh. When entering element fullscreen, WKFullScreenWindowController saves the state of various WKWebView properties then resets them to values appropriate for presenting the web view in the element fullscreen window. Later, it restores the saved properties when exiting element fullscreen. However, nothing prevents clients from modifying these properties *during* element fullscreen, overwriting the values previously set by WKFullScreenWindowController and potentially invalidating the element fullscreen presentation. While this is an general problem with the design of element fullscreen that this change doesn't fully address, there is a scenario where _obscuredInsets and _unobscuredSafeAreaInsets are likely to change at a known time: when WKFullScreenWindowController inserts the web view into the element fullscreen window the web view's safeAreaInsets may change, and if the client has subclassed WKWebView and overrode -safeAreaInsetsDidChange then it may choose to modify _obscuredInsets and _unobscuredSafeAreaInsets (since these values are often derived from safeAreaInsets). The result is that the content in element fullscreen may be inset even though there are no views obscuring the web view. To address this scenario, this changes WKFullScreenWindowController to specifically reset _obscuredInsets and _unobscuredSafeAreaInsets after the call to -insertSubview:atIndex: in case the client synchronously modified these properties in response to the web view being reparented. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController _enterFullScreen:windowScene:]): Canonical link: https://commits.webkit.org/282915@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3fa1d2: [tvOS] Add a stub PlaybackSessionInterface and Vid...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3fa1d20da60e00014b0539014ca6c6eb878ba836 https://github.com/WebKit/WebKit/commit/3fa1d20da60e00014b0539014ca6c6eb878ba836 Author: Andy Estes Date: 2024-08-29 (Thu, 29 Aug 2024) Changed paths: M Source/WebCore/SourcesCocoa.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/platform/graphics/PlatformPlaybackSessionInterface.h M Source/WebCore/platform/graphics/PlatformVideoPresentationInterface.h A Source/WebCore/platform/ios/PlaybackSessionInterfaceTVOS.cpp A Source/WebCore/platform/ios/PlaybackSessionInterfaceTVOS.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm A Source/WebCore/platform/ios/VideoPresentationInterfaceTVOS.h A Source/WebCore/platform/ios/VideoPresentationInterfaceTVOS.mm M Source/WebCore/platform/libwebrtc/LibWebRTCVPXVideoEncoder.cpp M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm Log Message: --- [tvOS] Add a stub PlaybackSessionInterface and VideoPresentationInterface https://bugs.webkit.org/show_bug.cgi?id=278882 rdar://134965640 Reviewed by Jer Noble. Added PlaybackSessionInterfaceTVOS and VideoPresentationInterfaceTVOS, which are subclasses of PlaybackSessionInterfaceIOS and VideoPresentationInterfaceIOS respectively. Taught VideoPresentationInterfaceIOS to tolerate a nil playerViewController. * Source/WebCore/SourcesCocoa.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/graphics/PlatformPlaybackSessionInterface.h: * Source/WebCore/platform/graphics/PlatformVideoPresentationInterface.h: * Source/WebCore/platform/ios/PlaybackSessionInterfaceTVOS.cpp: Added. (WebCore::PlaybackSessionInterfaceTVOS::create): (WebCore::PlaybackSessionInterfaceTVOS::PlaybackSessionInterfaceTVOS): * Source/WebCore/platform/ios/PlaybackSessionInterfaceTVOS.h: Added. * Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm: (WebCore::VideoPresentationInterfaceIOS::doSetup): * Source/WebCore/platform/ios/VideoPresentationInterfaceTVOS.h: Added. * Source/WebCore/platform/ios/VideoPresentationInterfaceTVOS.mm: Added. (WebCore::VideoPresentationInterfaceTVOS::create): (WebCore::VideoPresentationInterfaceTVOS::VideoPresentationInterfaceTVOS): (WebCore::VideoPresentationInterfaceTVOS::presentFullscreen): (WebCore::VideoPresentationInterfaceTVOS::dismissFullscreen): * Source/WebCore/platform/libwebrtc/LibWebRTCVPXVideoEncoder.cpp: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: * Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm: * Source/WebKit/UIProcess/WebPageProxy.cpp: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: Canonical link: https://commits.webkit.org/282939@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fb8ef2: [macOS] Enable modern AVContentKeySession support
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fb8ef258b72323f5a2a22423d0ad3e03ec54 https://github.com/WebKit/WebKit/commit/fb8ef258b72323f5a2a22423d0ad3e03ec54 Author: Andy Estes Date: 2024-08-30 (Fri, 30 Aug 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WTF/wtf/PlatformHave.h M Source/WTF/wtf/PlatformUse.h M Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp M Source/WebCore/page/SettingsBase.cpp M Source/WebCore/page/SettingsBase.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm M Source/WebKit/GPUProcess/GPUProcess.cpp M Source/WebKit/GPUProcess/GPUProcessCreationParameters.h M Source/WebKit/GPUProcess/GPUProcessCreationParameters.serialization.in M Source/WebKit/GPUProcess/GPUProcessPreferences.cpp M Source/WebKit/GPUProcess/GPUProcessPreferences.h M Source/WebKit/GPUProcess/GPUProcessPreferences.serialization.in Log Message: --- [macOS] Enable modern AVContentKeySession support https://bugs.webkit.org/show_bug.cgi?id=271092 rdar://124719590 Reviewed by Jer Noble. - For clarity, renamed SampleBufferContentKeySessionSupportEnabled to ShouldUseModernAVContentKeySession and promoted its status to Preview on macOS. - Introduced USE(MODERN_AVCONTENTKEYSESSION) and enabled it starting on macOS 14.4, since that is the minimum OS version where AVContentKeySession is usable by WebKit. - Checked for entitlements to determine if AVSampleBufferAttachContentKey is supported rather than merely checking if the GPU process is an extension. - Removed the duplicative HAVE(AVCONTENTKEYSPECIFICER) and simplified the definition of HAVE(AVCONTENTKEYREQUEST_COMPATIBILITY_MODE). * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/PlatformHave.h: * Source/WTF/wtf/PlatformUse.h: * Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::MediaKeySession::keyGroupingStrategy const): * Source/WebCore/page/SettingsBase.cpp: (WebCore::SettingsBase::shouldUseModernAVContentKeySessionChanged): (WebCore::SettingsBase::sampleBufferContentKeySessionSupportEnabledChanged): Deleted. * Source/WebCore/page/SettingsBase.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::setShouldUseModernAVContentKeySession): (WebCore::MediaSessionManagerCocoa::shouldUseModernAVContentKeySession): (WebCore::MediaSessionManagerCocoa::setSampleBufferContentKeySessionSupportEnabled): Deleted. (WebCore::MediaSessionManagerCocoa::sampleBufferContentKeySessionSupportEnabled): Deleted. * Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::CDMInstanceFairPlayStreamingAVFObjC::contentKeySession): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForRequest const): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::ensureSessionOrGroup): * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: (WebCore::CDMSessionAVContentKeySession::contentKeySession): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm: (WebCore::SourceBufferParserAVFObjC::SourceBufferParserAVFObjC): * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::supportsAttachContentKey): (WebCore::shouldAddContentKeyRecipients): (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID): (WebCore::SourceBufferPrivateAVFObjC::needsVideoLayer const): (WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt): (WebCore::SourceBufferPrivateAVFObjC::canEnqueueSample): (WebCore::SourceBufferPrivateAVFObjC::attachContentKeyToSampleIfNeeded): (WebCore::sampleBufferRenderersSupportKeySession): Deleted. * Source/WebKit/GPUProcess/GPUProcess.cpp: (WebKit::GPUProcess::updateGPUProcessPreferences): * Source/WebKit/GPUProcess/GPUProcessCreationParameters.h: * Source/WebKit/GPUProcess/GPUProcessCreationParameters.serialization.in: * Source/WebKit/GPUProcess/GPUProcessPreferences.cpp: (WebKit::GPUProcessPreferences::copyEnabledWebPreferences): * Source/WebKit/GPUProcess/GPUProcessPrefere
[webkit-changes] [WebKit/WebKit] a76e34: Cannot use element fullscreen for video fullscreen...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a76e340b35bc50788d5cdea53a31a425496882e5 https://github.com/WebKit/WebKit/commit/a76e340b35bc50788d5cdea53a31a425496882e5 Author: Andy Estes Date: 2024-08-31 (Sat, 31 Aug 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/dom/FullscreenManager.cpp M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/html/HTMLVideoElement.cpp M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebKit/Shared/WebPreferencesDefaultValues.cpp M Source/WebKit/Shared/WebPreferencesDefaultValues.h M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm M Source/WebKit/UIProcess/WebFullScreenManagerProxy.messages.in M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm Log Message: --- Cannot use element fullscreen for video fullscreen when Fullscreen API is disabled https://bugs.webkit.org/show_bug.cgi?id=278796 rdar://134863159 Reviewed by Jer Noble and Ryosuke Niwa. Clients that enable the VideoFullscreenRequiresElementFullscreen preference use the element fullscreen infrastructure to implement video fullscreen by making the element the fullscreen element and rendering WebKit's built-in media controls. However, this mechanism does not work in clients that choose not to expose the Fullscreen API to websites (by disabling the FullScreenEnabled preference). It should still be possible to enter video fullscreen (via element fullscreen) in clients that disable the Fullscreen API, so this change makes it so by supporting internal calls to FullscreenManager::requestFullscreenForElement() when either the VideoFullscreenRequiresElementFullscreen or FullScreenEnabled preferences are enabled. Added an API test. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Changed the conditional for VideoFullscreenRequiresElementFullscreen to ENABLE(FULLSCREEN_API) and moved the default value setter to here from WKWebView.mm. * Source/WebCore/dom/FullscreenManager.cpp: (WebCore::FullscreenManager::requestFullscreenForElement): (WebCore::FullscreenManager::willEnterFullscreen): Used Page::isFullscreenManagerEnabled() to check if it's possible to enter element fullscreen. * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::videoUsesElementFullscreen const): Simplified compile-time conditionals. (WebCore::HTMLMediaElement::enterFullscreen): Used Page::isFullscreenManagerEnabled() to check if it's possible to enter element fullscreen. (WebCore::HTMLMediaElement::exitFullscreen): Removed the unnecessary fullScreenEnabled() check, since we couldn't have a currentFullscreenElement() if the feature weren't enabled. * Source/WebCore/html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::supportsFullscreen const): Simplified compile-time conditionals. * Source/WebCore/page/Page.cpp: (WebCore::Page::isFullscreenManagerEnabled const): * Source/WebCore/page/Page.h: Added. Returns true if VideoFullscreenRequiresElementFullscreen or FullScreenEnabled are enabled. * Source/WebKit/Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultVideoFullscreenRequiresElementFullscreen): * Source/WebKit/Shared/WebPreferencesDefaultValues.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setupPageConfiguration:withPool:]): Set VideoFullscreenRequiresElementFullscreen to true by default on supported platforms. * Source/WebKit/UIProcess/WebFullScreenManagerProxy.messages.in: Enabled IPC messages if VideoFullscreenRequiresElementFullscreen or FullScreenEnabled are enabled. * Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp: (WebKit::WebFullScreenManager::supportsFullScreenForElement): (WebKit::WebFullScreenManager::supportsFullScreen): Deleted. * Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h: * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::supportsFullScreenForElement): Used Page::isFullscreenManagerEnabled() to check if it's possible to enter element fullscreen. * Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLifecycle.mm: (runTest): (TEST(Fullscreen, VideoLifecycle)): (TEST(Fullscreen, VideoLifecycleElementFullscreenDisabled)): Added an API test. Canonical link: https://commits.webkit.org/283033@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists
[webkit-changes] [WebKit/WebKit] 1ec3f8: Don't show fullscreen phishing alert when Fullscre...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1ec3f8ced15e3f486f363de9772f3571f942ffe1 https://github.com/WebKit/WebKit/commit/1ec3f8ced15e3f486f363de9772f3571f942ffe1 Author: Andy Estes Date: 2024-09-03 (Tue, 03 Sep 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm Log Message: --- Don't show fullscreen phishing alert when Fullscreen API is disabled https://bugs.webkit.org/show_bug.cgi?id=279035 rdar://129370027 Reviewed by Jer Noble. In clients where the Fullscreen API is disabled it is not possible to present arbitrary web content in fullscreen. However, if the VideoFullscreenRequiresElementFullscreen preference is enabled then it is possible to present a element in fullscreen with built-in WebKit media controls. In this configuration it is not valuable to present a phishing alert, so this change disables it. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController _showPhishingAlert]): Canonical link: https://commits.webkit.org/283105@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 63cdf5: Video is sometimes mispositioned in element fullsc...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 63cdf52be469766f2c633447803aa4ea1645af1d https://github.com/WebKit/WebKit/commit/63cdf52be469766f2c633447803aa4ea1645af1d Author: Andy Estes Date: 2024-09-04 (Wed, 04 Sep 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- Video is sometimes mispositioned in element fullscreen window https://bugs.webkit.org/show_bug.cgi?id=279102 rdar://135224530 Reviewed by Wenson Hsieh. In webkit.org/b/278842 we found that the client may sometimes synchronously modify WKWebView's _obscuredInsets when the web view is inserted in the element fullscreen window. 282915@main attempted to fix this but it was incomplete because, in addition to _obscuredInsets, the client may also modify the scroll view's contentInset and contentOffset. The result is similar to the issue seen in bug 278842: the video is mispositioned in the fullscreen window (and sometimes can be scrolled). This change follows up 282915@main with a more complete fix. Instead of resetting just _obscuredInsets and _unobscuredSafeAreaInsets after inserting the web view, we now just defer resetting all WKWebView and WKScrollView properties until after -insertSubview:atIndex: is called. Additionally, we reset all properties again right before changing fullscreenState to WKFullscreenStateEnteringFullscreen since the client may modify properties while we wait for a presentation update. At the point where fullscreenState changes to WKFullscreenStateEnteringFullscreen we expect the client to avoid modifying WKWebView and WKScrollView properties for the duration of the element fullscreen presentation. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController _enterFullScreen:windowScene:]): Canonical link: https://commits.webkit.org/283160@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 182944: Try to fix the watchOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 18294423ea1c6af88c2db378faa73e2d68647181 https://github.com/WebKit/WebKit/commit/18294423ea1c6af88c2db378faa73e2d68647181 Author: Andy Estes Date: 2024-09-04 (Wed, 04 Sep 2024) Changed paths: M Source/WebCore/platform/cocoa/VideoFullscreenCaptions.h M Source/WebCore/platform/cocoa/VideoFullscreenCaptions.mm Log Message: --- Try to fix the watchOS build https://bugs.webkit.org/show_bug.cgi?id=279141 rdar://135287534 Unreviewed build fix on watchOS. * Source/WebCore/platform/cocoa/VideoFullscreenCaptions.h: * Source/WebCore/platform/cocoa/VideoFullscreenCaptions.mm: Canonical link: https://commits.webkit.org/283178@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 87860a: [Cocoa] Support Now Playing presentation suppression
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 87860a9045503955d1996eca13501ceb7a864436 https://github.com/WebKit/WebKit/commit/87860a9045503955d1996eca13501ceb7a864436 Author: Andy Estes Date: 2024-09-06 (Fri, 06 Sep 2024) Changed paths: M Source/WebCore/Modules/webaudio/AudioContext.cpp M Source/WebCore/PAL/pal/spi/mac/MediaRemoteSPI.h M Source/WebCore/html/MediaElementSession.cpp M Source/WebCore/platform/NowPlayingManager.cpp M Source/WebCore/platform/NowPlayingManager.h M Source/WebCore/platform/audio/NowPlayingInfo.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm M Source/WebCore/platform/mac/MediaRemoteSoftLink.h M Source/WebCore/platform/mac/MediaRemoteSoftLink.mm M Source/WebKit/Scripts/process-entitlements.sh M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp Log Message: --- [Cocoa] Support Now Playing presentation suppression https://bugs.webkit.org/show_bug.cgi?id=279288 rdar://132115578 Reviewed by Eric Carlson. Taught MediaSessionManagerCocoa to suppress the presentation of Now Playing information for WebKit's presenting application when certain conditions are met (currently when video is playing). * Source/WebCore/Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::nowPlayingInfo const): Set isVideo to false. * Source/WebCore/PAL/pal/spi/mac/MediaRemoteSPI.h: Declared MRUIControllerProvider SPI. * Source/WebCore/html/MediaElementSession.cpp: (WebCore::MediaElementSession::computeNowPlayingInfo const): Set isVideo based on whether the media element is a . * Source/WebCore/platform/NowPlayingManager.cpp: (WebCore::NowPlayingManager::setNowPlayingInfo): (WebCore::NowPlayingManager::setNowPlayingInfoPrivate): Computed shouldUpdateNowPlayingSuppression and passed it to MediaSessionManagerCocoa. * Source/WebCore/platform/NowPlayingManager.h: * Source/WebCore/platform/audio/NowPlayingInfo.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::clearNowPlayingInfo): Stopped suppressing presentation when clearing Now Playing info. (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): Started or stopped suppressing presentation based on shouldUpdateNowPlayingSuppression. (WebCore::nowPlayingActivityController): (WebCore::MediaSessionManagerCocoa::updateNowPlayingSuppression): Added a helper to start/stop presentation. * Source/WebCore/platform/mac/MediaRemoteSoftLink.h: * Source/WebCore/platform/mac/MediaRemoteSoftLink.mm: Soft-linked MRUIControllerProvider. * Source/WebKit/Scripts/process-entitlements.sh: Added necessary entitlements to com.apple.WebKit.GPU. * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: Updated to serialize NowPlayingInfo::isVideo. * Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp: (WebKit::WebMediaStrategy::createNowPlayingManager const): Canonical link: https://commits.webkit.org/283290@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 13ff8b: Scrubbing and skipping back/forward should be disa...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 13ff8bb8fd293373a964e479b04e4120b690c5af https://github.com/WebKit/WebKit/commit/13ff8bb8fd293373a964e479b04e4120b690c5af Author: Andy Estes Date: 2024-09-10 (Tue, 10 Sep 2024) Changed paths: M Source/WebCore/Modules/modern-media-controls/controls/time-control.js M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css M Source/WebCore/Modules/modern-media-controls/media/media-controller.js M Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js M Source/WebCore/Modules/modern-media-controls/media/skip-forward-support.js M Source/WebCore/Modules/modern-media-controls/media/time-control-support.js Log Message: --- Scrubbing and skipping back/forward should be disabled in modern media controls when the host does not support seeking https://bugs.webkit.org/show_bug.cgi?id=279095 rdar://134959242 Reviewed by Eric Carlson. When MediaControlsHost does not support seeking, scrubbing and skip back/forward buttons should not be available in modern media controls. Scrubbing was already disabled when in in-window fullscreen, but this change makes scrubbing disabled elsewhere. This change also tweaks the appearance of a disabled scrubber in tvOS media controls. * Source/WebCore/Modules/modern-media-controls/controls/time-control.js: (TimeControl.): (TimeControl.prototype.set loading): (TimeControl.prototype.get supportsSeeking): (TimeControl.prototype.set supportsSeeking): * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css: (.media-controls.fullscreen.tvos .slider.default.disabled > .appearance > .fill > :is(.primary, .secondary)): * Source/WebCore/Modules/modern-media-controls/media/media-controller.js: (MediaController.prototype._updateControlsIfNeeded): * Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js: (SkipBackSupport.prototype.syncControl): (SkipBackSupport): * Source/WebCore/Modules/modern-media-controls/media/skip-forward-support.js: (SkipForwardSupport.prototype.syncControl): (SkipForwardSupport): * Source/WebCore/Modules/modern-media-controls/media/time-control-support.js: (TimeControlSupport.prototype.enable): Canonical link: https://commits.webkit.org/283402@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8aeda8: [visionOS] LinearMediaPlayer does not display vide...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8aeda8855e282db5d8c1b0f047a4cfb7fb0dc53d https://github.com/WebKit/WebKit/commit/8aeda8855e282db5d8c1b0f047a4cfb7fb0dc53d Author: Andy Estes Date: 2024-04-10 (Wed, 10 Apr 2024) Changed paths: M Source/WTF/wtf/Forward.h M Source/WebCore/Headers.cmake M Source/WebCore/Modules/mediasession/MediaSession.cpp M Source/WebCore/Modules/webaudio/AudioContext.cpp M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/html/MediaElementSession.cpp M Source/WebCore/platform/MediaStrategy.h M Source/WebCore/platform/NowPlayingManager.cpp M Source/WebCore/platform/audio/NowPlayingInfo.h A Source/WebCore/platform/audio/NowPlayingMetadataObserver.h M Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp M Source/WebCore/platform/audio/PlatformMediaSessionManager.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm M Source/WebCore/platform/audio/glib/MediaSessionGLib.cpp M Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.cpp M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/cocoa/VideoPresentationModel.h M Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.h M Source/WebCore/platform/ios/PlaybackSessionInterfaceIOS.mm M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/Scripts/webkit/messages.py M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h M Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/WebPageProxy.messages.in M Source/WebKit/UIProcess/mac/WebViewImpl.mm M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaTypes.h M Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebPage/WebPage.messages.in M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebKitCocoa/NowPlayingMetadataObserver.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/large-video-test-now-playing.html Log Message: --- [visionOS] LinearMediaPlayer does not display video title and artwork https://bugs.webkit.org/show_bug.cgi?id=272348 rdar://124234028 Reviewed by Eric Carlson. Taught PlaybackSessionInterfaceLMK to set ContentMetadata on its LinearMediaPlayer consisting of the title, subtitle, and artwork vended to Now Playing. Since Now Playing metadata can change arbitrarily after entering fullscreen, this requried adding a mechanism to observe changes to Now Playing. Added a WeakHashSet of NowPlayingMetadataObservers to PlatformMediaSessionManager and taught WebPage to add itself as an observer when requested by its proxy. These observers are called by MediaSessionManagerCocoa when m_nowPlayingInfo's metadata changes. To make this easier, metadata (title, artist, album, artwork, and sourceApplicationIdentifier) was broken out into its own struct named NowPlayingMetadata. Also added a WeakHashSet of NowPlayingMetadataObservers to WebPageProxy. When the first observer is added, WebPageProxy asks WebPage to add itself as an observer of PlatformMediaSessionManager and send a message to WebPageProxy when the observer is called. PlaybackSessionInterfaceLMK adds itself as a WebPageProxy observer when entering fullscreen. WKWebViewTesting also adds itself as an observer to support API testing. Added API tests. * Source/WTF/wtf/Forward.h: * Source/WebCore/Headers.cmake: * Source/WebCore/Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::updateNowPlayingInfo): * Source/WebCore/Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::nowPlayingInfo const): * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/HTMLMediaElement.cpp: * Source/WebCore/html/MediaElementSession.cpp: (WebCore::MediaElementSession::computeNowPlayingInfo const): * Source/WebCore/platform/MediaStrategy.h: * Source/WebCore/platform/NowPlayingManager.cpp: (WebCore::NowPlayingManager::setNowPlayingInfo): (WebCore::Now
[webkit-changes] [WebKit/WebKit] 00b7ba: [visionOS] VideoPresentationInterfaceLMK should wa...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0 https://github.com/WebKit/WebKit/commit/00b7ba0d3ee7641375c85bb15dd0d4f83af2cba0 Author: Andy Estes Date: 2024-04-11 (Thu, 11 Apr 2024) Changed paths: M Source/WebKit/Configurations/WebKitSwift.xcconfig M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift M Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h Log Message: --- [visionOS] VideoPresentationInterfaceLMK should wait for LinearMeditKit scene swap before calling present/dismiss fullscreen completion handlers https://bugs.webkit.org/show_bug.cgi?id=272547 rdar://126296224 Reviewed by Jer Noble. Previously, VideoPresentationInterfaceLMK would call the completion handlers passed to presentFullscreen() and dismissFullscreen() immediately, resulting in WebKit believing it was (or was not) in fullscreen presentation mode prior to the fullscreen scene swap actually occurring. This prevents us from addressing several polish items with the current fullscreen transition, such as deferring AVSampleBufferDisplayLayer and element fullscreen teardown until the WKWebView is no longer visible. Addressed this by teaching LinearMediaPlayer to store the callbacks passed to VideoPresentationInterfaceLMK, calling them when LinearMediaKit calls didCompleteEnterFullscreen and didCompleteExitFullscreen. While here, to aid future debugging, added extra logging and disabled Swift optimizations in libWebKitSwift when building the Debug configuration. * Source/WebKit/Configurations/WebKitSwift.xcconfig: * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::presentFullscreen): (WebKit::VideoPresentationInterfaceLMK::dismissFullscreen): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionModelContext::setVideoReceiverEndpoint): * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: (WKSLinearMediaPlayer.enterFullscreenCompletionHandler): (WKSLinearMediaPlayer.exitFullscreenCompletionHandler): (WKSLinearMediaPlayer.enterFullscreen(_:(any Error)?) -> Void:)): (WKSLinearMediaPlayer.exitFullscreen(_:(any Error)?) -> Void:)): (WKSLinearMediaPlayer.presentationStateChanged(_:)): (WKSLinearMediaPlayer.toggleInlineMode): (WKSLinearMediaPlayer.willEnterFullscreen): (WKSLinearMediaPlayer.didCompleteEnterFullscreen(_:any:)): (WKSLinearMediaPlayer.willExitFullscreen): (WKSLinearMediaPlayer.didCompleteExitFullscreen(_:any:)): (WKSLinearMediaPlayer.makeDefaultEntity): (WKSLinearMediaPlayer.setVideoReceiverEndpoint(_:)): (WKSLinearMediaPlayer.enterFullscreen): Deleted. (WKSLinearMediaPlayer.exitFullscreen): Deleted. (WKSLinearMediaPlayer.didCompleteEnterFullscreen(_:Error:)): Deleted. (WKSLinearMediaPlayer.didCompleteExitFullscreen(_:Error:)): Deleted. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift: (WKSLinearMediaPresentationState.description): * Source/WebKit/WebKitSwift/LinearMediaKit/WKSLinearMediaPlayer.h: Canonical link: https://commits.webkit.org/277410@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e7b541: MediaPlayerPrivateMediaSourceAVFObjC improperly ch...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e7b541d849f77d0541d2092e50348b2f4245ff49 https://github.com/WebKit/WebKit/commit/e7b541d849f77d0541d2092e50348b2f4245ff49 Author: Andy Estes Date: 2024-04-13 (Sat, 13 Apr 2024) Changed paths: M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm Log Message: --- MediaPlayerPrivateMediaSourceAVFObjC improperly checks m_sampleBufferDisplayLayer to determine if there is a video renderer https://bugs.webkit.org/show_bug.cgi?id=272608 rdar://126379884 Reviewed by Eric Carlson. Several places in MediaPlayerPrivateMediaSourceAVFObjC improperly checked for the existence of m_sampleBufferDisplayLayer to determine if there was a video renderer. This could lead to the video renderer being torn down unnecessarily or a failure to copy the renderer's displayed pixel buffer. Addressed this by replacing the uses of m_sampleBufferDisplayLayer with sampleBufferVideoRenderer(), which returns either m_sampleBufferDisplayLayer or m_sampleBufferVideoRenderer (when rendering to a video receiver endpoint). * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setPresentationSize): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoLayerSizeFenced): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playerContentBoxRectChanged): Canonical link: https://commits.webkit.org/277459@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d9472a: Safari crashes in WebKit::PlaybackSessionInterface...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d9472aba9b6f874b125297eaa5bd5d2dc806ada6 https://github.com/WebKit/WebKit/commit/d9472aba9b6f874b125297eaa5bd5d2dc806ada6 Author: Andy Estes Date: 2024-04-16 (Tue, 16 Apr 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml Log Message: --- Safari crashes in WebKit::PlaybackSessionInterfaceLMK::seekableRangesChanged on visionOS Simulator https://bugs.webkit.org/show_bug.cgi?id=272714 rdar://126230504 Reviewed by Richard Robinson. Since WebKitSwift is currently not available in visionOS Simulator, disable the LinearMediaPlayer feature on that platform. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Canonical link: https://commits.webkit.org/277558@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 53d281: [visionOS] In element fullscreen, docking button i...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 53d281251bd77fa76c1953624eff78161e24d2ba https://github.com/WebKit/WebKit/commit/53d281251bd77fa76c1953624eff78161e24d2ba Author: Andy Estes Date: 2024-04-17 (Wed, 17 Apr 2024) Changed paths: M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm Log Message: --- [visionOS] In element fullscreen, docking button is smaller and darker than other buttons https://bugs.webkit.org/show_bug.cgi?id=272793 rdar://126591472 Reviewed by Eric Carlson. In WKFullScreenViewController we were creating WKExtrinsicButtons that were 4pts larger than the standard button size on visionOS (44x44). We were also specifying a `baseBackgroundColor` that made our buttons appear lighter than other standard controls. Removed these differences so that our fullscreen controls match the size/style of the docking button. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController loadView]): Canonical link: https://commits.webkit.org/277624@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 00dc98: [visionOS] Add more logging to LinearMediaPlayer
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 00dc98158062cb0aa544da816c30ecb44f0a4422 https://github.com/WebKit/WebKit/commit/00dc98158062cb0aa544da816c30ecb44f0a4422 Author: Andy Estes Date: 2024-04-19 (Fri, 19 Apr 2024) Changed paths: M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift Log Message: --- [visionOS] Add more logging to LinearMediaPlayer https://bugs.webkit.org/show_bug.cgi?id=272999 rdar://126763295 Reviewed by Eric Carlson. Added log messages to Playable entry points in LinearMediaPlayer. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: (WKSLinearMediaPlayer.makeViewController): (WKSLinearMediaPlayer.play): (WKSLinearMediaPlayer.pause): (WKSLinearMediaPlayer.togglePlayback): (WKSLinearMediaPlayer.setPlaybackRate(_:)): (WKSLinearMediaPlayer.seek(to:)): (WKSLinearMediaPlayer.seek(_:)): (WKSLinearMediaPlayer.seek(to:from:metadata:)): (WKSLinearMediaPlayer.completeTrimming(_:)): (WKSLinearMediaPlayer.updateStartTime(_:)): (WKSLinearMediaPlayer.updateEndTime(_:)): (WKSLinearMediaPlayer.beginEditingVolume): (WKSLinearMediaPlayer.endEditingVolume): (WKSLinearMediaPlayer.setAudioTrack(_:)): (WKSLinearMediaPlayer.setLegibleTrack(_:)): (WKSLinearMediaPlayer.skipActiveInterstitial): (WKSLinearMediaPlayer.setCaptionContentInsets(_:)): (WKSLinearMediaPlayer.updateVideoBounds(_:)): (WKSLinearMediaPlayer.updateViewingMode(_:)): (WKSLinearMediaPlayer.togglePip): (WKSLinearMediaPlayer.setTimeResolverInterval(_:)): (WKSLinearMediaPlayer.setTimeResolverResolution(_:)): (WKSLinearMediaPlayer.setThumbnailSize(_:)): (WKSLinearMediaPlayer.seekThumbnail(to:)): (WKSLinearMediaPlayer.beginScrubbing): (WKSLinearMediaPlayer.endScrubbing): (WKSLinearMediaPlayer.beginScanningForward): (WKSLinearMediaPlayer.endScanningForward): (WKSLinearMediaPlayer.beginScanningBackward): (WKSLinearMediaPlayer.endScanningBackward): (WKSLinearMediaPlayer.setVolume(_:)): (WKSLinearMediaPlayer.setIsMuted(_:)): (WKSLinearMediaPlayer.setVideoReceiverEndpoint(_:)): * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaTypes.swift: (WKSLinearMediaViewingMode.description): Canonical link: https://commits.webkit.org/277761@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4fb782: [visionOS] When transitioning from video fullscree...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4fb78297f66382824d32daea416bcdccc940a801 https://github.com/WebKit/WebKit/commit/4fb78297f66382824d32daea416bcdccc940a801 Author: Andy Estes Date: 2024-04-23 (Tue, 23 Apr 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm Log Message: --- [visionOS] When transitioning from video fullscreen to element fullscreen, the element fullscreen window is not frontmost https://bugs.webkit.org/show_bug.cgi?id=273100 rdar://126642251 Reviewed by Wenson Hsieh and Aditya Keerthi. When entering video fullscreen LinearMediaKit changes the client scene's windows' transform3D, then fails to restore them to their original values when exiting fullscreen. As a result, the element fullscreen window may no longer be frontmost when exiting back to element fullscreen. This issue was originally worked around in 277031@main by exiting element fullscreen when entering video fullscreen, but this was suboptimal since users expect to return to element fullscreen if that's the state they were in when entering video fullscreen. This change improves the workaround by instead restoring the expected transform3Ds on both the element fullscreen window and WKWebView's window when exiting video fullscreen. Note that this change also removes dead code in -[WKContentViewInteraction _did(Enter|Exit)Fullscreen] so that hooking up PageClientImpl::did(Enter|Exit)Fullscreen does not cause an unintended behavior change. * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::setVideoReceiverEndpoint): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didEnterFullscreen): (WebKit::WebPageProxy::didExitFullscreen): * Source/WebKit/UIProcess/ios/PageClientImplIOS.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didExitFullscreen): (WebKit::PageClientImpl::didEnterFullscreen): Deleted. * Source/WebKit/UIProcess/ios/WKContentViewInteraction.h: * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _didEnterFullscreen]): Deleted. (-[WKContentView _didExitFullscreen]): Deleted. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController didExitFullscreen]): Canonical link: https://commits.webkit.org/277877@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f11489: [visionOS] video goes blank and audio pauses when ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f114890c78b5bb1de5d09d133a3b702618d02a06 https://github.com/WebKit/WebKit/commit/f114890c78b5bb1de5d09d133a3b702618d02a06 Author: Andy Estes Date: 2024-04-26 (Fri, 26 Apr 2024) Changed paths: M LayoutTests/platform/mac/TestExpectations M Source/WebCore/html/HTMLVideoElement.cpp M Source/WebCore/platform/graphics/MediaPlayer.cpp M Source/WebCore/platform/graphics/MediaPlayer.h M Source/WebCore/platform/graphics/MediaPlayerPrivate.h M Source/WebCore/platform/graphics/SourceBufferPrivate.cpp M Source/WebCore/platform/graphics/SourceBufferPrivate.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/WebSampleBufferVideoRendering.h M Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.h M Source/WebCore/platform/ios/VideoPresentationInterfaceAVKit.mm M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.h M Source/WebCore/platform/ios/VideoPresentationInterfaceIOS.mm M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.h M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h Log Message: --- [visionOS] video goes blank and audio pauses when transitioning to LinearMediaKit fullscreen https://bugs.webkit.org/show_bug.cgi?id=273171 rdar://125647233 Reviewed by Jer Noble. When transitioning to LinearMediaKit fullscreen, two issues cause the video to pause and show a black frame in the WKWebView: 1. VideoPresentationInterfaceIOS moves the video view from the web view to a new WebAVPlayerView, even though this view is not used by LMPlayableViewController. 2. When MediaPlayerPrivateMediaSourceAVFObjC switches from an AVSampleBufferDisplayLayer to an AVSampleBufferVideoRenderer, it flushes the display layer and sets the synchronizer's rate to 0 until the video render has an available frame. Resolved (1) by keeping the video view in the WKWebView's hierarchy when VideoPresentationInterfaceLMK is in use. This is OK since LMPLayableViewController will render to an entity rather than a layer. Resolved (2) by teaching MediaPlayerPrivateMediaSourceAVFObjC to stage the transition from AVSampleBufferDisplayLayer to AVSampleBufferVideoRenderer (and vice versa). When a video receiver endpoint is received an AVSampleBufferVideoRenderer is created, but the existing AVSampleBufferDisplayLayer is kept alive. It isn't flushed, so it continues to render samples that have been previously enqueued. Simultaneously, samples for the current time are enqueued to the AVSampleBufferVideoRenderer, and only once the video render has an available frame the display layer is destroyed. The synchronizer remains playing during this transition. A similar staged transition occurs when switching back from a video renderer to a display layer. * Source/WebCore/html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::didEnterFullscreenOrPictureInPicture): (WebCore::HTMLVideoElement::didExitFullscreenOrPictureInPicture): * Source/WebCore/platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::setInFullscreenOrPictureInPicture): (WebCore::MediaPlayer::isInFullscreenOrPictureInPicture const): * Source/WebCore/platform/graphics/MediaPlayer.h: * Source/WebCore/platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::isInFullscreenOrPictureInPictureChanged): * Source/WebCore/platform/graphics/SourceBufferPrivate.cpp: (WebCore::SourceBufferPrivate::reenqueSamples): (WebCore::SourceBufferPrivate::reenqueueMediaForTime): * Source/WebCore/platform/graphics/SourceBufferPrivate.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::shouldEnsureLayerOrVideoRenderer const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setPresentationSize): (WebCore::MediaPlayerPrivateMed
[webkit-changes] [WebKit/WebKit] a480da: REGRESSION (278032@main): Video does not render in...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a480da7fbd31f6bdde5b06706bb3dd11b7bca5ee https://github.com/WebKit/WebKit/commit/a480da7fbd31f6bdde5b06706bb3dd11b7bca5ee Author: Andy Estes Date: 2024-04-26 (Fri, 26 Apr 2024) Changed paths: M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm Log Message: --- REGRESSION (278032@main): Video does not render in element fullscreen after exiting LinearMediaKit fullscreen https://bugs.webkit.org/show_bug.cgi?id=273334 rdar://127125039 Reviewed by Jer Noble. While attempting to address a test failure before landing 278032@main I added two early returns that ended up not being necessary to fix the test, but did cause a regression where we never set a staged AVSampleBufferDisplayLayer on MediaSourcePrivateAVFObjC when returning from LinearMediaKit fullscreen. Resolved this by removing the unnecessary early returns. * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayerOrVideoRenderer): Canonical link: https://commits.webkit.org/278050@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 44488b: [visionOS] After returning to element fullscreen f...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 44488b037c9b367b57bd00943194c42b46c20eee https://github.com/WebKit/WebKit/commit/44488b037c9b367b57bd00943194c42b46c20eee Author: Andy Estes Date: 2024-04-28 (Sun, 28 Apr 2024) Changed paths: M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm M Source/WebKit/UIProcess/PageClient.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm M Source/WebKit/UIProcess/mac/PageClientImplMac.h Log Message: --- [visionOS] After returning to element fullscreen from LMK fullscreen, unable to re-enter LMK fullscreen https://bugs.webkit.org/show_bug.cgi?id=273344 rdar://127137182 Reviewed by Eric Carlson. When exiting LinearMediaKit fullscreen the VideoPresentationInterfaceLMK and its LMPlayableViewController are destroyed, but WKFullScreenViewController still has a reference to a UIView created by the LMPlayableViewController. Since the LMPlayableViewController and its Playable-conforming delegate no longer exist, the view has no delegate to notify when the user interacts with it. This results in an inability to re-enter LinearMediaKit fullscreen after previously exiting from it to element fullscreen. Resolved this by plumbing a "didCleanupFullscreen" call from VideoPresentationInterfaceIOS to WKFullScreenViewController. When this method is called and the VC is still in fullscreen mode, WKFullScreenViewController is told to remove the old _environmentPickerButtonView and create a new one (which will re-ensure a VideoPresentationInterfaceLMK and LMPlayableViewController). * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationManagerProxy::didCleanupFullscreen): * Source/WebKit/UIProcess/PageClient.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCleanupFullscreen): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.h: * Source/WebKit/UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didCleanupFullscreen): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController videoControlsManagerDidChange]): (-[WKFullScreenViewController configureEnvironmentPickerButtonView]): (-[WKFullScreenViewController _configureEnvironmentPickerButtonViewWithPlayableViewController:]): Deleted. * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: (-[WKFullScreenWindowController didCleanupFullscreen]): * Source/WebKit/UIProcess/mac/PageClientImplMac.h: Canonical link: https://commits.webkit.org/278089@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d6c40d: [visionOS] AVPlayerLayer goes blank when transitio...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d6c40da0535c2a51f51a07747750b4bdc101a28b https://github.com/WebKit/WebKit/commit/d6c40da0535c2a51f51a07747750b4bdc101a28b Author: Andy Estes Date: 2024-04-28 (Sun, 28 Apr 2024) Changed paths: M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm Log Message: --- [visionOS] AVPlayerLayer goes blank when transitioning to LinearMediaKit fullscreen https://bugs.webkit.org/show_bug.cgi?id=273373 rdar://127199127 Reviewed by Jer Noble. When transitioning to LinearMediaKit fullscreen during AVPlayer-based playback, MediaPlayerPrivateAVFoundationObjC would immediately remove the AVPlayer from its AVPlayerLayer, causing the layer to go blank. Resolved this by deferring removal of the AVPlayer until the fullscreen transition completes. Conversely, deferred removing the FigVideoTarget from the AVPlayer until the transition back to inline completes. * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoReceiverEndpoint): (WebCore::MediaPlayerPrivateAVFoundationObjC::isInFullscreenOrPictureInPictureChanged): (WebCore::MediaPlayerPrivateAVFoundationObjC::clearVideoReceiverEndpoint): Deleted. Canonical link: https://commits.webkit.org/278092@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] feff12: Try to fix the tvOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: feff12fdb0690b8bcf2acd9d82874771bd81f2ca https://github.com/WebKit/WebKit/commit/feff12fdb0690b8bcf2acd9d82874771bd81f2ca Author: Andy Estes Date: 2024-05-14 (Tue, 14 May 2024) Changed paths: M Source/WebKit/Scripts/webkit/messages.py Log Message: --- Try to fix the tvOS build https://bugs.webkit.org/show_bug.cgi?id=274187 rdar://128094408 Unreviewed build fix; added conditionals for RemoteMediaSourceIdentifier and RemoteSourceBufferIdentifier. * Source/WebKit/Scripts/webkit/messages.py: (conditions_for_header): Canonical link: https://commits.webkit.org/278783@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8877df: Unreviewed test gardening
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8877dfad91944c8ac84a7f3fda415c676a42428e https://github.com/WebKit/WebKit/commit/8877dfad91944c8ac84a7f3fda415c676a42428e Author: Andy Estes Date: 2024-05-14 (Tue, 14 May 2024) Changed paths: M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp Log Message: --- Unreviewed test gardening https://bugs.webkit.org/show_bug.cgi?id=274191 rdar://128099160 Unreviewed test gardening after 278783@main. * Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp: (IPC::serializedIdentifiers): Canonical link: https://commits.webkit.org/278789@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 48e9bd: [tvOS] Enable VIDEO_USES_ELEMENT_FULLSCREEN
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 48e9bdaead6e7216bc336b7a9868051bf7726aa6 https://github.com/WebKit/WebKit/commit/48e9bdaead6e7216bc336b7a9868051bf7726aa6 Author: Andy Estes Date: 2024-05-17 (Fri, 17 May 2024) Changed paths: M Source/WTF/wtf/PlatformEnableCocoa.h M Source/WebKit/Shared/WebPreferencesDefaultValues.cpp Log Message: --- [tvOS] Enable VIDEO_USES_ELEMENT_FULLSCREEN https://bugs.webkit.org/show_bug.cgi?id=274338 rdar://128296269 Reviewed by Eric Carlson. Set ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN to 1 on tvOS and updated defaultVideoFullscreenRequiresElementFullscreen. * Source/WTF/wtf/PlatformEnableCocoa.h: * Source/WebKit/Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultVideoFullscreenRequiresElementFullscreen): Canonical link: https://commits.webkit.org/278943@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 9e43b2: [tvOS] Implement basic element fullscreen controls
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9e43b27a6881878ab23c48f21c64d21610841405 https://github.com/WebKit/WebKit/commit/9e43b27a6881878ab23c48f21c64d21610841405 Author: Andy Estes Date: 2024-05-24 (Fri, 24 May 2024) Changed paths: M Source/WTF/wtf/PlatformEnableCocoa.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullscreenStackView.h M Source/WebKit/UIProcess/ios/fullscreen/WKFullscreenStackView.mm Log Message: --- [tvOS] Implement basic element fullscreen controls https://bugs.webkit.org/show_bug.cgi?id=274613 rdar://128637048 Reviewed by Eric Carlson. Disabled fullscreen dismissal gestures (for now) on tvOS and added a single cancel button to dismiss element fullscreen. * Source/WTF/wtf/PlatformEnableCocoa.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController loadView]): * Source/WebKit/UIProcess/ios/fullscreen/WKFullscreenStackView.h: * Source/WebKit/UIProcess/ios/fullscreen/WKFullscreenStackView.mm: (-[WKFullscreenStackView init]): (-[WKFullscreenStackView addArrangedSubviewForTV:]): Deleted. Canonical link: https://commits.webkit.org/279276@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c6e0e4: [tvOS] Add media controls layout traits
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c6e0e47ee91911726266cdc8c2f2623562e650af https://github.com/WebKit/WebKit/commit/c6e0e47ee91911726266cdc8c2f2623562e650af Author: Andy Estes Date: 2024-05-26 (Sun, 26 May 2024) Changed paths: M Source/WebCore/DerivedSources-input.xcfilelist M Source/WebCore/DerivedSources.make M Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp A Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js M Source/WebCore/WebCore.xcodeproj/project.pbxproj Log Message: --- [tvOS] Add media controls layout traits https://bugs.webkit.org/show_bug.cgi?id=274724 rdar://128748660 Reviewed by Jer Noble. Added layout traits for media controls on tvOS, which for now are based on iOS inline media controls. * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp: (WebCore::MediaControlsHost::layoutTraitsClassName const): * Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js: Added. (TVOSLayoutTraits.prototype.mediaControlsClass): (TVOSLayoutTraits.prototype.overridenSupportingObjectClasses): (TVOSLayoutTraits.prototype.resourceDirectory): (TVOSLayoutTraits.prototype.controlsNeverAvailable): (TVOSLayoutTraits.prototype.supportsIconWithFullscreenVariant): (TVOSLayoutTraits.prototype.supportsDurationTimeLabel): (TVOSLayoutTraits.prototype.supportsAirPlay): (TVOSLayoutTraits.prototype.supportsPiP): (TVOSLayoutTraits.prototype.controlsDependOnPageScaleFactor): (TVOSLayoutTraits.prototype.skipDuration): (TVOSLayoutTraits.prototype.promoteSubMenusWhenShowingMediaControlsContextMenu): (TVOSLayoutTraits.prototype.inheritsBorderRadius): (TVOSLayoutTraits.prototype.toString): (TVOSLayoutTraits): * Source/WebCore/WebCore.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/279331@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ade27f: Try to fix the visionOS build
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ade27f1d72267d4fdc08599f0179817e40223e15 https://github.com/WebKit/WebKit/commit/ade27f1d72267d4fdc08599f0179817e40223e15 Author: Andy Estes Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerManagerProxyCocoa.mm Log Message: --- Try to fix the visionOS build https://bugs.webkit.org/show_bug.cgi?id=274787 rdar://128876348 Unreviewed build fix after 279382@main. * Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerManagerProxyCocoa.mm: (WebKit::RemoteMediaPlayerManagerProxy::handleVideoReceiverEndpointMessage): Canonical link: https://commits.webkit.org/279389@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4eb589: [tvOS] Start button incorrectly shown when enterin...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4eb5890b06fef636c92e25930b303010b12184f6 https://github.com/WebKit/WebKit/commit/4eb5890b06fef636c92e25930b303010b12184f6 Author: Andy Estes Date: 2024-06-01 (Sat, 01 Jun 2024) Changed paths: M Source/WebCore/html/HTMLMediaElement.cpp Log Message: --- [tvOS] Start button incorrectly shown when entering fullscreen https://bugs.webkit.org/show_bug.cgi?id=275021 rdar://129115814 Reviewed by Eric Carlson. When in video fullscreen via element fullscreen, HTMLMediaElement::shouldForceControlsDisplay() would return true. This causes media controls to show a start button even though the media is already playing. Resolved this by modifying HTMLMediaElement::shouldForceControlsDisplay() to return false when in video fullscreen via element fullscreen. Note that HTMLMediaElement::configureMediaControls() will already enable media controls when in video fullscreen via element fullscreen; we just don't want to *force* controls, which is akin to showing the start button on iOS-family platforms. No new tests; covered by an existing test (media/modern-media-controls/start-support/start-support-fullscreen.html). * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::shouldForceControlsDisplay const): Canonical link: https://commits.webkit.org/279622@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 121771: [tvOS] Refine media controls when in fullscreen
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1217711604d0b1da3b6842d58b54f66f43355aa1 https://github.com/WebKit/WebKit/commit/1217711604d0b1da3b6842d58b54f66f43355aa1 Author: Andy Estes Date: 2024-06-05 (Wed, 05 Jun 2024) Changed paths: M Source/WebCore/DerivedSources-input.xcfilelist M Source/WebCore/DerivedSources.make M Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js A Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css A Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/html/HTMLMediaElement.cpp Log Message: --- [tvOS] Refine media controls when in fullscreen https://bugs.webkit.org/show_bug.cgi?id=275166 rdar://129291317 Reviewed by Eric Carlson. Added TVOSMediaControls to be used when in fullscreen; IOSInlineMediaControls is still used for inline controls. For now, TVOSMediaControls renders a start/stop button and 10-second back/forward buttons in a centered controls bar. Also reverted the change made in 279622@main. While that was necessary to avoid showing a start button when using IOSInlineMediaControls in fullscreen, it resulted in TVOSMediaControls never becoming visible in fullscreen. * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js: (TVOSLayoutTraits.prototype.mediaControlsClass): * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css: Added. (.media-controls.fullscreen): (.media-controls.fullscreen.faded): (.media-controls.fullscreen > .controls-bar.center): * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js: Added. (TVOSMediaControls.prototype.layout): (TVOSMediaControls.prototype._centerContainerButtons): (TVOSMediaControls): * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::shouldForceControlsDisplay const): Canonical link: https://commits.webkit.org/279761@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 9bd6e6: [LinearMediaPlayer] Video should fast seek in resp...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9bd6e662ad46b25ae09fc4643a6e9366293f5c20 https://github.com/WebKit/WebKit/commit/9bd6e662ad46b25ae09fc4643a6e9366293f5c20 Author: Andy Estes Date: 2024-06-07 (Fri, 07 Jun 2024) Changed paths: M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm Log Message: --- [LinearMediaPlayer] Video should fast seek in response to scrubbing https://bugs.webkit.org/show_bug.cgi?id=275277 rdar://129418990 Reviewed by Jer Noble. LinearMediaKit only dispatches seek(to:from:metadata:) once at the end of a scrub, which means that the video content is not updated in real-time during the scrubbing event. However, seekThumbnail(to:) *is* dispatched in real-time while scrubbing. While the intent of this method is to update the contents of our Playable object's thumbnailLayerPublisher, since we don't currently support thumbnail layers we can use this method to fast seek the video content instead. The result of this change is that scrubbing in LinearMediaPlayer works like it does in modern-media-controls, where video content updates to keyframes in real-time as the user scrubs. * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (-[WKLinearMediaPlayerDelegate linearMediaPlayer:seekThumbnailToTime:]): Canonical link: https://commits.webkit.org/279840@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d8e8c9: [LinearMediaPlayer] Disallow LMK fullscreen for me...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d8e8c92dd2f4acf36a04a258f30b745c9a67ed25 https://github.com/WebKit/WebKit/commit/d8e8c92dd2f4acf36a04a258f30b745c9a67ed25 Author: Andy Estes Date: 2024-06-13 (Thu, 13 Jun 2024) Changed paths: M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/page/ChromeClient.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/graphics/MediaPlayer.cpp M Source/WebCore/platform/graphics/MediaPlayer.h M Source/WebCore/platform/graphics/MediaPlayerPrivate.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm Log Message: --- [LinearMediaPlayer] Disallow LMK fullscreen for media engines that don't support entity rendering https://bugs.webkit.org/show_bug.cgi?id=275416 rdar://126329588 Reviewed by Jean-Yves Avenard. LinearMediaPlayer requires a video element's media engine to support rendering to a FigVideoTarget, but not all media engines used on visionOS support this rendering mode. Notably the WebM and MediaStream engines do not, so no video is rendered when entering LinearMediaPlayer fullscreen for a video element using one of these engines. While these engines can and ultimately should support FigVideoTarget rendering, since they currently do not we should disable LinearMediaPlayer fullscreen in these cases and fall back to a supported fullscreen interface (either element fullscreen or AVKit fullscreen). To enable this fallback, MediaPlayer can now tell clients whether its current media engine supports LinearMediaPlayer, and this influences the return value of HTMLMediaElement::videoUsesElementFullscreen. It is also set on the media element's PlaybackSessionModel, and WKFullscreenViewController uses this value to determine whether to show an environment picker button in element fullscreen. * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::mediaEngineWasUpdated): (WebCore::HTMLMediaElement::videoUsesElementFullscreen const): * Source/WebCore/page/ChromeClient.h: (WebCore::ChromeClient::mediaEngineChanged): (WebCore::ChromeClient::playbackControlsMediaEngineChanged): Deleted. * Source/WebCore/page/Page.cpp: (WebCore::Page::mediaEngineChanged): (WebCore::Page::playbackControlsMediaEngineChanged): Deleted. * Source/WebCore/page/Page.h: * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: (WebCore::PlaybackSessionModel::supportsLinearMediaPlayer const): (WebCore::PlaybackSessionModelClient::supportsLinearMediaPlayerChanged): * Source/WebCore/platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::supportsLinearMediaPlayer const): * Source/WebCore/platform/graphics/MediaPlayer.h: * Source/WebCore/platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::supportsLinearMediaPlayer const): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (WebKit::PlaybackSessionInterfaceLMK::supportsLinearMediaPlayerChanged): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionModelContext::supportsLinearMediaPlayerChanged): (WebKit::PlaybackSessionManagerProxy::supportsLinearMediaPlayerChanged): (WebKit::PlaybackSessionManagerProxy::updateVideoControlsManager): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController configureEnvironmentPickerButtonView]): (-[WKFullScreenViewController _removeEnvironmentPickerButtonView]): * Sourc
[webkit-changes] [WebKit/WebKit] 62a896: Relax privacy for some log messages in LinearMedia...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 62a8966b7a0e6ce0a0c19938c0504c08922bdf54 https://github.com/WebKit/WebKit/commit/62a8966b7a0e6ce0a0c19938c0504c08922bdf54 Author: Andy Estes Date: 2024-06-14 (Fri, 14 Jun 2024) Changed paths: M Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift Log Message: --- Relax privacy for some log messages in LinearMediaPlayer https://bugs.webkit.org/show_bug.cgi?id=275505 rdar://129866471 Reviewed by Geoffrey Garen. For log strings that do not reveal privacy-sensitive information, mark them as publibly visible to make bug reports more actionable. * Source/WebKit/WebKitSwift/LinearMediaKit/LinearMediaPlayer.swift: (WKSLinearMediaPlayer.presentationStateChanged(_:)): (WKSLinearMediaPlayer.setCaptionContentInsets(_:)): (WKSLinearMediaPlayer.updateVideoBounds(_:)): (WKSLinearMediaPlayer.toggleInlineMode): (WKSLinearMediaPlayer.willEnterFullscreen): (WKSLinearMediaPlayer.willExitFullscreen): (WKSLinearMediaPlayer.setThumbnailSize(_:)): Canonical link: https://commits.webkit.org/280035@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a30ecd: [tvOS] Enable HAVE(FAIRPLAYSTREAMING_MTPS_INITDATA)
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a30ecd1873aaab7482b4c00c165f9ceed7c9674d https://github.com/WebKit/WebKit/commit/a30ecd1873aaab7482b4c00c165f9ceed7c9674d Author: Andy Estes Date: 2024-06-17 (Mon, 17 Jun 2024) Changed paths: M Source/WTF/wtf/PlatformHave.h Log Message: --- [tvOS] Enable HAVE(FAIRPLAYSTREAMING_MTPS_INITDATA) https://bugs.webkit.org/show_bug.cgi?id=275572 rdar://129374115 Reviewed by Aditya Keerthi. The TransportStreamEncryptionInitData format description extension was made available on tvOS at the same time it was on iOS, but our definition of HAVE_FAIRPLAYSTREAMING_MTPS_INITDATA did not reflect that. Addressed the oversight. * Source/WTF/wtf/PlatformHave.h: Canonical link: https://commits.webkit.org/280087@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 869e39: [visionOS] Unable to enter LinearMediaPlayer fulls...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 869e39dfdda8b30eb808eb5b53bec83cdb6c3bd3 https://github.com/WebKit/WebKit/commit/869e39dfdda8b30eb808eb5b53bec83cdb6c3bd3 Author: Andy Estes Date: 2024-06-17 (Mon, 17 Jun 2024) Changed paths: M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp Log Message: --- [visionOS] Unable to enter LinearMediaPlayer fullscreen when playing a WebM video https://bugs.webkit.org/show_bug.cgi?id=275253 rdar://125204360 Reviewed by Jer Noble. Original patch by Jean-Yves Avenard . Implemented support for rendering to an AVSampleBufferVideoRenderer backed by a FigVideoTargetRef by copying MediaPlayerPrivateMediaSourceAVFObjC's implementation. While here, cherry-picked work related to spatial tracking labels (274873@main) and aspect ratio preservation (270876@main). * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::sampleBufferDisplayLayer const): Deleted. * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h: (WebCore::MediaPlayerPrivateWebM::decompressionSession const): * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::MediaPlayerPrivateWebM): (WebCore::MediaPlayerPrivateWebM::setPageIsVisible): (WebCore::MediaPlayerPrivateWebM::shouldEnsureLayerOrVideoRenderer const): (WebCore::MediaPlayerPrivateWebM::updateDisplayLayerAndDecompressionSession): (WebCore::MediaPlayerPrivateWebM::reenqueSamples): (WebCore::MediaPlayerPrivateWebM::reenqueueMediaForTime): (WebCore::MediaPlayerPrivateWebM::ensureLayer): (WebCore::MediaPlayerPrivateWebM::destroyLayer): (WebCore::MediaPlayerPrivateWebM::ensureVideoRenderer): (WebCore::MediaPlayerPrivateWebM::destroyVideoRenderer): (WebCore::MediaPlayerPrivateWebM::hasSelectedVideo const): (WebCore::MediaPlayerPrivateWebM::ensureLayerOrVideoRenderer): (WebCore::MediaPlayerPrivateWebM::setShouldDisableHDR): (WebCore::MediaPlayerPrivateWebM::playerContentBoxRectChanged): (WebCore::MediaPlayerPrivateWebM::setShouldMaintainAspectRatio): (WebCore::MediaPlayerPrivateWebM::defaultSpatialTrackingLabel const): (WebCore::MediaPlayerPrivateWebM::setDefaultSpatialTrackingLabel): (WebCore::MediaPlayerPrivateWebM::spatialTrackingLabel const): (WebCore::MediaPlayerPrivateWebM::setSpatialTrackingLabel): (WebCore::MediaPlayerPrivateWebM::updateSpatialTrackingLabel): (WebCore::MediaPlayerPrivateWebM::destroyLayerOrVideoRenderer): (WebCore::MediaPlayerPrivateWebM::configureLayerOrVideoRenderer): (WebCore::MediaPlayerPrivateWebM::configureVideoRenderer): (WebCore::MediaPlayerPrivateWebM::invalidateVideoRenderer): (WebCore::MediaPlayerPrivateWebM::setVideoRenderer): (WebCore::MediaPlayerPrivateWebM::stageVideoRenderer): (WebCore::MediaPlayerPrivateWebM::acceleratedVideoMode const): (WebCore::MediaPlayerPrivateWebM::layerOrVideoRenderer const): (WebCore::MediaPlayerPrivateWebM::setVideoTarget): (WebCore::MediaPlayerPrivateWebM::isInFullscreenOrPictureInPictureChanged): (WebCore::MediaPlayerPrivateWebM::shouldEnsureLayer const): Deleted. * Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::supportsLinearMediaPlayer const): Canonical link: https://commits.webkit.org/280106@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f87502: [tvOS] Enable MediaSource
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f87502648ea89e86e4a095489677e2511e1525d8 https://github.com/WebKit/WebKit/commit/f87502648ea89e86e4a095489677e2511e1525d8 Author: Andy Estes Date: 2024-06-18 (Tue, 18 Jun 2024) Changed paths: M Source/WTF/wtf/PlatformUse.h M Source/WebKit/Shared/ios/WebPreferencesDefaultValuesIOS.mm Log Message: --- [tvOS] Enable MediaSource https://bugs.webkit.org/show_bug.cgi?id=275628 rdar://129307796 Reviewed by Eric Carlson. Enabled MediaSource at runtime on tvOS. * Source/WTF/wtf/PlatformUse.h: * Source/WebKit/Shared/ios/WebPreferencesDefaultValuesIOS.mm: (WebKit::defaultMediaSourceEnabled): Canonical link: https://commits.webkit.org/280138@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e9ca87: Add a WKWebView SPI to tell clients when a Now Pla...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e9ca870925506eabe4eb1434e3eac47c30da6e9c https://github.com/WebKit/WebKit/commit/e9ca870925506eabe4eb1434e3eac47c30da6e9c Author: Andy Estes Date: 2024-06-24 (Mon, 24 Jun 2024) Changed paths: M Source/WebCore/Modules/webaudio/AudioContext.cpp M Source/WebCore/Modules/webaudio/AudioContext.h M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/html/HTMLMediaElement.h M Source/WebCore/page/ChromeClient.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/platform/audio/PlatformMediaSession.cpp M Source/WebCore/platform/audio/PlatformMediaSession.h M Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp M Source/WebCore/platform/audio/PlatformMediaSessionManager.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm M Source/WebKit/UIProcess/PageClient.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/WebPageProxy.messages.in M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebKitCocoa/NowPlayingSession.mm Log Message: --- Add a WKWebView SPI to tell clients when a Now Playing session is active https://bugs.webkit.org/show_bug.cgi?id=275814 rdar://129366857 Reviewed by Eric Carlson. Added a boolean -_hasActiveNowPlayingSession property to WKWebView that indicates when the web view has an active Now Playing session. The property is key-value observable. This is achieved by teching MediaSessionManagerCocoa to set a isActiveNowPlayingSession boolean on each PlatformMediaSession when updating Now Playing information. PlatformMediaSession notifies its client when this value changes, ultimately telling Page to set a 0-delay timer to check whether the Page has an active Now Playing session (the timer coalesces updates in the case where one PlatformMediaSession becomes inactive and another becomes active). When the timer fires, Page asks PlatformMediaSessionManager if any media session in the page's media session group identifier has an active Now Playing session. If this computed value changes then a message is sent to WebPageProxy that ultimately changes the value of -_hasActiveNowPlayingSession. Added API tests. * Source/WebCore/Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::isActiveNowPlayingSessionChanged): * Source/WebCore/Modules/webaudio/AudioContext.h: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::isActiveNowPlayingSessionChanged): * Source/WebCore/html/HTMLMediaElement.h: * Source/WebCore/page/ChromeClient.h: (WebCore::ChromeClient::hasActiveNowPlayingSessionChanged): * Source/WebCore/page/Page.cpp: (WebCore::m_activeNowPlayingSessionUpdateTimer): (WebCore::Page::hasActiveNowPlayingSessionChanged): (WebCore::Page::activeNowPlayingSessionUpdateTimerFired): (WebCore::m_writingToolsController): Deleted. * Source/WebCore/page/Page.h: (WebCore::Page::hasActiveNowPlayingSession const): * Source/WebCore/platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::setActiveNowPlayingSession): * Source/WebCore/platform/audio/PlatformMediaSession.h: (WebCore::PlatformMediaSession::isActiveNowPlayingSession const): * Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp: (WebCore::PlatformMediaSessionManager::hasActiveNowPlayingSessionInGroup): * Source/WebCore/platform/audio/PlatformMediaSessionManager.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h: * Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::updateActiveNowPlayingSession): (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): * Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm: (WebCore::MediaSessionManageriOS::activeVideoRouteDidChange): * Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h: * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h: * Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm: (WebKit::PageClientImplCocoa::hasActiveNowPlayingSessionChanged): * Source/WebKit/UIProcess/PageClient.h: (WebKit::PageClient::hasActiveNowPlayingSessionChanged): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPagePro
[webkit-changes] [WebKit/WebKit] 23871b: [visionOS] Safari can crash when entering LinearMe...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 23871b35678729fe1fa18102db9ac0de0160e5d5 https://github.com/WebKit/WebKit/commit/23871b35678729fe1fa18102db9ac0de0160e5d5 Author: Andy Estes Date: 2024-06-25 (Tue, 25 Jun 2024) Changed paths: M Source/WebCore/platform/audio/ios/AudioSessionIOS.mm M Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm Log Message: --- [visionOS] Safari can crash when entering LinearMediaPlayer fullscreen https://bugs.webkit.org/show_bug.cgi?id=275881 rdar://130103538 Reviewed by Alex Christensen. There were two issues that could result in a UI process crash when entering LinearMediaPlayer fullscreen: 1. PlaybackSessionModelMediaElement::m_soundStageSize was not initialized by its constructor. When entering LinearMediaKit fullscreen we change the sound stage size, which reads from this uninitialized value and attempts to send it from WebContent to GPU via IPC. CoreIPC detects the invalid value and terminates the WebContent process 2. When the UI process handles a WebContent process termination it calls PlaybackSessionManagerProxy::invalidate(), but the WebPageProxy has been destroyed in this case. PlaybackSessionManagerProxy stores a WeakPtr to the WebPageProxy but does not property null-check it in many places. This leads to the UI process crashing due to the WebContent process termination in (1). Addressed (1) by initializing PlaybackSessionModelMediaElement::m_soundStageSize to SoundStageSize::Automatic. Addressed (2) by storing PlaybackSessionManagerProxy::m_page in a RefPtr and checking it for null before accessing it. * Source/WebCore/platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSessionIOS::updateSpatialExperience): * Source/WebCore/platform/cocoa/PlaybackSessionModelMediaElement.mm: (WebCore::PlaybackSessionModelMediaElement::PlaybackSessionModelMediaElement): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::invalidate): (WebKit::PlaybackSessionManagerProxy::createModelAndInterface): (WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID): (WebKit::PlaybackSessionManagerProxy::clearPlaybackControlsManager): (WebKit::PlaybackSessionManagerProxy::currentTimeChanged): (WebKit::PlaybackSessionManagerProxy::rateChanged): (WebKit::PlaybackSessionManagerProxy::handleControlledElementIDResponse const): (WebKit::PlaybackSessionManagerProxy::play): (WebKit::PlaybackSessionManagerProxy::pause): (WebKit::PlaybackSessionManagerProxy::togglePlayState): (WebKit::PlaybackSessionManagerProxy::beginScrubbing): (WebKit::PlaybackSessionManagerProxy::endScrubbing): (WebKit::PlaybackSessionManagerProxy::seekToTime): (WebKit::PlaybackSessionManagerProxy::fastSeek): (WebKit::PlaybackSessionManagerProxy::beginScanningForward): (WebKit::PlaybackSessionManagerProxy::beginScanningBackward): (WebKit::PlaybackSessionManagerProxy::endScanning): (WebKit::PlaybackSessionManagerProxy::setDefaultPlaybackRate): (WebKit::PlaybackSessionManagerProxy::setPlaybackRate): (WebKit::PlaybackSessionManagerProxy::selectAudioMediaOption): (WebKit::PlaybackSessionManagerProxy::selectLegibleMediaOption): (WebKit::PlaybackSessionManagerProxy::togglePictureInPicture): (WebKit::PlaybackSessionManagerProxy::enterFullscreen): (WebKit::PlaybackSessionManagerProxy::exitFullscreen): (WebKit::PlaybackSessionManagerProxy::toggleInWindow): (WebKit::PlaybackSessionManagerProxy::toggleMuted): (WebKit::PlaybackSessionManagerProxy::setMuted): (WebKit::PlaybackSessionManagerProxy::setVolume): (WebKit::PlaybackSessionManagerProxy::setPlayingOnSecondScreen): (WebKit::PlaybackSessionManagerProxy::sendRemoteCommand): (WebKit::PlaybackSessionManagerProxy::setVideoReceiverEndpoint): (WebKit::PlaybackSessionManagerProxy::uncacheVideoReceiverEndpoint): (WebKit::PlaybackSessionManagerProxy::setSpatialTrackingLabel): (WebKit::PlaybackSessionManagerProxy::setSoundStageSize): (WebKit::PlaybackSessionManagerProxy::requestControlledElementID): Canonical link: https://commits.webkit.org/280363@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c14581: [tvOS] Add fullscreen and mute buttons to media co...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c14581bf13cf3821605eec78f683c5a0e6856292 https://github.com/WebKit/WebKit/commit/c14581bf13cf3821605eec78f683c5a0e6856292 Author: Andy Estes Date: 2024-06-25 (Tue, 25 Jun 2024) Changed paths: M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css M Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js Log Message: --- [tvOS] Add fullscreen and mute buttons to media controls https://bugs.webkit.org/show_bug.cgi?id=275886 Reviewed by Eric Carlson. Added top-left and top-right button containers with buttons to toggle fullscreen and mute. While here, also stopped pointer events from propagating to the underlying video element. * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css: (.media-controls.fullscreen.tvos > .controls-bar): (.media-controls.fullscreen.tvos.uses-ltr-user-interface-layout-direction > .controls-bar.top-left,): (.media-controls.fullscreen.tvos.uses-ltr-user-interface-layout-direction > .controls-bar.top-right,): * Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js: (TVOSMediaControls.prototype.layout): (TVOSMediaControls.prototype._topLeftContainerButtons): (TVOSMediaControls.prototype._topRightContainerButtons): Canonical link: https://commits.webkit.org/280364@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 914a60: Create a standalone bundle for TestWebKitAPI resou...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 914a60022d816b11cab8836e3f125670dd85a4d5 https://github.com/WebKit/WebKit/commit/914a60022d816b11cab8836e3f125670dd85a4d5 Author: Andy Estes Date: 2024-09-17 (Tue, 17 Sep 2024) Changed paths: A Tools/TestWebKitAPI/Configurations/TestWebKitAPIResources.xcconfig M Tools/TestWebKitAPI/PlatformUtilities.h A Tools/TestWebKitAPI/TestNSBundleExtras.h A Tools/TestWebKitAPI/TestNSBundleExtras.m M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj M Tools/TestWebKitAPI/Tests/WebCore/LineBreaking.mm M Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm M Tools/TestWebKitAPI/Tests/WebCore/cocoa/XMLParsing.mm M Tools/TestWebKitAPI/Tests/WebKit/AdvancedPrivacyProtections.mm M Tools/TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm M Tools/TestWebKitAPI/Tests/WebKit/NetworkProcessCrashWithPendingConnection.mm M Tools/TestWebKitAPI/Tests/WebKit/NoHistoryItemScrollToFragment.mm M Tools/TestWebKitAPI/Tests/WebKit/OrthogonalFlowAvailableSize.mm M Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardListTests.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AdaptiveImageGlyph.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AdditionalReadAccessAllowedURLs.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AdditionalSupportedImageTypes.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AsyncPolicyForNavigationResponse.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/AttrStyle.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/CancelFontSubresource.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ClipboardTests.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ContentSecurityPolicy.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/CookieAcceptPolicy.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceManagementRestrictions.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/DuplicateCompletionHandlerCalls.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FirstVisuallyNonEmptyMilestone.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FixedLayoutSize.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenLayoutConstraints.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/GetResourceData.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IDBCheckpointWAL.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IDBDeleteRecovery.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IDBObjectStoreInfoUpgradeToV2.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IconLoadingDelegate.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBDatabaseProcessKill.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBInPageCache.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBMultiProcess.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBStructuredCloneBackwardCompatibility.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBSuspendImminently.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBTempFileSize.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBUserDelete.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/JavaScriptDuringNavigation.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadAndDecodeImage.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadFileThenReload.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadFileURL.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadInvalidURLRequest.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageClear.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageNullEntries.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageQuirkTest.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/LockdownModeFonts.mm M
[webkit-changes] [WebKit/WebKit] 5b7e8d: ASSERTION FAILED: !m_messageReceiverMapCount in IP...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5b7e8de571abe57c953f584592ba4ea752156e27 https://github.com/WebKit/WebKit/commit/5b7e8de571abe57c953f584592ba4ea752156e27 Author: Andy Estes Date: 2023-08-16 (Wed, 16 Aug 2023) Changed paths: M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h Log Message: --- ASSERTION FAILED: !m_messageReceiverMapCount in IPC::MessageReceiver::~MessageReceiver() when running media layout tests https://bugs.webkit.org/show_bug.cgi?id=260244 rdar://108192298 Reviewed by Jean-Yves Avenard. GPUConnectionToWebProcess's connection closing results in RemoteMediaSourceProxy::shutdown() being called, which sends the MediaSourcePrivateRemote::MediaSourcePrivateShuttingDown message with an async reply. Since the connection is being closed this message is not sent successfully, but its async reply handler keeps the RemoteMediaSourceProxy alive. When the handler is later invoked upon message cancellation the GPUConnectionToWebProcess has been destroyed, so RemoteMediaSourceProxy is unable to remove itself from the GPUConnectionToWebProcess::messageReceiverMap(). This leaves the RemoteMediaSourceProxy with a non-zero m_messageReceiverMapCount, leading to the assertion mentioned above. Fixed this by ensuring RemoteMediaSourceProxy and its RemoteSourceBufferProxys explicitly remove themselves from the message receiver map before the GPUConnectionToWebProcess is deallocated. Fixes flaky crashes in existing media layout tests. * Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp: (WebKit::RemoteMediaSourceProxy::disconnect): (WebKit::RemoteMediaSourceProxy::~RemoteMediaSourceProxy): (WebKit::RemoteMediaSourceProxy::shutdown): * Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h: * Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp: (WebKit::RemoteSourceBufferProxy::~RemoteSourceBufferProxy): (WebKit::RemoteSourceBufferProxy::disconnect): * Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h: Canonical link: https://commits.webkit.org/266975@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 147e06: [iOS] Adopt ThreadSafeWeakPtr in WebMediaSessionHe...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 147e066f07349b960743d7d9f950b85c02bfec52 https://github.com/WebKit/WebKit/commit/147e066f07349b960743d7d9f950b85c02bfec52 Author: Andy Estes Date: 2023-08-16 (Wed, 16 Aug 2023) Changed paths: M Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h Log Message: --- [iOS] Adopt ThreadSafeWeakPtr in WebMediaSessionHelper https://bugs.webkit.org/show_bug.cgi?id=260205 rdar://113910990 Reviewed by Jean-Yves Avenard. Adopted ThreadSafeWeakPtr for WebMediaSessionHelper's _callback ivar. Ensured WebMediaSessionHelper's _monitoringAirPlayRoutes and _startMonitoringAirPlayRoutesPending ivars are accessed exclusively on the main thread. Fixed some naming and formatting issues, notably renaming MediaSessionHelperiOS to MediaSessionHelperIOS. * Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm: (MediaSessionHelper::resetSharedHelper): (MediaSessionHelperIOS::MediaSessionHelperIOS): (MediaSessionHelperIOS::providePresentingApplicationPID): (MediaSessionHelperIOS::startMonitoringWirelessRoutesInternal): (MediaSessionHelperIOS::stopMonitoringWirelessRoutesInternal): (MediaSessionHelperIOS::mediaServerConnectionDied): (MediaSessionHelperIOS::setIsPlayingToAutomotiveHeadUnit): (MediaSessionHelperIOS::activeAudioRouteDidChange): (MediaSessionHelperIOS::activeVideoRouteDidChange): (MediaSessionHelperIOS::externalOutputDeviceAvailableDidChange): (-[WebMediaSessionHelper initWithCallback:]): (-[WebMediaSessionHelper hasWirelessTargetsAvailable]): (-[WebMediaSessionHelper startMonitoringAirPlayRoutes]): (-[WebMediaSessionHelper applicationWillEnterForeground:]): (-[WebMediaSessionHelper applicationDidBecomeActive:]): (-[WebMediaSessionHelper applicationWillResignActive:]): (-[WebMediaSessionHelper wirelessRoutesAvailableDidChange:]): (-[WebMediaSessionHelper applicationDidEnterBackground:]): (-[WebMediaSessionHelper mediaServerConnectionDied:]): (-[WebMediaSessionHelper carPlayIsConnectedDidChange:]): (-[WebMediaSessionHelper activeOutputDeviceDidChange:]): (MediaSessionHelperiOS::MediaSessionHelperiOS): Deleted. (MediaSessionHelperiOS::~MediaSessionHelperiOS): Deleted. (MediaSessionHelperiOS::providePresentingApplicationPID): Deleted. (MediaSessionHelperiOS::startMonitoringWirelessRoutesInternal): Deleted. (MediaSessionHelperiOS::stopMonitoringWirelessRoutesInternal): Deleted. (MediaSessionHelperiOS::mediaServerConnectionDied): Deleted. (MediaSessionHelperiOS::updateCarPlayIsConnected): Deleted. (MediaSessionHelperiOS::setIsPlayingToAutomotiveHeadUnit): Deleted. (MediaSessionHelperiOS::activeAudioRouteDidChange): Deleted. (MediaSessionHelperiOS::activeVideoRouteDidChange): Deleted. (MediaSessionHelperiOS::externalOutputDeviceAvailableDidChange): Deleted. (-[WebMediaSessionHelper clearCallback]): Deleted. Canonical link: https://commits.webkit.org/266985@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 662d6e: media/video-remote-control-playpause.html frequent...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 662d6eb482e6c9c400696045277c0aa31fb1db68 https://github.com/WebKit/WebKit/commit/662d6eb482e6c9c400696045277c0aa31fb1db68 Author: Andy Estes Date: 2023-08-18 (Fri, 18 Aug 2023) Changed paths: M LayoutTests/platform/mac/TestExpectations Log Message: --- media/video-remote-control-playpause.html frequently fails on the bots https://bugs.webkit.org/show_bug.cgi?id=130490 rdar://114097537 Unreviewed. Marked media/video-remote-control-playpause.html as a test that can pass, time out, or crash. * LayoutTests/platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/267046@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d0daa3: [iOS] Adopt AVAudioSession to check if CarPlay is ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d0daa339187a5ea6301a1465497d1db2ce2f0e36 https://github.com/WebKit/WebKit/commit/d0daa339187a5ea6301a1465497d1db2ce2f0e36 Author: Andy Estes Date: 2023-08-18 (Fri, 18 Aug 2023) Changed paths: M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm M Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm Log Message: --- [iOS] Adopt AVAudioSession to check if CarPlay is connected https://bugs.webkit.org/show_bug.cgi?id=260321 rdar://112481563 Reviewed by Eric Carlson. Migrated MediaSessionHelperIOS from AVSystemController SPI to AVAudioSession API to check if CarPlay is connected. * Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h: * Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm: * Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm: (MediaSessionHelperiOS::MediaSessionHelperiOS): (MediaSessionHelperiOS::mediaServerConnectionDied): (MediaSessionHelperiOS::updateCarPlayIsConnected): (MediaSessionHelperiOS::setIsPlayingToAutomotiveHeadUnit): (-[WebMediaSessionHelper initWithCallback:]): (-[WebMediaSessionHelper mediaServerConnectionDied:]): (-[WebMediaSessionHelper activeOutputDeviceDidChange:]): (-[WebMediaSessionHelper carPlayIsConnectedDidChange:]): Deleted. Canonical link: https://commits.webkit.org/267050@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] fab721: [Cocoa] Adopt -[AVSampleBufferDisplayLayer setPrev...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fab721e7e9eba3573e21a39c603e30d4e1fdb9dd https://github.com/WebKit/WebKit/commit/fab721e7e9eba3573e21a39c603e30d4e1fdb9dd Author: Andy Estes Date: 2023-08-18 (Fri, 18 Aug 2023) Changed paths: M Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm Log Message: --- [Cocoa] Adopt -[AVSampleBufferDisplayLayer setPreventsDisplaySleepDuringVideoPlayback:] as API https://bugs.webkit.org/show_bug.cgi?id=260405 rdar://112165356 Reviewed by Jer Noble. The preventsDisplaySleepDuringVideoPlayback property on AVSampleBufferDisplayLayer has been available as API since macOS 10.15 and iOS 13, so we can remove our SPI declaration from AVFoundationSPI.h. * Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayer): * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::ensureLayer): Canonical link: https://commits.webkit.org/267056@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 590303: [Cocoa] Replace uses of CMNotificationCenter with ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5903034893af12971f9b3ee3426abaaa710d5af1 https://github.com/WebKit/WebKit/commit/5903034893af12971f9b3ee3426abaaa710d5af1 Author: Andy Estes Date: 2023-08-20 (Sun, 20 Aug 2023) Changed paths: M Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp M Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h M Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.h M Source/WebCore/PAL/pal/spi/cf/CoreMediaSPI.h M Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm Log Message: --- [Cocoa] Replace uses of CMNotificationCenter with CFNotificationCenter https://bugs.webkit.org/show_bug.cgi?id=260415 rdar://112505255 Reviewed by Eric Carlson. CMNotificationCenter is SPI that wraps CFNotificationCenter API on Cocoa platforms. As such, this PR replaces its usage in WebKit with CFNotificationCenter. While here, this PR removes the code that observed kCMSampleBufferConsumerNotification_BufferConsumed since -[AVSampleBufferDisplayLayer prerollDecodeWithCompletionHandler:] is available on all OS versions supported on main. * Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp: * Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h: * Source/WebCore/PAL/pal/cocoa/MediaToolboxSoftLink.h: * Source/WebCore/PAL/pal/spi/cf/CoreMediaSPI.h: * Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::timebaseEffectiveRateChangedCallback): (WebCore::EffectiveRateChangedListener::stop): (WebCore::EffectiveRateChangedListener::EffectiveRateChangedListener): (WebCore::CMTimebaseEffectiveRateChangedCallback): Deleted. * Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::m_logIdentifier): (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC): (WebCore::SourceBufferPrivateAVFObjC::enqueueSample): (WebCore::bufferWasConsumedCallback): Deleted. * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::webProcessPoolHighDynamicRangeDidChangeCallback): (WebKit::WebProcessPool::registerHighDynamicRangeChangeCallback): Canonical link: https://commits.webkit.org/267078@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes