[webkit-changes] [WebKit/WebKit] 4de0f4: [Cocoa] Introduce WKSLinearMediaPlayer

2024-01-30 Thread aestes
  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...

2024-01-31 Thread aestes
  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...

2024-02-02 Thread aestes
  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

2024-02-04 Thread aestes
  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

2024-02-07 Thread aestes
  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...

2024-02-12 Thread aestes
  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...

2024-02-12 Thread aestes
  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...

2024-02-15 Thread aestes
  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...

2024-02-15 Thread aestes
  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...

2024-02-16 Thread aestes
  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...

2024-02-17 Thread aestes
  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...

2024-02-20 Thread aestes
  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...

2024-02-21 Thread aestes
  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...

2024-02-21 Thread aestes
  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...

2024-02-23 Thread aestes
  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

2024-02-23 Thread aestes
  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...

2024-02-24 Thread aestes
  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 ...

2024-02-25 Thread aestes
  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...

2024-02-29 Thread aestes
  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...

2024-03-08 Thread aestes
  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...

2024-03-09 Thread aestes
  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...

2024-03-13 Thread aestes
  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...

2024-03-15 Thread aestes
  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...

2024-03-15 Thread aestes
  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...

2024-03-19 Thread aestes
  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...

2024-03-19 Thread aestes
  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

2024-03-19 Thread aestes
  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

2024-03-21 Thread aestes
  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...

2024-03-21 Thread aestes
  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 ...

2024-03-27 Thread aestes
  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...

2024-03-28 Thread aestes
  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...

2024-04-01 Thread aestes
  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

2024-04-01 Thread aestes
  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...

2024-04-02 Thread aestes
  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...

2024-04-03 Thread aestes
  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...

2024-04-06 Thread aestes
  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...

2024-06-26 Thread aestes
  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...

2024-06-26 Thread aestes
  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...

2024-07-06 Thread aestes
  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...

2024-07-09 Thread aestes
  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

2024-07-10 Thread aestes
  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...

2024-07-11 Thread aestes
  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...

2024-07-16 Thread aestes
  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

2024-07-19 Thread aestes
  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...

2024-07-19 Thread aestes
  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...

2024-07-24 Thread aestes
  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

2024-07-24 Thread aestes
  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...

2024-07-31 Thread aestes
  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 ...

2024-07-31 Thread aestes
  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 ...

2024-08-05 Thread aestes
  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...

2024-08-12 Thread aestes
  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...

2024-08-13 Thread aestes
  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...

2024-08-22 Thread aestes
  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

2024-08-26 Thread aestes
  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...

2024-08-26 Thread aestes
  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...

2024-08-27 Thread aestes
  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...

2024-08-29 Thread aestes
  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...

2024-08-29 Thread aestes
  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

2024-08-30 Thread aestes
  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...

2024-08-31 Thread aestes
  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...

2024-09-03 Thread aestes
  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...

2024-09-04 Thread aestes
  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

2024-09-04 Thread aestes
  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

2024-09-06 Thread aestes
  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...

2024-09-10 Thread aestes
  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...

2024-04-10 Thread aestes
  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...

2024-04-11 Thread aestes
  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...

2024-04-13 Thread aestes
  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...

2024-04-16 Thread aestes
  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...

2024-04-17 Thread aestes
  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

2024-04-19 Thread aestes
  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...

2024-04-23 Thread aestes
  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 ...

2024-04-26 Thread aestes
  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...

2024-04-26 Thread aestes
  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...

2024-04-28 Thread aestes
  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...

2024-04-28 Thread aestes
  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

2024-05-14 Thread aestes
  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

2024-05-14 Thread aestes
  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

2024-05-17 Thread aestes
  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

2024-05-24 Thread aestes
  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

2024-05-26 Thread aestes
  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

2024-05-28 Thread aestes
  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...

2024-06-01 Thread aestes
  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

2024-06-05 Thread aestes
  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...

2024-06-07 Thread aestes
  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...

2024-06-13 Thread aestes
  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...

2024-06-14 Thread aestes
  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)

2024-06-17 Thread aestes
  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...

2024-06-17 Thread aestes
  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

2024-06-18 Thread aestes
  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...

2024-06-24 Thread aestes
  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...

2024-06-25 Thread aestes
  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...

2024-06-25 Thread aestes
  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...

2024-09-17 Thread aestes
  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...

2023-08-16 Thread aestes
  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...

2023-08-16 Thread aestes
  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...

2023-08-18 Thread aestes
  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 ...

2023-08-18 Thread aestes
  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...

2023-08-18 Thread aestes
  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 ...

2023-08-20 Thread aestes
  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


  1   2   3   4   5   6   7   8   9   10   >