| Index: content/renderer/media/media_stream_video_source_unittest.cc
 | 
| diff --git a/content/renderer/media/media_stream_video_source_unittest.cc b/content/renderer/media/media_stream_video_source_unittest.cc
 | 
| index baca55f7235d7e340f849be39d1533b8cdf83727..70390fa287fe66c4020cca02d1c622535e1c2b11 100644
 | 
| --- a/content/renderer/media/media_stream_video_source_unittest.cc
 | 
| +++ b/content/renderer/media/media_stream_video_source_unittest.cc
 | 
| @@ -4,32 +4,82 @@
 | 
|  
 | 
|  #include <string>
 | 
|  
 | 
| +#include "base/strings/utf_string_conversions.h"
 | 
|  #include "content/renderer/media/media_stream_video_source.h"
 | 
| +#include "content/renderer/media/mock_media_stream_dependency_factory.h"
 | 
|  #include "media/base/video_frame.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  
 | 
|  namespace content {
 | 
|  
 | 
| +class MediaStreamVideoDummySource : public MediaStreamVideoSource {
 | 
| + public:
 | 
| +  MediaStreamVideoDummySource(MediaStreamDependencyFactory* factory)
 | 
| +      : MediaStreamVideoSource(factory) {
 | 
| +    Init();
 | 
| +    SetVideoSource(GetAdapter());
 | 
| +    SetReadyState(blink::WebMediaStreamSource::ReadyStateLive);
 | 
| +  }
 | 
| +
 | 
| +  ~MediaStreamVideoDummySource() {
 | 
| +    SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
 | 
| +  }
 | 
| +
 | 
| +  void OnNewFrame(const scoped_refptr<media::VideoFrame>& frame) {
 | 
| +    MediaStreamVideoSource::DeliverVideoFrame(frame);
 | 
| +  }
 | 
| +};
 | 
| +
 | 
|  class MediaStreamVideoSourceTest
 | 
| -    : public ::testing::Test,
 | 
| -      public MediaStreamVideoSource {
 | 
| +    : public ::testing::Test {
 | 
|   public:
 | 
| -  MediaStreamVideoSourceTest() {}
 | 
| +  MediaStreamVideoSourceTest() {
 | 
| +    factory_.EnsurePeerConnectionFactory();
 | 
| +    webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
 | 
| +                              blink::WebMediaStreamSource::TypeVideo,
 | 
| +                              base::UTF8ToUTF16("dummy_source_name"));
 | 
| +    webkit_source_.setExtraData(new MediaStreamVideoDummySource(&factory_));
 | 
| +  }
 | 
| +
 | 
| + protected:
 | 
| +  // Create a track that's associated with |webkit_source_|.
 | 
| +  blink::WebMediaStreamTrack CreateTrack(const std::string& id) {
 | 
| +    blink::WebMediaStreamTrack track;
 | 
| +    track.initialize(base::UTF8ToUTF16(id), webkit_source_);
 | 
| +    return track;
 | 
| +  }
 | 
| +
 | 
| +  void VerifyFrame(int width, int height, int num) {
 | 
| +    MediaStreamVideoDummySource* source =
 | 
| +      static_cast<MediaStreamVideoDummySource*>(webkit_source_.extraData());
 | 
| +    MockVideoSource* adapter =
 | 
| +        static_cast<MockVideoSource*>(source->GetAdapter());
 | 
| +    EXPECT_EQ(width, adapter->GetLastFrameWidth());
 | 
| +    EXPECT_EQ(height, adapter->GetLastFrameHeight());
 | 
| +    EXPECT_EQ(num, adapter->GetFrameNum());
 | 
| +  }
 | 
| + private:
 | 
| +  MockMediaStreamDependencyFactory factory_;
 | 
| +  blink::WebMediaStreamSource webkit_source_;
 | 
|  };
 | 
|  
 | 
| -TEST_F(MediaStreamVideoSourceTest, OnVideoFrame) {
 | 
| +TEST_F(MediaStreamVideoSourceTest, DeliverVideoFrame) {
 | 
|    blink::WebMediaConstraints constraints;
 | 
| -  blink::WebMediaStreamTrack track;
 | 
| -  AddTrack(track, constraints);
 | 
| -  SetReadyState(blink::WebMediaStreamSource::ReadyStateLive);
 | 
| +  blink::WebMediaStreamTrack track = CreateTrack("123");
 | 
| +  MediaStreamVideoDummySource* source =
 | 
| +      static_cast<MediaStreamVideoDummySource*>(track.source().extraData());
 | 
| +  source->AddTrack(track, constraints);
 | 
| +  VerifyFrame(0, 0, 0);
 | 
|    const int kWidth = 640;
 | 
|    const int kHeight = 480;
 | 
|    scoped_refptr<media::VideoFrame> frame =
 | 
|        media::VideoFrame::CreateBlackFrame(gfx::Size(kWidth, kHeight));
 | 
|    ASSERT_TRUE(frame.get());
 | 
| -  DeliverVideoFrame(frame);
 | 
| -  SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
 | 
| -  RemoveTrack(track);
 | 
| +  source->OnNewFrame(frame);
 | 
| +  VerifyFrame(640, 480, 1);
 | 
| +  source->OnNewFrame(frame);
 | 
| +  VerifyFrame(640, 480, 2);
 | 
| +  source->RemoveTrack(track);
 | 
|  }
 | 
|  
 | 
|  }  // namespace content
 | 
| 
 |