Changeset 187006 in webkit


Ignore:
Timestamp:
Jul 18, 2015 7:14:14 PM (9 years ago)
Author:
mrajca@apple.com
Message:

Media Session: Add support for 'Content' interruption types
https://bugs.webkit.org/show_bug.cgi?id=147042

Reviewed by Eric Carlson.

Tests: Added media/session/content-interruptions

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::handleIndefinitePauseInterruption): Indefinitely pause the session by pausing media

elements and removing them from the set of active participating elements.

  • Modules/mediasession/MediaSession.h:
  • Modules/mediasession/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::didReceiveStartOfInterruptionNotification): Implemented support for 'Content'

interruption types as described in 4.5.2.

Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/platform/mac/TestExpectations

    r186998 r187006  
    994994
    995995# ENABLE(MEDIA_SESSION) is disabled
     996media/session/content-interruptions.html
    996997media/session/controls-existence.html
    997998media/session/default-session.html
  • trunk/Source/WebCore/ChangeLog

    r187005 r187006  
     12015-07-17  Matt Rajca  <mrajca@apple.com>
     2
     3        Media Session: Add support for 'Content' interruption types
     4        https://bugs.webkit.org/show_bug.cgi?id=147042
     5
     6        Reviewed by Eric Carlson.
     7
     8        Tests: Added media/session/content-interruptions
     9
     10        * Modules/mediasession/MediaSession.cpp:
     11        (WebCore::MediaSession::handleIndefinitePauseInterruption): Indefinitely pause the session by pausing media
     12         elements and removing them from the set of active participating elements.
     13        * Modules/mediasession/MediaSession.h:
     14        * Modules/mediasession/MediaSessionManager.cpp:
     15        (WebCore::MediaSessionManager::didReceiveStartOfInterruptionNotification): Implemented support for 'Content'
     16         interruption types as described in 4.5.2.
     17
    1182015-07-16  Matt Rajca  <mrajca@apple.com>
    219
  • trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp

    r186918 r187006  
    253253}
    254254
     255void MediaSession::handleIndefinitePauseInterruption()
     256{
     257    safelyIterateActiveMediaElements([](HTMLMediaElement* element) {
     258        element->pause();
     259    });
     260
     261    m_activeParticipatingElements.clear();
     262    m_currentState = State::Idle;
     263}
     264
    255265void MediaSession::handlePauseInterruption()
    256266{
  • trunk/Source/WebCore/Modules/mediasession/MediaSession.h

    r187004 r187006  
    7878
    7979    void handleDuckInterruption();
     80    void handleIndefinitePauseInterruption();
    8081    void handlePauseInterruption();
    8182    void handleUnduckInterruption();
  • trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp

    r186918 r187006  
    114114
    115115        // 3. Run these substeps:
    116         if (interruptingCategory == MediaSessionInterruptingCategory::Transient) {
    117             // - If interrupting media session category is Transient
     116        if (interruptingCategory == MediaSessionInterruptingCategory::Content) {
     117            // -  If interrupting media session category is Content:
     118            //    If media session's current media session type is Default or Content then indefinitely pause all of media
     119            //    session's active audio-producing participants and set media session's current state to idle.
     120            if (session->kindEnum() == MediaSession::Kind::Default || session->kindEnum() == MediaSession::Kind::Content)
     121                session->handleIndefinitePauseInterruption();
     122        } else if (interruptingCategory == MediaSessionInterruptingCategory::Transient) {
     123            // - If interrupting media session category is Transient:
    118124            //   If media session's current media session type is Default or Content then duck all of media session's active
    119125            //   audio-producing participants and set media session's current state to interrupted.
Note: See TracChangeset for help on using the changeset viewer.