⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 284294 in webkit


Ignore:
Timestamp:
Oct 15, 2021, 5:00:09 PM (5 years ago)
Author:
jer.noble@apple.com
Message:

[iOS] Screen Sharing doesn't switch to AirPlay when <video> enters fullscreen mode
https://bugs.webkit.org/show_bug.cgi?id=231807
<rdar://82995799>

Reviewed by Eric Carlson.

WebKit will allow AVPlayer to switch to AirPlay Video mode from Screen Sharing when a
<video> element is in fullscreen mode. However, the fullscreen state this code depends on
is not stored in the GPU process.

Implement RemoteMediaPlayerProxy::mediaPlayerFullscreenMode()
and ::mediaPlayerIsVideoFullscreenStandby().

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::setVideoFullscreenMode):
(WebKit::RemoteMediaPlayerProxy::videoFullscreenStandbyChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFullscreenMode const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerIsVideoFullscreenStandby const):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::videoFullscreenStandbyChanged):

Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r284291 r284294  
     12021-10-15  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Screen Sharing doesn't switch to AirPlay when <video> enters fullscreen mode
     4        https://bugs.webkit.org/show_bug.cgi?id=231807
     5        <rdar://82995799>
     6
     7        Reviewed by Eric Carlson.
     8
     9        WebKit will allow AVPlayer to switch to AirPlay Video mode from Screen Sharing when a
     10        <video> element is in fullscreen mode. However, the fullscreen state this code depends on
     11        is not stored in the GPU process.
     12
     13        Implement RemoteMediaPlayerProxy::mediaPlayerFullscreenMode()
     14        and ::mediaPlayerIsVideoFullscreenStandby().
     15
     16        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
     17        (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenMode):
     18        (WebKit::RemoteMediaPlayerProxy::videoFullscreenStandbyChanged):
     19        (WebKit::RemoteMediaPlayerProxy::mediaPlayerFullscreenMode const):
     20        (WebKit::RemoteMediaPlayerProxy::mediaPlayerIsVideoFullscreenStandby const):
     21        * GPUProcess/media/RemoteMediaPlayerProxy.h:
     22        * GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
     23        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
     24        (WebKit::MediaPlayerPrivateRemote::videoFullscreenStandbyChanged):
     25
    1262021-10-15  Per Arne Vollan  <pvollan@apple.com>
    227
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp

    r284142 r284294  
    322322void RemoteMediaPlayerProxy::setVideoFullscreenMode(MediaPlayer::VideoFullscreenMode mode)
    323323{
     324    m_fullscreenMode = mode;
    324325    m_player->setVideoFullscreenMode(mode);
    325 
    326 }
    327 
    328 void RemoteMediaPlayerProxy::videoFullscreenStandbyChanged()
    329 {
     326}
     327
     328void RemoteMediaPlayerProxy::videoFullscreenStandbyChanged(bool standby)
     329{
     330    m_videoFullscreenStandby = standby;
    330331    m_player->videoFullscreenStandbyChanged();
    331332}
     
    820821MediaPlayerEnums::VideoFullscreenMode RemoteMediaPlayerProxy::mediaPlayerFullscreenMode() const
    821822{
    822     notImplemented();
    823     return MediaPlayerEnums::VideoFullscreenModeNone;
     823    return m_fullscreenMode;
    824824}
    825825
    826826bool RemoteMediaPlayerProxy::mediaPlayerIsVideoFullscreenStandby() const
    827827{
    828     notImplemented();
    829     return false;
     828    return m_videoFullscreenStandby;
    830829}
    831830#endif
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h

    r284102 r284294  
    107107    void updateVideoFullscreenInlineImage();
    108108    void setVideoFullscreenMode(WebCore::MediaPlayer::VideoFullscreenMode);
    109     void videoFullscreenStandbyChanged();
     109    void videoFullscreenStandbyChanged(bool);
    110110#endif
    111111
     
    358358    bool m_bufferedChanged { true };
    359359    bool m_renderingCanBeAccelerated { false };
     360    WebCore::MediaPlayer::VideoFullscreenMode m_fullscreenMode { WebCore::MediaPlayer::VideoFullscreenModeNone };
     361    bool m_videoFullscreenStandby { false };
    360362
    361363#if ENABLE(LEGACY_ENCRYPTED_MEDIA) && ENABLE(ENCRYPTED_MEDIA)
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in

    r284102 r284294  
    6161    SetVideoFullscreenMode(WebCore::MediaPlayer::VideoFullscreenMode mode)
    6262    SetVideoFullscreenGravity(enum:uint8_t WebCore::MediaPlayerEnums::VideoGravity gravity)
    63     VideoFullscreenStandbyChanged()
     63    VideoFullscreenStandbyChanged(bool standby)
    6464#endif
    6565
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp

    r284142 r284294  
    852852void MediaPlayerPrivateRemote::videoFullscreenStandbyChanged()
    853853{
    854     connection().send(Messages::RemoteMediaPlayerProxy::VideoFullscreenStandbyChanged(), m_id);
     854    RefPtr player = m_player.get();
     855    if (!player)
     856        return;
     857
     858    connection().send(Messages::RemoteMediaPlayerProxy::VideoFullscreenStandbyChanged(player->isVideoFullscreenStandby()), m_id);
    855859}
    856860#endif
Note: See TracChangeset for help on using the changeset viewer.