| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * libjingle |    2  * libjingle | 
|    3  * Copyright 2008 Google Inc. |    3  * Copyright 2008 Google Inc. | 
|    4  * |    4  * | 
|    5  * Redistribution and use in source and binary forms, with or without |    5  * Redistribution and use in source and binary forms, with or without | 
|    6  * modification, are permitted provided that the following conditions are met: |    6  * modification, are permitted provided that the following conditions are met: | 
|    7  * |    7  * | 
|    8  *  1. Redistributions of source code must retain the above copyright notice, |    8  *  1. Redistributions of source code must retain the above copyright notice, | 
|    9  *     this list of conditions and the following disclaimer. |    9  *     this list of conditions and the following disclaimer. | 
|   10  *  2. Redistributions in binary form must reproduce the above copyright notice, |   10  *  2. Redistributions in binary form must reproduce the above copyright notice, | 
|   11  *     this list of conditions and the following disclaimer in the documentation |   11  *     this list of conditions and the following disclaimer in the documentation | 
|   12  *     and/or other materials provided with the distribution. |   12  *     and/or other materials provided with the distribution. | 
|   13  *  3. The name of the author may not be used to endorse or promote products |   13  *  3. The name of the author may not be used to endorse or promote products | 
|   14  *     derived from this software without specific prior written permission. |   14  *     derived from this software without specific prior written permission. | 
|   15  * |   15  * | 
|   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED | 
|   17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |   17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | 
|   18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |   18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | 
|   19  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |   19  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
|   20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |   20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
|   21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |   21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | 
|   22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |   22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | 
|   23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |   23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | 
|   24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |   24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | 
|   25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |   25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|   26  */ |   26  */ | 
|   27  |   27  | 
|   28 #include "talk/app/webrtc/mediacontroller.h" |   28 #include "talk/app/webrtc/fakemediacontroller.h" | 
|   29 #include "talk/media/base/fakecapturemanager.h" |   29 #include "talk/media/base/fakecapturemanager.h" | 
|   30 #include "talk/media/base/fakemediaengine.h" |   30 #include "talk/media/base/fakemediaengine.h" | 
|   31 #include "talk/media/base/fakevideocapturer.h" |   31 #include "talk/media/base/fakevideocapturer.h" | 
|   32 #include "talk/media/base/testutils.h" |   32 #include "talk/media/base/testutils.h" | 
|   33 #include "talk/media/webrtc/fakewebrtccall.h" |   33 #include "talk/media/webrtc/fakewebrtccall.h" | 
|   34 #include "talk/session/media/channelmanager.h" |   34 #include "talk/session/media/channelmanager.h" | 
|   35 #include "webrtc/base/gunit.h" |   35 #include "webrtc/base/gunit.h" | 
|   36 #include "webrtc/base/logging.h" |   36 #include "webrtc/base/logging.h" | 
|   37 #include "webrtc/base/thread.h" |   37 #include "webrtc/base/thread.h" | 
|   38 #include "webrtc/p2p/base/faketransportcontroller.h" |   38 #include "webrtc/p2p/base/faketransportcontroller.h" | 
|   39  |   39  | 
|   40 namespace cricket { |   40 namespace cricket { | 
|   41  |   41  | 
|   42 static const AudioCodec kAudioCodecs[] = { |   42 static const AudioCodec kAudioCodecs[] = { | 
|   43   AudioCodec(97, "voice", 1, 2, 3, 0), |   43   AudioCodec(97, "voice", 1, 2, 3, 0), | 
|   44   AudioCodec(111, "OPUS", 48000, 32000, 2, 0), |   44   AudioCodec(111, "OPUS", 48000, 32000, 2, 0), | 
|   45 }; |   45 }; | 
|   46  |   46  | 
|   47 static const VideoCodec kVideoCodecs[] = { |   47 static const VideoCodec kVideoCodecs[] = { | 
|   48   VideoCodec(99, "H264", 100, 200, 300, 0), |   48   VideoCodec(99, "H264", 100, 200, 300, 0), | 
|   49   VideoCodec(100, "VP8", 100, 200, 300, 0), |   49   VideoCodec(100, "VP8", 100, 200, 300, 0), | 
|   50   VideoCodec(96, "rtx", 100, 200, 300, 0), |   50   VideoCodec(96, "rtx", 100, 200, 300, 0), | 
|   51 }; |   51 }; | 
|   52  |   52  | 
|   53 class FakeMediaController : public webrtc::MediaControllerInterface { |  | 
|   54  public: |  | 
|   55   explicit FakeMediaController(webrtc::Call* call) : call_(call) { |  | 
|   56     RTC_DCHECK(nullptr != call); |  | 
|   57   } |  | 
|   58   ~FakeMediaController() override {} |  | 
|   59   webrtc::Call* call_w() override { return call_; } |  | 
|   60  |  | 
|   61  private: |  | 
|   62   webrtc::Call* call_; |  | 
|   63 }; |  | 
|   64  |  | 
|   65 class ChannelManagerTest : public testing::Test { |   53 class ChannelManagerTest : public testing::Test { | 
|   66  protected: |   54  protected: | 
|   67   ChannelManagerTest() |   55   ChannelManagerTest() | 
|   68       : fake_call_(webrtc::Call::Config()), |   56       : fme_(new cricket::FakeMediaEngine()), | 
|   69         fake_mc_(&fake_call_), |   57         fdme_(new cricket::FakeDataEngine()), | 
|   70         fme_(NULL), |   58         fcm_(new cricket::FakeCaptureManager()), | 
|   71         fcm_(NULL), |   59         cm_(new cricket::ChannelManager(fme_, | 
|   72         cm_(NULL) {} |   60                                         fdme_, | 
 |   61                                         fcm_, | 
 |   62                                         rtc::Thread::Current())), | 
 |   63         fake_call_(webrtc::Call::Config()), | 
 |   64         fake_mc_(cm_, &fake_call_), | 
 |   65         transport_controller_( | 
 |   66             new cricket::FakeTransportController(ICEROLE_CONTROLLING)) {} | 
|   73  |   67  | 
|   74   virtual void SetUp() { |   68   virtual void SetUp() { | 
|   75     fme_ = new cricket::FakeMediaEngine(); |  | 
|   76     fme_->SetAudioCodecs(MAKE_VECTOR(kAudioCodecs)); |   69     fme_->SetAudioCodecs(MAKE_VECTOR(kAudioCodecs)); | 
|   77     fme_->SetVideoCodecs(MAKE_VECTOR(kVideoCodecs)); |   70     fme_->SetVideoCodecs(MAKE_VECTOR(kVideoCodecs)); | 
|   78     fdme_ = new cricket::FakeDataEngine(); |  | 
|   79     fcm_ = new cricket::FakeCaptureManager(); |  | 
|   80     cm_ = new cricket::ChannelManager( |  | 
|   81         fme_, fdme_, fcm_, rtc::Thread::Current()); |  | 
|   82     transport_controller_ = |  | 
|   83         new cricket::FakeTransportController(ICEROLE_CONTROLLING); |  | 
|   84   } |   71   } | 
|   85  |   72  | 
|   86   virtual void TearDown() { |   73   virtual void TearDown() { | 
|   87     delete transport_controller_; |   74     delete transport_controller_; | 
|   88     delete cm_; |   75     delete cm_; | 
|   89     cm_ = NULL; |   76     cm_ = NULL; | 
|   90     fcm_ = NULL; |   77     fcm_ = NULL; | 
|   91     fdme_ = NULL; |   78     fdme_ = NULL; | 
|   92     fme_ = NULL; |   79     fme_ = NULL; | 
|   93   } |   80   } | 
|   94  |   81  | 
|   95   rtc::Thread worker_; |   82   rtc::Thread worker_; | 
|   96   cricket::FakeCall fake_call_; |  | 
|   97   cricket::FakeMediaController fake_mc_; |  | 
|   98   cricket::FakeMediaEngine* fme_; |   83   cricket::FakeMediaEngine* fme_; | 
|   99   cricket::FakeDataEngine* fdme_; |   84   cricket::FakeDataEngine* fdme_; | 
|  100   cricket::FakeCaptureManager* fcm_; |   85   cricket::FakeCaptureManager* fcm_; | 
|  101   cricket::ChannelManager* cm_; |   86   cricket::ChannelManager* cm_; | 
 |   87   cricket::FakeCall fake_call_; | 
 |   88   cricket::FakeMediaController fake_mc_; | 
|  102   cricket::FakeTransportController* transport_controller_; |   89   cricket::FakeTransportController* transport_controller_; | 
|  103 }; |   90 }; | 
|  104  |   91  | 
|  105 // Test that we startup/shutdown properly. |   92 // Test that we startup/shutdown properly. | 
|  106 TEST_F(ChannelManagerTest, StartupShutdown) { |   93 TEST_F(ChannelManagerTest, StartupShutdown) { | 
|  107   EXPECT_FALSE(cm_->initialized()); |   94   EXPECT_FALSE(cm_->initialized()); | 
|  108   EXPECT_EQ(rtc::Thread::Current(), cm_->worker_thread()); |   95   EXPECT_EQ(rtc::Thread::Current(), cm_->worker_thread()); | 
|  109   EXPECT_TRUE(cm_->Init()); |   96   EXPECT_TRUE(cm_->Init()); | 
|  110   EXPECT_TRUE(cm_->initialized()); |   97   EXPECT_TRUE(cm_->initialized()); | 
|  111   cm_->Terminate(); |   98   cm_->Terminate(); | 
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  314   EXPECT_FALSE(cm_->SetVideoRtxEnabled(false)); |  301   EXPECT_FALSE(cm_->SetVideoRtxEnabled(false)); | 
|  315  |  302  | 
|  316   // Can set again after terminate. |  303   // Can set again after terminate. | 
|  317   cm_->Terminate(); |  304   cm_->Terminate(); | 
|  318   EXPECT_TRUE(cm_->SetVideoRtxEnabled(true)); |  305   EXPECT_TRUE(cm_->SetVideoRtxEnabled(true)); | 
|  319   cm_->GetSupportedVideoCodecs(&codecs); |  306   cm_->GetSupportedVideoCodecs(&codecs); | 
|  320   EXPECT_TRUE(ContainsMatchingCodec(codecs, rtx_codec)); |  307   EXPECT_TRUE(ContainsMatchingCodec(codecs, rtx_codec)); | 
|  321 } |  308 } | 
|  322  |  309  | 
|  323 }  // namespace cricket |  310 }  // namespace cricket | 
| OLD | NEW |