Title: [268035] trunk/Source/WebCore
- Revision
- 268035
- Author
- peng.l...@apple.com
- Date
- 2020-10-05 22:32:15 -0700 (Mon, 05 Oct 2020)
Log Message
MobileSafari crashes at WebCore: -[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]
https://bugs.webkit.org/show_bug.cgi?id=217356
Reviewed by Alex Christensen.
Since we replaced the RefPtr of VideoFullscreenInterfaceAVKit with a WeakPtr in
WebAVPlayerViewControllerDelegate to fix a leak in r262185, self.fullscreenInterface
could be NULL and we need to add NULL checks.
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerDidStartPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:failedToStartPictureInPictureWithError:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerWillStopPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerDidStopPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:shouldExitFullScreenWithReason:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:]):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (268034 => 268035)
--- trunk/Source/WebCore/ChangeLog 2020-10-06 05:16:33 UTC (rev 268034)
+++ trunk/Source/WebCore/ChangeLog 2020-10-06 05:32:15 UTC (rev 268035)
@@ -1,3 +1,23 @@
+2020-10-05 Peng Liu <peng.l...@apple.com>
+
+ MobileSafari crashes at WebCore: -[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]
+ https://bugs.webkit.org/show_bug.cgi?id=217356
+
+ Reviewed by Alex Christensen.
+
+ Since we replaced the RefPtr of VideoFullscreenInterfaceAVKit with a WeakPtr in
+ WebAVPlayerViewControllerDelegate to fix a leak in r262185, self.fullscreenInterface
+ could be NULL and we need to add NULL checks.
+
+ * platform/ios/VideoFullscreenInterfaceAVKit.mm:
+ (-[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewControllerDidStartPictureInPicture:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewController:failedToStartPictureInPictureWithError:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewControllerWillStopPictureInPicture:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewControllerDidStopPictureInPicture:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewController:shouldExitFullScreenWithReason:]):
+ (-[WebAVPlayerViewControllerDelegate playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:]):
+
2020-10-05 Simon Fraser <simon.fra...@apple.com>
Remove Page::scheduleImmediateRenderingUpdate()
Modified: trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm (268034 => 268035)
--- trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm 2020-10-06 05:16:33 UTC (rev 268034)
+++ trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm 2020-10-06 05:32:15 UTC (rev 268035)
@@ -118,13 +118,15 @@
- (void)playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController
{
UNUSED_PARAM(playerViewController);
- self.fullscreenInterface->willStartPictureInPicture();
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->willStartPictureInPicture();
}
- (void)playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController
{
UNUSED_PARAM(playerViewController);
- self.fullscreenInterface->didStartPictureInPicture();
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->didStartPictureInPicture();
}
- (void)playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error
@@ -131,19 +133,22 @@
{
UNUSED_PARAM(playerViewController);
UNUSED_PARAM(error);
- self.fullscreenInterface->failedToStartPictureInPicture();
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->failedToStartPictureInPicture();
}
- (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController
{
UNUSED_PARAM(playerViewController);
- self.fullscreenInterface->willStopPictureInPicture();
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->willStopPictureInPicture();
}
- (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController
{
UNUSED_PARAM(playerViewController);
- self.fullscreenInterface->didStopPictureInPicture();
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->didStopPictureInPicture();
}
- (BOOL)playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController
@@ -171,6 +176,9 @@
- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason
{
UNUSED_PARAM(playerViewController);
+ if (!self.fullscreenInterface)
+ return YES;
+
return self.fullscreenInterface->shouldExitFullscreenWithReason(convertToExitFullScreenReason(reason));
}
@@ -177,7 +185,8 @@
- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler
{
UNUSED_PARAM(playerViewController);
- self.fullscreenInterface->prepareForPictureInPictureStopWithCompletionHandler(completionHandler);
+ if (self.fullscreenInterface)
+ self.fullscreenInterface->prepareForPictureInPictureStopWithCompletionHandler(completionHandler);
}
- (BOOL)playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:(AVPlayerViewController *)playerViewController
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes