Title: [252240] trunk/Source/WebCore
Revision
252240
Author
commit-qu...@webkit.org
Date
2019-11-08 10:06:43 -0800 (Fri, 08 Nov 2019)

Log Message

Picture-in-Picture events are not fired when enter/exit the Picture-in-Picture mode through modern media controls
https://bugs.webkit.org/show_bug.cgi?id=203933

Patch by Peng Liu <peng.l...@apple.com> on 2019-11-08
Reviewed by Eric Carlson.

Covered by existing layout test cases. No new test is required.

* Modules/modern-media-controls/media/pip-support.js:
(PiPSupport.prototype.buttonWasPressed):
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (252239 => 252240)


--- trunk/Source/WebCore/ChangeLog	2019-11-08 16:58:49 UTC (rev 252239)
+++ trunk/Source/WebCore/ChangeLog	2019-11-08 18:06:43 UTC (rev 252240)
@@ -1,3 +1,18 @@
+2019-11-08  Peng Liu  <peng.l...@apple.com>
+
+        Picture-in-Picture events are not fired when enter/exit the Picture-in-Picture mode through modern media controls
+        https://bugs.webkit.org/show_bug.cgi?id=203933
+
+        Reviewed by Eric Carlson.
+
+        Covered by existing layout test cases. No new test is required.
+
+        * Modules/modern-media-controls/media/pip-support.js:
+        (PiPSupport.prototype.buttonWasPressed):
+        * Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
+        (WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
+        (WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):
+
 2019-11-08  Carlos Garcia Campos  <cgar...@igalia.com>
 
         'Strikethrough' editing command reported as 'formatUnderline'

Modified: trunk/Source/WebCore/Modules/modern-media-controls/media/pip-support.js (252239 => 252240)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/pip-support.js	2019-11-08 16:58:49 UTC (rev 252239)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/pip-support.js	2019-11-08 18:06:43 UTC (rev 252240)
@@ -49,7 +49,10 @@
     buttonWasPressed(control)
     {
         const media = this.mediaController.media;
-        media.webkitSetPresentationMode(media.webkitPresentationMode === PiPMode ? InlineMode : PiPMode);
+        if (!document.pictureInPictureElement)
+            media.requestPictureInPicture();
+        else
+            document.exitPictureInPicture();
     }
 
     syncControl()

Modified: trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp (252239 => 252240)


--- trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp	2019-11-08 16:58:49 UTC (rev 252239)
+++ trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp	2019-11-08 18:06:43 UTC (rev 252240)
@@ -152,11 +152,12 @@
     m_videoElement.document().setPictureInPictureElement(&m_videoElement);
     m_pictureInPictureWindow->setSize(windowSize);
 
+    EnterPictureInPictureEvent::Init initializer;
+    initializer.bubbles = true;
+    initializer.pictureInPictureWindow = m_pictureInPictureWindow;
+    m_videoElement.scheduleEvent(EnterPictureInPictureEvent::create(eventNames().enterpictureinpictureEvent, WTFMove(initializer)));
+
     if (m_enterPictureInPicturePromise) {
-        EnterPictureInPictureEvent::Init initializer;
-        initializer.bubbles = true;
-        initializer.pictureInPictureWindow = m_pictureInPictureWindow;
-        m_videoElement.scheduleEvent(EnterPictureInPictureEvent::create(eventNames().enterpictureinpictureEvent, WTFMove(initializer)));
         m_enterPictureInPicturePromise->resolve<IDLInterface<PictureInPictureWindow>>(*m_pictureInPictureWindow);
         m_enterPictureInPicturePromise = nullptr;
     }
@@ -167,9 +168,9 @@
     INFO_LOG(LOGIDENTIFIER);
     m_pictureInPictureWindow->close();
     m_videoElement.document().setPictureInPictureElement(nullptr);
+    m_videoElement.scheduleEvent(Event::create(eventNames().leavepictureinpictureEvent, Event::CanBubble::Yes, Event::IsCancelable::No));
 
     if (m_exitPictureInPicturePromise) {
-        m_videoElement.scheduleEvent(Event::create(eventNames().leavepictureinpictureEvent, Event::CanBubble::Yes, Event::IsCancelable::No));
         m_exitPictureInPicturePromise->resolve();
         m_exitPictureInPicturePromise = nullptr;
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to