⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 248718 in webkit


Ignore:
Timestamp:
Aug 15, 2019, 10:12:52 AM (7 years ago)
Author:
youenn@apple.com
Message:

Make mock libwebrtc tests run with unified plan
https://bugs.webkit.org/show_bug.cgi?id=200713

Reviewed by Alex Christensen.

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Update mock endpoint to pass mock webrtc tests with unified plan.
This requires implementing support for mock transceivers.
Covered by existing tests.

  • testing/Internals.cpp:

(WebCore::Internals::useMockRTCPeerConnectionFactory):
Update assert to mandate unified plan.

  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
(WebCore::MockLibWebRTCPeerConnection::AddTrack):
(WebCore::MockLibWebRTCPeerConnection::RemoveTrack):
(WebCore::MockLibWebRTCPeerConnection::CreateOffer):
(WebCore::MockLibWebRTCPeerConnection::CreateAnswer):

  • testing/MockLibWebRTCPeerConnection.h:

(WebCore::MockRtpSender::MockRtpSender):
(WebCore::MockRtpReceiver::id const):
(WebCore::MockRtpReceiver::GetParameters const):
(WebCore::MockRtpReceiver::SetParameters):
(WebCore::MockRtpReceiver::SetObserver):
(WebCore::MockRtpTransceiver::MockRtpTransceiver):
(WebCore::MockLibWebRTCPeerConnection::MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::gotLocalDescription):

LayoutTests:

Enable unified plan.

  • fast/mediastream/RTCPeerConnection-icecandidate-event.html:
  • fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html:
  • fast/mediastream/RTCPeerConnection-inspect-answer.html:
  • fast/mediastream/RTCPeerConnection-inspect-offer.html:
  • fast/mediastream/RTCPeerConnection-media-setup-single-dialog.html:
  • fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid.html:
  • fast/mediastream/RTCPeerConnection-setLocalDescription-offer.html:
  • fast/mediastream/RTCPeerConnection-setRemoteDescription-offer.html:
  • webrtc/libwebrtc/release-while-creating-offer.html:
  • webrtc/libwebrtc/release-while-getting-stats.html:
  • webrtc/libwebrtc/release-while-setting-local-description.html:
