Title: [255008] branches/safari-609-branch/Source/WebCore
Revision
255008
Author
[email protected]
Date
2020-01-23 13:43:29 -0800 (Thu, 23 Jan 2020)

Log Message

Cherry-pick r254512. rdar://problem/58606195

    A video element cannot enter fullscreen from PiP mode
    https://bugs.webkit.org/show_bug.cgi?id=204468

    Reviewed by Eric Carlson.

    This patch fixes two issues:
    - Make sure the message exchanges between WebContent and UI process can complete in the scenario that switching to fullscreen from PiP.
    - Do not send fullscreenModeChanged event with mode = 3 (both fullscreen and Picture-in-Picture) to WebContent process.

    We need to use API tests to verify the fix.
    No new tests are added because of webkit.org/b/203724.

    * platform/ios/VideoFullscreenInterfaceAVKit.mm:
    (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
    (VideoFullscreenInterfaceAVKit::doEnterFullscreen):
    (VideoFullscreenInterfaceAVKit::setMode):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-609-branch/Source/WebCore/ChangeLog (255007 => 255008)


--- branches/safari-609-branch/Source/WebCore/ChangeLog	2020-01-23 21:43:26 UTC (rev 255007)
+++ branches/safari-609-branch/Source/WebCore/ChangeLog	2020-01-23 21:43:29 UTC (rev 255008)
@@ -1,5 +1,48 @@
 2020-01-23  Russell Epstein  <[email protected]>
 
+        Cherry-pick r254512. rdar://problem/58606195
+
+    A video element cannot enter fullscreen from PiP mode
+    https://bugs.webkit.org/show_bug.cgi?id=204468
+    
+    Reviewed by Eric Carlson.
+    
+    This patch fixes two issues:
+    - Make sure the message exchanges between WebContent and UI process can complete in the scenario that switching to fullscreen from PiP.
+    - Do not send fullscreenModeChanged event with mode = 3 (both fullscreen and Picture-in-Picture) to WebContent process.
+    
+    We need to use API tests to verify the fix.
+    No new tests are added because of webkit.org/b/203724.
+    
+    * platform/ios/VideoFullscreenInterfaceAVKit.mm:
+    (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
+    (VideoFullscreenInterfaceAVKit::doEnterFullscreen):
+    (VideoFullscreenInterfaceAVKit::setMode):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254512 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2020-01-14  Peng Liu  <[email protected]>
+
+            A video element cannot enter fullscreen from PiP mode
+            https://bugs.webkit.org/show_bug.cgi?id=204468
+
+            Reviewed by Eric Carlson.
+
+            This patch fixes two issues:
+            - Make sure the message exchanges between WebContent and UI process can complete in the scenario that switching to fullscreen from PiP.
+            - Do not send fullscreenModeChanged event with mode = 3 (both fullscreen and Picture-in-Picture) to WebContent process.
+
+            We need to use API tests to verify the fix.
+            No new tests are added because of webkit.org/b/203724.
+
+            * platform/ios/VideoFullscreenInterfaceAVKit.mm:
+            (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
+            (VideoFullscreenInterfaceAVKit::doEnterFullscreen):
+            (VideoFullscreenInterfaceAVKit::setMode):
+
+2020-01-23  Russell Epstein  <[email protected]>
+
         Cherry-pick r254497. rdar://problem/58606212
 
     REGRESSION (Catalina) non-scrolling iframe prevents document scrolling

Modified: branches/safari-609-branch/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm (255007 => 255008)


--- branches/safari-609-branch/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm	2020-01-23 21:43:26 UTC (rev 255007)
+++ branches/safari-609-branch/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm	2020-01-23 21:43:29 UTC (rev 255008)
@@ -1075,6 +1075,9 @@
 
         if (m_exitFullscreenNeedsExitPictureInPicture)
             doExitFullscreen();
+
+        if (m_enterFullscreenNeedsExitPictureInPicture)
+            doEnterFullscreen();
         return;
     }
 
@@ -1317,6 +1320,7 @@
     [[m_playerViewController view] layoutIfNeeded];
     if (m_targetMode.hasFullscreen() && !m_currentMode.hasFullscreen()) {
         m_enterFullscreenNeedsEnterFullscreen = true;
+        [m_window setHidden:NO];
         [m_playerViewController enterFullScreenAnimated:YES completionHandler:[this, protectedThis = makeRefPtr(this)] (BOOL success, NSError *error) {
             enterFullscreenHandler(success, error);
         }];
@@ -1468,8 +1472,10 @@
         return;
 
     m_currentMode.setMode(mode);
+    // Mode::mode() can be 3 (VideoFullscreenModeStandard | VideoFullscreenModePictureInPicture).
+    // HTMLVideoElement does not expect such a value in the fullscreenModeChanged() callback.
     if (m_videoFullscreenModel)
-        m_videoFullscreenModel->fullscreenModeChanged(m_currentMode.mode());
+        m_videoFullscreenModel->fullscreenModeChanged(mode);
 }
 
 void VideoFullscreenInterfaceAVKit::clearMode(HTMLMediaElementEnums::VideoFullscreenMode mode)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to