Changeset 202624 in webkit


Ignore:
Timestamp:
Jun 29, 2016 9:10:44 AM (8 years ago)
Author:
adam.bergkvist@ericsson.com
Message:

REGRESSION(r202337) [WebRTC] Crash when loading html5test.com
https://bugs.webkit.org/show_bug.cgi?id=159145

Reviewed by Eric Carlson.

MediaEndpointPeerConnection uses an implementation of the MediaEndpoint interface to
interact with the port's WebRTC backend. A mock (MockMediaEndpoint) is used for testing.
This change adds an "empty" MediaEndpoint implementation that simplifies the case when a
port builds and tests with MediaEndpointPeerConnection/MockMediaEndpoint, but doesn't have
a "real" MediaEndpoint implementation yet (to use with MiniBrowser).

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::MediaEndpointPeerConnection::MediaEndpointPeerConnection):

  • platform/mediastream/MediaEndpoint.cpp:

(WebCore::EmptyRealtimeMediaSource::create):
(WebCore::EmptyRealtimeMediaSource::EmptyRealtimeMediaSource):
(WebCore::EmptyMediaEndpoint::EmptyMediaEndpoint):
(WebCore::createMediaEndpoint):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r202620 r202624  
     12016-06-29  Adam Bergkvist  <adam.bergkvist@ericsson.com>
     2
     3        REGRESSION(r202337) [WebRTC] Crash when loading html5test.com
     4        https://bugs.webkit.org/show_bug.cgi?id=159145
     5
     6        Reviewed by Eric Carlson.
     7
     8        MediaEndpointPeerConnection uses an implementation of the MediaEndpoint interface to
     9        interact with the port's WebRTC backend. A mock (MockMediaEndpoint) is used for testing.
     10        This change adds an "empty" MediaEndpoint implementation that simplifies the case when a
     11        port builds and tests with MediaEndpointPeerConnection/MockMediaEndpoint, but doesn't have
     12        a "real" MediaEndpoint implementation yet (to use with MiniBrowser).
     13
     14        * Modules/mediastream/MediaEndpointPeerConnection.cpp:
     15        (WebCore::MediaEndpointPeerConnection::MediaEndpointPeerConnection):
     16        * platform/mediastream/MediaEndpoint.cpp:
     17        (WebCore::EmptyRealtimeMediaSource::create):
     18        (WebCore::EmptyRealtimeMediaSource::EmptyRealtimeMediaSource):
     19        (WebCore::EmptyMediaEndpoint::EmptyMediaEndpoint):
     20        (WebCore::createMediaEndpoint):
     21
    1222016-06-29  Alejandro G. Castro  <alex@igalia.com>
    223
  • trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp

    r202439 r202624  
    7171MediaEndpointPeerConnection::MediaEndpointPeerConnection(PeerConnectionBackendClient* client)
    7272    : m_client(client)
     73    , m_mediaEndpoint(MediaEndpoint::create(*this))
    7374    , m_sdpProcessor(std::unique_ptr<SDPProcessor>(new SDPProcessor(m_client->scriptExecutionContext())))
    7475    , m_cname(randomString(16))
     
    7677    , m_icePassword(randomString(22))
    7778{
    78     m_mediaEndpoint = MediaEndpoint::create(*this);
    7979    ASSERT(m_mediaEndpoint);
    8080
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp

    r198492 r202624  
    3434#include "MediaEndpoint.h"
    3535
     36#include "MediaPayload.h"
     37#include "RealtimeMediaSource.h"
     38
    3639namespace WebCore {
    3740
    38 static std::unique_ptr<MediaEndpoint> createMediaEndpoint(MediaEndpointClient&)
     41class EmptyRealtimeMediaSource : public RealtimeMediaSource {
     42public:
     43    static Ref<EmptyRealtimeMediaSource> create() { return adoptRef(*new EmptyRealtimeMediaSource()); }
     44
     45    RefPtr<RealtimeMediaSourceCapabilities> capabilities() override { return nullptr; }
     46    const RealtimeMediaSourceSettings& settings() override { return m_sourceSettings; }
     47
     48private:
     49    EmptyRealtimeMediaSource()
     50        : RealtimeMediaSource(emptyString(), RealtimeMediaSource::None, emptyString())
     51        { }
     52
     53    RealtimeMediaSourceSettings m_sourceSettings;
     54};
     55
     56class EmptyMediaEndpoint : public MediaEndpoint {
     57public:
     58    EmptyMediaEndpoint(MediaEndpointClient&) { }
     59
     60    void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override { }
     61
     62    void generateDtlsInfo() override { }
     63    MediaPayloadVector getDefaultAudioPayloads() override { return MediaPayloadVector(); }
     64    MediaPayloadVector getDefaultVideoPayloads() override { return MediaPayloadVector(); }
     65    MediaPayloadVector filterPayloads(const MediaPayloadVector&, const MediaPayloadVector&) override { return MediaPayloadVector(); }
     66
     67    UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool) override { return UpdateResult::Failed; }
     68    UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool) override { return UpdateResult::Failed; }
     69
     70    void addRemoteCandidate(IceCandidate&, const String&, const String&, const String&) override { }
     71
     72    Ref<RealtimeMediaSource> createMutedRemoteSource(const String&, RealtimeMediaSource::Type) override { return EmptyRealtimeMediaSource::create(); }
     73    void replaceSendSource(RealtimeMediaSource&, const String&) override { }
     74
     75    void stop() override { }
     76};
     77
     78static std::unique_ptr<MediaEndpoint> createMediaEndpoint(MediaEndpointClient& client)
    3979{
    40     return nullptr;
     80    return std::make_unique<EmptyMediaEndpoint>(client);
    4181}
    4282
Note: See TracChangeset for help on using the changeset viewer.