Location:
trunk
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r248706 r248718  
     12019-08-15  Youenn Fablet  <youenn@apple.com>
     2
     3        Make mock libwebrtc tests run with unified plan
     4        https://bugs.webkit.org/show_bug.cgi?id=200713
     5
     6        Reviewed by Alex Christensen.
     7
     8        Enable unified plan.
     9
     10        * fast/mediastream/RTCPeerConnection-icecandidate-event.html:
     11        * fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html:
     12        * fast/mediastream/RTCPeerConnection-inspect-answer.html:
     13        * fast/mediastream/RTCPeerConnection-inspect-offer.html:
     14        * fast/mediastream/RTCPeerConnection-media-setup-single-dialog.html:
     15        * fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid.html:
     16        * fast/mediastream/RTCPeerConnection-setLocalDescription-offer.html:
     17        * fast/mediastream/RTCPeerConnection-setRemoteDescription-offer.html:
     18        * webrtc/libwebrtc/release-while-creating-offer.html:
     19        * webrtc/libwebrtc/release-while-getting-stats.html:
     20        * webrtc/libwebrtc/release-while-setting-local-description.html:
     21
    1222019-08-14  Myles C. Maxfield  <mmaxfield@apple.com>
    223
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-icecandidate-event.html

    r235809 r248718  
    88        <script>
    99            description("Test RTCPeerConnection 'icecandidate' event and gathering done");
    10 
    11             if (window.testRunner)
    12                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    1310
    1411            if (window.internals)
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html

    r235809 r248718  
    88        <script>
    99            description("Test RTCPeerConnection 'iceconnectionstatechange' event");
    10             if (window.testRunner)
    11                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    1210
    1311            if (window.internals)
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-inspect-answer.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-inspect-offer.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-media-setup-single-dialog.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setLocalDescription-offer.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer.html

    r235809 r248718  
    77    <body>
    88        <script>
    9             if (window.testRunner)
    10                 testRunner.setWebRTCUnifiedPlanEnabled(false);
    11 
    129            if (window.internals)
    1310                internals.useMockRTCPeerConnectionFactory("");
  • trunk/LayoutTests/webrtc/libwebrtc/release-while-creating-offer.html

    r235809 r248718  
    77<script>
    88self.jsTestIsAsync = true;
    9 
    10 if (window.testRunner)
    11     testRunner.setWebRTCUnifiedPlanEnabled(false);
    129
    1310if (window.internals)
  • trunk/LayoutTests/webrtc/libwebrtc/release-while-getting-stats.html

    r235809 r248718  
    77<script>
    88self.jsTestIsAsync = true;
    9 
    10 if (window.testRunner)
    11     testRunner.setWebRTCUnifiedPlanEnabled(false);
    129
    1310if (window.internals)
  • trunk/LayoutTests/webrtc/libwebrtc/release-while-setting-local-description.html

    r235809 r248718  
    1010// Silence unhandled rejection messages.
    1111window.onunhandledrejection = () => false;
    12 
    13 if (window.testRunner)
    14     testRunner.setWebRTCUnifiedPlanEnabled(false);
    1512
    1613if (window.internals)
  • trunk/Source/ThirdParty/libwebrtc/ChangeLog

    r248697 r248718  
     12019-08-15  Youenn Fablet  <youenn@apple.com>
     2
     3        Make mock libwebrtc tests run with unified plan
     4        https://bugs.webkit.org/show_bug.cgi?id=200713
     5
     6        Reviewed by Alex Christensen.
     7
     8        * Configurations/libwebrtc.iOS.exp:
     9        * Configurations/libwebrtc.iOSsim.exp:
     10        * Configurations/libwebrtc.mac.exp:
     11
    1122019-08-14  Keith Rollin  <krollin@apple.com>
    213
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp

    r248592 r248718  
    254254__ZN3rtc11CryptStringD1Ev
    255255__ZN3rtc11CryptStringC1ERKS0_
     256__ZN6webrtc20RtpReceiverInterface17SetFrameDecryptorEN3rtc13scoped_refptrINS_23FrameDecryptorInterfaceEEE
     257__ZN6webrtc23RtpTransceiverInterface19SetCodecPreferencesEN3rtc9ArrayViewINS_18RtpCodecCapabilityELln4711EEE
     258__ZNK6webrtc20RtpReceiverInterface10GetSourcesEv
     259__ZNK6webrtc20RtpReceiverInterface10stream_idsEv
     260__ZNK6webrtc20RtpReceiverInterface17GetFrameDecryptorEv
     261__ZNK6webrtc20RtpReceiverInterface7streamsEv
     262__ZNK6webrtc23RtpTransceiverInterface15fired_directionEv
     263__ZTVN6webrtc20RtpReceiverInterfaceE
     264__ZTVN6webrtc23RtpTransceiverInterfaceE
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp

    r248592 r248718  
    255255__ZN3rtc11CryptStringD1Ev
    256256__ZN3rtc11CryptStringC1ERKS0_
     257__ZN6webrtc20RtpReceiverInterface17SetFrameDecryptorEN3rtc13scoped_refptrINS_23FrameDecryptorInterfaceEEE
     258__ZN6webrtc23RtpTransceiverInterface19SetCodecPreferencesEN3rtc9ArrayViewINS_18RtpCodecCapabilityELln4711EEE
     259__ZNK6webrtc20RtpReceiverInterface10GetSourcesEv
     260__ZNK6webrtc20RtpReceiverInterface10stream_idsEv
     261__ZNK6webrtc20RtpReceiverInterface17GetFrameDecryptorEv
     262__ZNK6webrtc20RtpReceiverInterface7streamsEv
     263__ZNK6webrtc23RtpTransceiverInterface15fired_directionEv
     264__ZTVN6webrtc20RtpReceiverInterfaceE
     265__ZTVN6webrtc23RtpTransceiverInterfaceE
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp

    r248592 r248718  
    255255__ZN3rtc11CryptStringD1Ev
    256256__ZN3rtc11CryptStringC1ERKS0_
     257__ZN6webrtc20RtpReceiverInterface17SetFrameDecryptorEN3rtc13scoped_refptrINS_23FrameDecryptorInterfaceEEE
     258__ZN6webrtc23RtpTransceiverInterface19SetCodecPreferencesEN3rtc9ArrayViewINS_18RtpCodecCapabilityELln4711EEE
     259__ZNK6webrtc20RtpReceiverInterface10GetSourcesEv
     260__ZNK6webrtc20RtpReceiverInterface10stream_idsEv
     261__ZNK6webrtc20RtpReceiverInterface17GetFrameDecryptorEv
     262__ZNK6webrtc20RtpReceiverInterface7streamsEv
     263__ZNK6webrtc23RtpTransceiverInterface15fired_directionEv
     264__ZTVN6webrtc20RtpReceiverInterfaceE
     265__ZTVN6webrtc23RtpTransceiverInterfaceE
  • trunk/Source/WebCore/ChangeLog

    r248714 r248718  
     12019-08-15  Youenn Fablet  <youenn@apple.com>
     2
     3        Make mock libwebrtc tests run with unified plan
     4        https://bugs.webkit.org/show_bug.cgi?id=200713
     5
     6        Reviewed by Alex Christensen.
     7
     8        Update mock endpoint to pass mock webrtc tests with unified plan.
     9        This requires implementing support for mock transceivers.
     10        Covered by existing tests.
     11
     12        * testing/Internals.cpp:
     13        (WebCore::Internals::useMockRTCPeerConnectionFactory):
     14        Update assert to mandate unified plan.
     15        * testing/MockLibWebRTCPeerConnection.cpp:
     16        (WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
     17        (WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
     18        (WebCore::MockLibWebRTCPeerConnection::AddTrack):
     19        (WebCore::MockLibWebRTCPeerConnection::RemoveTrack):
     20        (WebCore::MockLibWebRTCPeerConnection::CreateOffer):
     21        (WebCore::MockLibWebRTCPeerConnection::CreateAnswer):
     22        * testing/MockLibWebRTCPeerConnection.h:
     23        (WebCore::MockRtpSender::MockRtpSender):
     24        (WebCore::MockRtpReceiver::id const):
     25        (WebCore::MockRtpReceiver::GetParameters const):
     26        (WebCore::MockRtpReceiver::SetParameters):
     27        (WebCore::MockRtpReceiver::SetObserver):
     28        (WebCore::MockRtpTransceiver::MockRtpTransceiver):
     29        (WebCore::MockLibWebRTCPeerConnection::MockLibWebRTCPeerConnection):
     30        (WebCore::MockLibWebRTCPeerConnection::gotLocalDescription):
     31
    1322019-08-15  Chris Dumez  <cdumez@apple.com>
    233
  • trunk/Source/WebCore/testing/Internals.cpp

    r248503 r248718  
    14351435void Internals::useMockRTCPeerConnectionFactory(const String& testCase)
    14361436{
    1437     // FIXME: We should upgrade mocks to support unified plan APIs, until then use plan B in tests using mock.
    1438 
    1439     ASSERT(!RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled());
     1437    ASSERT(RuntimeEnabledFeatures::sharedFeatures().webRTCUnifiedPlanEnabled());
    14401438    if (!LibWebRTCProvider::webRTCAvailable())
    14411439        return;
  • trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp

    r242506 r248718  
    7272MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection()
    7373{
    74     // Free senders in a different thread like an actual peer connection would probably do.
    75     Thread::create("MockLibWebRTCPeerConnection thread", [senders = WTFMove(m_senders)] { });
     74    // Free senders and receivers in a different thread like an actual peer connection would probably do.
     75    Thread::create("MockLibWebRTCPeerConnection thread", [transceivers = WTFMove(m_transceivers)] { });
     76}
     77
     78std::vector<rtc::scoped_refptr<webrtc::RtpTransceiverInterface>> MockLibWebRTCPeerConnection::GetTransceivers() const
     79{
     80    std::vector<rtc::scoped_refptr<webrtc::RtpTransceiverInterface>> transceivers;
     81    for (auto transceiver : m_transceivers)
     82        transceivers.push_back(transceiver);
     83    return transceivers;
    7684}
    7785
     
    255263        m_streamLabel = streamIds.front();
    256264
    257     m_senders.append(new rtc::RefCountedObject<MockRtpSender>(WTFMove(track)));
    258     return rtc::scoped_refptr<webrtc::RtpSenderInterface>(m_senders.last().get());
     265    rtc::scoped_refptr<webrtc::RtpSenderInterface> sender = new rtc::RefCountedObject<MockRtpSender>(WTFMove(track));
     266    rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver = new rtc::RefCountedObject<MockRtpReceiver>();
     267    rtc::scoped_refptr<MockRtpTransceiver> transceiver = new rtc::RefCountedObject<MockRtpTransceiver>(WTFMove(sender), WTFMove(receiver));
     268
     269    m_transceivers.append(WTFMove(transceiver));
     270    return rtc::scoped_refptr<webrtc::RtpSenderInterface>(m_transceivers.last()->sender());
    259271}
    260272
     
    265277    });
    266278    bool isRemoved = false;
    267     return m_senders.removeFirstMatching([&](auto& item) {
    268         if (item.get() != sender)
     279    return m_transceivers.removeFirstMatching([&](auto& transceiver) {
     280        if (transceiver->sender().get() != sender)
    269281            return false;
    270282        isRemoved = true;
     
    282294            "s=-\r\n"
    283295            "t=0 0\r\n";
    284         if (m_senders.size()) {
     296        if (m_transceivers.size()) {
    285297            unsigned partCounter = 1;
    286298            sdp << "a=msid-semantic:WMS " << m_streamLabel << "\r\n";
    287             for (auto& sender : m_senders) {
    288                 auto track = sender->track();
     299            for (auto& transceiver : m_transceivers) {
     300                auto track = transceiver->sender()->track();
    289301                if (track->kind() != "audio")
    290302                    continue;
     
    305317                    "a=setup:actpass\r\n";
    306318            }
    307             for (auto& sender : m_senders) {
    308                 auto track = sender->track();
     319            for (auto& transceiver : m_transceivers) {
     320                auto track = transceiver->sender()->track();
    309321                if (track->kind() != "video")
    310322                    continue;
     
    346358            "s=-\r\n"
    347359            "t=0 0\r\n";
    348         if (m_senders.size()) {
    349             for (auto& sender : m_senders) {
    350                 auto track = sender->track();
     360        if (m_transceivers.size()) {
     361            for (auto& transceiver : m_transceivers) {
     362                auto track = transceiver->sender()->track();
    351363                if (track->kind() != "audio")
    352364                    continue;
     
    366378                    "a=setup:active\r\n";
    367379            }
    368             for (auto& sender : m_senders) {
    369                 auto track = sender->track();
     380            for (auto& transceiver : m_transceivers) {
     381                auto track = transceiver->sender()->track();
    370382                if (track->kind() != "video")
    371383                    continue;
  • trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h

    r247688 r248718  
    4646void useRealRTCPeerConnectionFactory(LibWebRTCProvider&);
    4747
    48 class MockLibWebRTCPeerConnection : public webrtc::PeerConnectionInterface {
    49 public:
    50     ~MockLibWebRTCPeerConnection();
    51 
    52 protected:
    53     explicit MockLibWebRTCPeerConnection(webrtc::PeerConnectionObserver& observer) : m_observer(observer) { }
    54 
    55 private:
    56     rtc::scoped_refptr<webrtc::StreamCollectionInterface> local_streams() override { return nullptr; }
    57     rtc::scoped_refptr<webrtc::StreamCollectionInterface> remote_streams() override { return nullptr; }
    58     const webrtc::SessionDescriptionInterface* local_description() const override { return nullptr; }
    59     const webrtc::SessionDescriptionInterface* remote_description() const override { return nullptr; }
    60     bool AddIceCandidate(const webrtc::IceCandidateInterface*) override { return true; }
    61     SignalingState signaling_state() override { return kStable; }
    62     IceConnectionState ice_connection_state() override { return kIceConnectionNew; }
    63     IceGatheringState ice_gathering_state() override { return kIceGatheringNew; }
    64     void StopRtcEventLog() override { }
    65     void Close() override { }
    66 
    67     bool AddStream(webrtc::MediaStreamInterface*) final { return false; }
    68     void RemoveStream(webrtc::MediaStreamInterface*) final { }
    69 
    70 protected:
    71     void SetRemoteDescription(webrtc::SetSessionDescriptionObserver*, webrtc::SessionDescriptionInterface*) final;
    72     void CreateAnswer(webrtc::CreateSessionDescriptionObserver*, const webrtc::PeerConnectionInterface::RTCOfferAnswerOptions&) final;
    73     rtc::scoped_refptr<webrtc::DataChannelInterface> CreateDataChannel(const std::string&, const webrtc::DataChannelInit*) final;
    74     webrtc::RTCErrorOr<rtc::scoped_refptr<webrtc::RtpSenderInterface>> AddTrack(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>, const std::vector<std::string>& streams) final;
    75     bool RemoveTrack(webrtc::RtpSenderInterface*) final;
    76     webrtc::RTCError SetBitrate(const BitrateParameters&) final { return { }; }
    77 
    78 
    79     void SetLocalDescription(webrtc::SetSessionDescriptionObserver*, webrtc::SessionDescriptionInterface*) override;
    80     bool GetStats(webrtc::StatsObserver*, webrtc::MediaStreamTrackInterface*, StatsOutputLevel) override { return false; }
    81     void CreateOffer(webrtc::CreateSessionDescriptionObserver*, const webrtc::PeerConnectionInterface::RTCOfferAnswerOptions&) override;
    82 
    83     virtual void gotLocalDescription() { }
    84 
    85     webrtc::PeerConnectionObserver& m_observer;
    86     unsigned m_counter { 0 };
    87     Vector<rtc::scoped_refptr<MockRtpSender>> m_senders;
    88     bool m_isInitiator { true };
    89     bool m_isReceivingAudio { false };
    90     bool m_isReceivingVideo { false };
    91     std::string m_streamLabel;
    92 };
    93 
    9448class MockLibWebRTCSessionDescription: public webrtc::SessionDescriptionInterface {
    9549public:
     
    214168class MockRtpSender : public webrtc::RtpSenderInterface {
    215169public:
    216     MockRtpSender(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>&& track) : m_track(WTFMove(track)) { }
     170    explicit MockRtpSender(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>&& track) : m_track(WTFMove(track)) { }
     171
     172private:
    217173    bool SetTrack(webrtc::MediaStreamTrackInterface* track) final
    218174    {
     
    233189    rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> m_track;
    234190};
    235    
     191
     192class MockRtpReceiver : public webrtc::RtpReceiverInterface {
     193private:
     194    cricket::MediaType media_type() const final { return cricket::MEDIA_TYPE_VIDEO; }
     195    std::string id() const { return { }; }
     196    webrtc::RtpParameters GetParameters() const { return { }; }
     197    bool SetParameters(const webrtc::RtpParameters&) { return true; }
     198    void SetObserver(webrtc::RtpReceiverObserverInterface*) { }
     199    rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> track() const final { return { }; }
     200};
     201
     202class MockRtpTransceiver : public webrtc::RtpTransceiverInterface {
     203public:
     204    MockRtpTransceiver(rtc::scoped_refptr<webrtc::RtpSenderInterface>&& sender, rtc::scoped_refptr<webrtc::RtpReceiverInterface>&& receiver)
     205        : m_sender(WTFMove(sender))
     206        , m_receiver(WTFMove(receiver))
     207    {
     208    }
     209
     210    rtc::scoped_refptr<webrtc::RtpSenderInterface> sender() const final { return m_sender; }
     211
     212private:
     213    cricket::MediaType media_type() const final { return m_sender->media_type(); }
     214    absl::optional<std::string> mid() const final { return { }; }
     215    rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver() const final { return m_receiver; }
     216    bool stopped() const final { return false; }
     217    webrtc::RtpTransceiverDirection direction() const final { return webrtc::RtpTransceiverDirection::kSendRecv; }
     218    void SetDirection(webrtc::RtpTransceiverDirection) final { }
     219    absl::optional<webrtc::RtpTransceiverDirection> current_direction() const final { return { }; }
     220    void Stop() final { }
     221
     222private:
     223    rtc::scoped_refptr<webrtc::RtpSenderInterface> m_sender;
     224    rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_receiver;
     225};
     226
     227class MockLibWebRTCPeerConnection : public webrtc::PeerConnectionInterface {
     228public:
     229    ~MockLibWebRTCPeerConnection();
     230
     231protected:
     232    explicit MockLibWebRTCPeerConnection(webrtc::PeerConnectionObserver& observer) : m_observer(observer) { }
     233
     234private:
     235    rtc::scoped_refptr<webrtc::StreamCollectionInterface> local_streams() override { return nullptr; }
     236    rtc::scoped_refptr<webrtc::StreamCollectionInterface> remote_streams() override { return nullptr; }
     237    const webrtc::SessionDescriptionInterface* local_description() const override { return nullptr; }
     238    const webrtc::SessionDescriptionInterface* remote_description() const override { return nullptr; }
     239    bool AddIceCandidate(const webrtc::IceCandidateInterface*) override { return true; }
     240    SignalingState signaling_state() override { return kStable; }
     241    IceConnectionState ice_connection_state() override { return kIceConnectionNew; }
     242    IceGatheringState ice_gathering_state() override { return kIceGatheringNew; }
     243    void StopRtcEventLog() override { }
     244    void Close() override { }
     245
     246    bool AddStream(webrtc::MediaStreamInterface*) final { return false; }
     247    void RemoveStream(webrtc::MediaStreamInterface*) final { }
     248
     249    std::vector<rtc::scoped_refptr<webrtc::RtpTransceiverInterface>> GetTransceivers() const final;
     250
     251protected:
     252    void SetRemoteDescription(webrtc::SetSessionDescriptionObserver*, webrtc::SessionDescriptionInterface*) final;
     253    void CreateAnswer(webrtc::CreateSessionDescriptionObserver*, const webrtc::PeerConnectionInterface::RTCOfferAnswerOptions&) final;
     254    rtc::scoped_refptr<webrtc::DataChannelInterface> CreateDataChannel(const std::string&, const webrtc::DataChannelInit*) final;
     255    webrtc::RTCErrorOr<rtc::scoped_refptr<webrtc::RtpSenderInterface>> AddTrack(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>, const std::vector<std::string>& streams) final;
     256    bool RemoveTrack(webrtc::RtpSenderInterface*) final;
     257    webrtc::RTCError SetBitrate(const BitrateParameters&) final { return { }; }
     258
     259    void SetLocalDescription(webrtc::SetSessionDescriptionObserver*, webrtc::SessionDescriptionInterface*) override;
     260    bool GetStats(webrtc::StatsObserver*, webrtc::MediaStreamTrackInterface*, StatsOutputLevel) override { return false; }
     261    void CreateOffer(webrtc::CreateSessionDescriptionObserver*, const webrtc::PeerConnectionInterface::RTCOfferAnswerOptions&) override;
     262
     263    virtual void gotLocalDescription() { }
     264
     265    webrtc::PeerConnectionObserver& m_observer;
     266    unsigned m_counter { 0 };
     267    Vector<rtc::scoped_refptr<MockRtpTransceiver>> m_transceivers;
     268    bool m_isInitiator { true };
     269    bool m_isReceivingAudio { false };
     270    bool m_isReceivingVideo { false };
     271    std::string m_streamLabel;
     272};
     273
    236274class MockLibWebRTCPeerConnectionFactory : public webrtc::PeerConnectionFactoryInterface {
    237275public:
Note: See TracChangeset for help on using the changeset viewer.