Title: [185834] trunk/Source/WebCore
- Revision
- 185834
- Author
- commit-qu...@webkit.org
- Date
- 2015-06-22 10:41:59 -0700 (Mon, 22 Jun 2015)
Log Message
Do not exit fullscreen when starting PiP since this is done automatically.
https://bugs.webkit.org/show_bug.cgi?id=144871
Patch by Jeremy Jones <jere...@apple.com> on 2015-06-22
Reviewed by Darin Adler.
Since we don't explicitly exit fullscreen, update state in shouldExitFullscreenWithReason()
* platform/ios/WebVideoFullscreenInterfaceAVKit.h: Declare shouldExitFullscreenWithReason().
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerController playerViewController:shouldExitFullScreenWithReason:]): Forward to WebVideoFullscreenInterfaceAVKit.
(WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): Added.
(WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture): Remove enter fullscreen code.
* platform/spi/cocoa/AVKitSPI.h: Add missing enums.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (185833 => 185834)
--- trunk/Source/WebCore/ChangeLog 2015-06-22 17:11:54 UTC (rev 185833)
+++ trunk/Source/WebCore/ChangeLog 2015-06-22 17:41:59 UTC (rev 185834)
@@ -1,3 +1,19 @@
+2015-06-22 Jeremy Jones <jere...@apple.com>
+
+ Do not exit fullscreen when starting PiP since this is done automatically.
+ https://bugs.webkit.org/show_bug.cgi?id=144871
+
+ Reviewed by Darin Adler.
+
+ Since we don't explicitly exit fullscreen, update state in shouldExitFullscreenWithReason()
+
+ * platform/ios/WebVideoFullscreenInterfaceAVKit.h: Declare shouldExitFullscreenWithReason().
+ * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
+ (-[WebAVPlayerController playerViewController:shouldExitFullScreenWithReason:]): Forward to WebVideoFullscreenInterfaceAVKit.
+ (WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): Added.
+ (WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture): Remove enter fullscreen code.
+ * platform/spi/cocoa/AVKitSPI.h: Add missing enums.
+
2015-06-22 Daniel Bates <daba...@apple.com>
AX: UI Automation cannot find AutoFill or search cancel buttons
Modified: trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h (185833 => 185834)
--- trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h 2015-06-22 17:11:54 UTC (rev 185833)
+++ trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h 2015-06-22 17:41:59 UTC (rev 185834)
@@ -99,6 +99,15 @@
WEBCORE_EXPORT virtual void requestHideAndExitFullscreen();
WEBCORE_EXPORT virtual void preparedToReturnToInline(bool visible, const IntRect& inlineRect);
+ enum class ExitFullScreenReason {
+ DoneButtonTapped,
+ FullScreenButtonTapped,
+ PinchGestureHandled,
+ RemoteControlStopEventReceived,
+ PictureInPictureStarted
+ };
+
+ bool shouldExitFullscreenWithReason(ExitFullScreenReason);
HTMLMediaElementEnums::VideoFullscreenMode mode() const { return m_mode; }
bool allowsPictureInPicturePlayback() const { return m_allowsPictureInPicturePlayback; }
WEBCORE_EXPORT bool mayAutomaticallyShowVideoPictureInPicture() const;
Modified: trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm (185833 => 185834)
--- trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm 2015-06-22 17:11:54 UTC (rev 185833)
+++ trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm 2015-06-22 17:41:59 UTC (rev 185834)
@@ -222,18 +222,26 @@
self.fullscreenInterface->didStopPictureInPicture();
}
+static WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason convertToExitFullScreenReason(AVPlayerViewControllerExitFullScreenReason reason)
+{
+ switch (reason) {
+ case AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped:
+ return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::DoneButtonTapped;
+ case AVPlayerViewControllerExitFullScreenReasonFullScreenButtonTapped:
+ return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::FullScreenButtonTapped;
+ case AVPlayerViewControllerExitFullScreenReasonPictureInPictureStarted:
+ return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::PictureInPictureStarted;
+ case AVPlayerViewControllerExitFullScreenReasonPinchGestureHandled:
+ return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::PinchGestureHandled;
+ case AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived:
+ return WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason::RemoteControlStopEventReceived;
+ }
+}
+
- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason
{
UNUSED_PARAM(playerViewController);
- UNUSED_PARAM(reason);
- if (!self.delegate)
- return YES;
-
- if (reason == AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped || reason == AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived)
- self.delegate->pause();
-
- self.delegate->requestExitFullscreen();
- return NO;
+ return self.fullscreenInterface->shouldExitFullscreenWithReason(convertToExitFullScreenReason(reason));
}
- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler
@@ -1145,30 +1153,6 @@
{
LOG(Fullscreen, "WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture(%p)", this);
setMode(HTMLMediaElementEnums::VideoFullscreenModePictureInPicture);
-
- if (!hasMode(HTMLMediaElementEnums::VideoFullscreenModeStandard))
- return;
-
- RefPtr<WebVideoFullscreenInterfaceAVKit> strongThis(this);
- fullscreenMayReturnToInline([strongThis, this](bool visible) {
- LOG(Fullscreen, "WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture - lambda(%p) - visible(%s)", this, boolString(visible));
-
- if (!visible) {
- [m_window setHidden:YES];
- [[m_playerViewController view] setHidden:YES];
- return;
- }
-
- [[m_playerViewController view] layoutIfNeeded];
-
- [m_playerViewController exitFullScreenAnimated:YES completionHandler:[strongThis, this] (BOOL completed, NSError*) {
- if (!completed)
- return;
- clearMode(HTMLMediaElementEnums::VideoFullscreenModeStandard);
- [m_window setHidden:YES];
- [[m_playerViewController view] setHidden:YES];
- }];
- });
}
void WebVideoFullscreenInterfaceAVKit::didStartPictureInPicture()
@@ -1240,6 +1224,24 @@
});
}
+bool WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason(WebVideoFullscreenInterfaceAVKit::ExitFullScreenReason reason)
+{
+ if (!m_videoFullscreenModel)
+ return true;
+
+ if (reason == ExitFullScreenReason::PictureInPictureStarted) {
+ clearMode(HTMLMediaElementEnums::VideoFullscreenModeStandard);
+ return true;
+ }
+
+ if (reason == ExitFullScreenReason::DoneButtonTapped || reason == ExitFullScreenReason::RemoteControlStopEventReceived)
+ m_videoFullscreenModel->pause();
+
+ m_videoFullscreenModel->requestExitFullscreen();
+
+ return false;
+}
+
void WebVideoFullscreenInterfaceAVKit::setMode(HTMLMediaElementEnums::VideoFullscreenMode mode)
{
HTMLMediaElementEnums::VideoFullscreenMode newMode = m_mode | mode;
Modified: trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h (185833 => 185834)
--- trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h 2015-06-22 17:11:54 UTC (rev 185833)
+++ trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h 2015-06-22 17:41:59 UTC (rev 185834)
@@ -74,8 +74,11 @@
@protocol AVPlayerViewControllerDelegate <NSObject>
@optional
typedef NS_ENUM(NSInteger, AVPlayerViewControllerExitFullScreenReason) {
- AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped = 0,
- AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived = 3,
+ AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped,
+ AVPlayerViewControllerExitFullScreenReasonFullScreenButtonTapped,
+ AVPlayerViewControllerExitFullScreenReasonPinchGestureHandled,
+ AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived,
+ AVPlayerViewControllerExitFullScreenReasonPictureInPictureStarted
};
- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason;
- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes