Changeset 185834 in webkit
- Timestamp:
- Jun 22, 2015, 10:41:59 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
platform/ios/WebVideoFullscreenInterfaceAVKit.h (modified) (1 diff)
-
platform/ios/WebVideoFullscreenInterfaceAVKit.mm (modified) (3 diffs)
-
platform/spi/cocoa/AVKitSPI.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r185828 r185834 1 2015-06-22 Jeremy Jones <jeremyj@apple.com> 2 3 Do not exit fullscreen when starting PiP since this is done automatically. 4 https://bugs.webkit.org/show_bug.cgi?id=144871 5 6 Reviewed by Darin Adler. 7 8 Since we don't explicitly exit fullscreen, update state in shouldExitFullscreenWithReason() 9 10 * platform/ios/WebVideoFullscreenInterfaceAVKit.h: Declare shouldExitFullscreenWithReason(). 11 * platform/ios/WebVideoFullscreenInterfaceAVKit.mm: 12 (-[WebAVPlayerController playerViewController:shouldExitFullScreenWithReason:]): Forward to WebVideoFullscreenInterfaceAVKit. 13 (WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): Added. 14 (WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture): Remove enter fullscreen code. 15 * platform/spi/cocoa/AVKitSPI.h: Add missing enums. 16 1 17 2015-06-22 Daniel Bates <dabates@apple.com> 2 18 -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h
r185727 r185834 100 100 WEBCORE_EXPORT virtual void preparedToReturnToInline(bool visible, const IntRect& inlineRect); 101 101 102 enum class ExitFullScreenReason { 103 DoneButtonTapped, 104 FullScreenButtonTapped, 105 PinchGestureHandled, 106 RemoteControlStopEventReceived, 107 PictureInPictureStarted 108 }; 109 110 bool shouldExitFullscreenWithReason(ExitFullScreenReason); 102 111 HTMLMediaElementEnums::VideoFullscreenMode mode() const { return m_mode; } 103 112 bool allowsPictureInPicturePlayback() const { return m_allowsPictureInPicturePlayback; } -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm
r185761 r185834 223 223 } 224 224 225 static WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason convertToExitFullScreenReason(AVPlayerViewControllerExitFullScreenReason reason) 226 { 227 switch (reason) { 228 case AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped: 229 return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::DoneButtonTapped; 230 case AVPlayerViewControllerExitFullScreenReasonFullScreenButtonTapped: 231 return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::FullScreenButtonTapped; 232 case AVPlayerViewControllerExitFullScreenReasonPictureInPictureStarted: 233 return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::PictureInPictureStarted; 234 case AVPlayerViewControllerExitFullScreenReasonPinchGestureHandled: 235 return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::PinchGestureHandled; 236 case AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived: 237 return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::RemoteControlStopEventReceived; 238 } 239 } 240 225 241 - (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason 226 242 { 227 243 UNUSED_PARAM(playerViewController); 228 UNUSED_PARAM(reason); 229 if (!self.delegate) 230 return YES; 231 232 if (reason == AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped || reason == AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived) 233 self.delegate->pause(); 234 235 self.delegate->requestExitFullscreen(); 236 return NO; 244 return self.fullscreenInterface->shouldExitFullscreenWithReason(convertToExitFullScreenReason(reason)); 237 245 } 238 246 … … 1146 1154 LOG(Fullscreen, "WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture(%p)", this); 1147 1155 setMode(HTMLMediaElementEnums::VideoFullscreenModePictureInPicture); 1148 1149 if (!hasMode(HTMLMediaElementEnums::VideoFullscreenModeStandard))1150 return;1151 1152 RefPtr<WebVideoFullscreenInterfaceAVKit> strongThis(this);1153 fullscreenMayReturnToInline([strongThis, this](bool visible) {1154 LOG(Fullscreen, "WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture - lambda(%p) - visible(%s)", this, boolString(visible));1155 1156 if (!visible) {1157 [m_window setHidden:YES];1158 [[m_playerViewController view] setHidden:YES];1159 return;1160 }1161 1162 [[m_playerViewController view] layoutIfNeeded];1163 1164 [m_playerViewController exitFullScreenAnimated:YES completionHandler:[strongThis, this] (BOOL completed, NSError*) {1165 if (!completed)1166 return;1167 clearMode(HTMLMediaElementEnums::VideoFullscreenModeStandard);1168 [m_window setHidden:YES];1169 [[m_playerViewController view] setHidden:YES];1170 }];1171 });1172 1156 } 1173 1157 … … 1241 1225 } 1242 1226 1227 bool WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason(WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason reason) 1228 { 1229 if (!m_videoFullscreenModel) 1230 return true; 1231 1232 if (reason == ExitFullScreenReason::PictureInPictureStarted) { 1233 clearMode(HTMLMediaElementEnums::VideoFullscreenModeStandard); 1234 return true; 1235 } 1236 1237 if (reason == ExitFullScreenReason::DoneButtonTapped || reason == ExitFullScreenReason::RemoteControlStopEventReceived) 1238 m_videoFullscreenModel->pause(); 1239 1240 m_videoFullscreenModel->requestExitFullscreen(); 1241 1242 return false; 1243 } 1244 1243 1245 void WebVideoFullscreenInterfaceAVKit::setMode(HTMLMediaElementEnums::VideoFullscreenMode mode) 1244 1246 { -
trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h
r185727 r185834 75 75 @optional 76 76 typedef NS_ENUM(NSInteger, AVPlayerViewControllerExitFullScreenReason) { 77 AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped = 0, 78 AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived = 3, 77 AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped, 78 AVPlayerViewControllerExitFullScreenReasonFullScreenButtonTapped, 79 AVPlayerViewControllerExitFullScreenReasonPinchGestureHandled, 80 AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived, 81 AVPlayerViewControllerExitFullScreenReasonPictureInPictureStarted 79 82 }; 80 83 - (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason;
Note:
See TracChangeset
for help on using the changeset viewer.