Changeset 155249 in webkit


Ignore:
Timestamp:
Sep 7, 2013 8:34:21 AM (11 years ago)
Author:
eric.carlson@apple.com
Message:

MediaStream should fire ended event when all tracks are ended
https://bugs.webkit.org/show_bug.cgi?id=120871

Reviewed by Jer Noble.

Merge https://chromium.googlesource.com/chromium/blink/+/bebd179b65be69e46f2f434a3ec8b1e4aa85cc42

Source/WebCore:

Test: fast/mediastream/MediaStream-onended.html

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::trackEnded): New.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::sourceChangedState): Call didEndTrack when state changes to ReadyStateEnded.
(WebCore::MediaStreamTrack::didEndTrack): New.
(WebCore::MediaStreamTrack::stop): Call didEndTrack.

  • Modules/mediastream/MediaStreamTrack.h:
  • platform/mediastream/MediaStreamDescriptor.h:

(WebCore::MediaStreamDescriptor::MediaStreamDescriptor): Require didEndTrack.

LayoutTests:

  • fast/mediastream/MediaStream-onended-expected.txt: Added.
  • fast/mediastream/MediaStream-onended.html: Added.
Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r155244 r155249  
     12013-09-07  Eric Carlson  <eric.carlson@apple.com>
     2
     3        MediaStream should fire ended event when all tracks are ended
     4        https://bugs.webkit.org/show_bug.cgi?id=120871
     5
     6        Reviewed by Jer Noble.
     7
     8        Merge https://chromium.googlesource.com/chromium/blink/+/bebd179b65be69e46f2f434a3ec8b1e4aa85cc42
     9
     10        * fast/mediastream/MediaStream-onended-expected.txt: Added.
     11        * fast/mediastream/MediaStream-onended.html: Added.
     12
    1132013-09-06  Bem Jones-Bey  <bjonesbe@adobe.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r155248 r155249  
     12013-09-07  Eric Carlson  <eric.carlson@apple.com>
     2
     3        MediaStream should fire ended event when all tracks are ended
     4        https://bugs.webkit.org/show_bug.cgi?id=120871
     5
     6        Reviewed by Jer Noble.
     7
     8        Merge https://chromium.googlesource.com/chromium/blink/+/bebd179b65be69e46f2f434a3ec8b1e4aa85cc42
     9
     10        Test: fast/mediastream/MediaStream-onended.html
     11
     12        * Modules/mediastream/MediaStream.cpp:
     13        (WebCore::MediaStream::trackEnded): New.
     14        * Modules/mediastream/MediaStream.h:
     15
     16        * Modules/mediastream/MediaStreamTrack.cpp:
     17        (WebCore::MediaStreamTrack::sourceChangedState): Call didEndTrack when state changes to ReadyStateEnded.
     18        (WebCore::MediaStreamTrack::didEndTrack): New.
     19        (WebCore::MediaStreamTrack::stop): Call didEndTrack.
     20        * Modules/mediastream/MediaStreamTrack.h:
     21
     22        * platform/mediastream/MediaStreamDescriptor.h:
     23        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor): Require didEndTrack.
     24
    1252013-09-06  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>
    226
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp

    r153926 r155249  
    222222}
    223223
     224void MediaStream::trackEnded()
     225{
     226    for (size_t i = 0; i < m_audioTracks.size(); ++i)
     227        if (!m_audioTracks[i]->ended())
     228            return;
     229   
     230    for (size_t i = 0; i < m_videoTracks.size(); ++i)
     231        if (!m_videoTracks[i]->ended())
     232            return;
     233   
     234    streamEnded();
     235}
     236
    224237void MediaStream::streamEnded()
    225238{
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.h

    r153926 r155249  
    6767
    6868    // MediaStreamDescriptorClient
     69    virtual void trackEnded() OVERRIDE;
    6970    virtual void streamEnded() OVERRIDE;
    7071
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r153926 r155249  
    136136    case MediaStreamSource::ReadyStateEnded:
    137137        dispatchEvent(Event::create(eventNames().endedEvent, false, false));
     138        didEndTrack();
    138139        break;
    139140    }
     141}
     142
     143void MediaStreamTrack::didEndTrack()
     144{
     145    MediaStreamDescriptorClient* client = m_component->stream()->client();
     146    if (!client)
     147        return;
     148   
     149    client->trackEnded();
    140150}
    141151
     
    148158{
    149159    m_stopped = true;
     160    didEndTrack();
    150161}
    151162
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r153926 r155249  
    5454    void setEnabled(bool);
    5555
     56    void didEndTrack();
     57   
    5658    String readyState() const;
    5759
  • trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h

    r155199 r155249  
    4545    virtual ~MediaStreamDescriptorClient() { }
    4646
     47    virtual void trackEnded() = 0;
    4748    virtual void streamEnded() = 0;
    4849    virtual void addRemoteTrack(MediaStreamComponent*) = 0;
Note: See TracChangeset for help on using the changeset viewer.