Changeset 252240 in webkit


Ignore:
Timestamp:
Nov 8, 2019 10:06:43 AM (4 years ago)
Author:
commit-queue@webkit.org
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 Liu> 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):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252233 r252240  
     12019-11-08  Peng Liu  <peng.liu6@apple.com>
     2
     3        Picture-in-Picture events are not fired when enter/exit the Picture-in-Picture mode through modern media controls
     4        https://bugs.webkit.org/show_bug.cgi?id=203933
     5
     6        Reviewed by Eric Carlson.
     7
     8        Covered by existing layout test cases. No new test is required.
     9
     10        * Modules/modern-media-controls/media/pip-support.js:
     11        (PiPSupport.prototype.buttonWasPressed):
     12        * Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
     13        (WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
     14        (WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):
     15
    1162019-11-08  Carlos Garcia Campos  <cgarcia@igalia.com>
    217
  • trunk/Source/WebCore/Modules/modern-media-controls/media/pip-support.js

    r214468 r252240  
    5050    {
    5151        const media = this.mediaController.media;
    52         media.webkitSetPresentationMode(media.webkitPresentationMode === PiPMode ? InlineMode : PiPMode);
     52        if (!document.pictureInPictureElement)
     53            media.requestPictureInPicture();
     54        else
     55            document.exitPictureInPicture();
    5356    }
    5457
  • trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp

    r251834 r252240  
    153153    m_pictureInPictureWindow->setSize(windowSize);
    154154
     155    EnterPictureInPictureEvent::Init initializer;
     156    initializer.bubbles = true;
     157    initializer.pictureInPictureWindow = m_pictureInPictureWindow;
     158    m_videoElement.scheduleEvent(EnterPictureInPictureEvent::create(eventNames().enterpictureinpictureEvent, WTFMove(initializer)));
     159
    155160    if (m_enterPictureInPicturePromise) {
    156         EnterPictureInPictureEvent::Init initializer;
    157         initializer.bubbles = true;
    158         initializer.pictureInPictureWindow = m_pictureInPictureWindow;
    159         m_videoElement.scheduleEvent(EnterPictureInPictureEvent::create(eventNames().enterpictureinpictureEvent, WTFMove(initializer)));
    160161        m_enterPictureInPicturePromise->resolve<IDLInterface<PictureInPictureWindow>>(*m_pictureInPictureWindow);
    161162        m_enterPictureInPicturePromise = nullptr;
     
    168169    m_pictureInPictureWindow->close();
    169170    m_videoElement.document().setPictureInPictureElement(nullptr);
     171    m_videoElement.scheduleEvent(Event::create(eventNames().leavepictureinpictureEvent, Event::CanBubble::Yes, Event::IsCancelable::No));
    170172
    171173    if (m_exitPictureInPicturePromise) {
    172         m_videoElement.scheduleEvent(Event::create(eventNames().leavepictureinpictureEvent, Event::CanBubble::Yes, Event::IsCancelable::No));
    173174        m_exitPictureInPicturePromise->resolve();
    174175        m_exitPictureInPicturePromise = nullptr;
Note: See TracChangeset for help on using the changeset viewer.