Changeset 196263 in webkit


Ignore:
Timestamp:
Feb 8, 2016 11:33:50 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

PiP and external playback are mutually exclusive.
https://bugs.webkit.org/show_bug.cgi?id=153988
rdar://problem/24108661

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-02-08
Reviewed by Eric Carlson.

Adding isPlayingOnSecondScreen to isPlayingOnExternalScreen allows AVKit to disable PiP
when appropriate. Testing video fullscreen mode in updateDisableExternalPlayback allows us to
turn-off external playback when entering picture-in-picture.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenMode):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerController isPlayingOnExternalScreen]):
(+[WebAVPlayerController keyPathsForValuesAffectingPlayingOnExternalScreen]):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r196256 r196263  
     12016-02-08  Jeremy Jones  <jeremyj@apple.com>
     2
     3        PiP and external playback are mutually exclusive.
     4        https://bugs.webkit.org/show_bug.cgi?id=153988
     5        rdar://problem/24108661
     6
     7        Reviewed by Eric Carlson.
     8
     9        Adding isPlayingOnSecondScreen to isPlayingOnExternalScreen allows AVKit to disable PiP
     10        when appropriate. Testing video fullscreen mode in updateDisableExternalPlayback allows us to
     11        turn-off external playback when entering picture-in-picture.
     12
     13        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
     14        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenMode):
     15        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):
     16        * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
     17        (-[WebAVPlayerController isPlayingOnExternalScreen]):
     18        (+[WebAVPlayerController keyPathsForValuesAffectingPlayingOnExternalScreen]):
     19
    1202016-02-08  Commit Queue  <commit-queue@webkit.org>
    221
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

    r196131 r196263  
    11541154    if (m_videoLayer && [m_videoLayer respondsToSelector:@selector(setPIPModeEnabled:)])
    11551155        [m_videoLayer setPIPModeEnabled:(mode & MediaPlayer::VideoFullscreenModePictureInPicture)];
     1156    updateDisableExternalPlayback();
    11561157#else
    11571158    UNUSED_PARAM(mode);
     
    30993100
    31003101#if PLATFORM(IOS)
    3101     [m_avPlayer setUsesExternalPlaybackWhileExternalScreenIsActive:m_videoFullscreenLayerManager->videoFullscreenLayer() != nil];
     3102    [m_avPlayer setUsesExternalPlaybackWhileExternalScreenIsActive:player()->fullscreenMode() & MediaPlayer::VideoFullscreenModeStandard];
    31023103#endif
    31033104}
  • trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm

    r196254 r196263  
    156156
    157157@property (readonly, getter=isPlayingOnExternalScreen) BOOL playingOnExternalScreen;
     158@property (readonly, getter=isPlayingOnSecondScreen) BOOL playingOnSecondScreen;
    158159@property (getter=isExternalPlaybackActive) BOOL externalPlaybackActive;
    159160@property AVPlayerControllerExternalPlaybackType externalPlaybackType;
     
    604605- (BOOL)isPlayingOnExternalScreen
    605606{
    606     return [self isExternalPlaybackActive];
     607    return [self isExternalPlaybackActive] || [self isPlayingOnSecondScreen];
    607608}
    608609
    609610+ (NSSet *)keyPathsForValuesAffectingPlayingOnExternalScreen
    610611{
    611     return [NSSet setWithObjects:@"externalPlaybackActive", nil];
     612    return [NSSet setWithObjects:@"externalPlaybackActive", @"playingOnSecondScreen", nil];
    612613}
    613614
Note: See TracChangeset for help on using the changeset viewer.