OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
| 7 #include "base/message_loop/message_loop.h" |
7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
8 #include "content/child/child_process.h" | 9 #include "content/child/child_process.h" |
| 10 #include "content/common/media/video_capture.h" |
9 #include "content/public/renderer/media_stream_video_sink.h" | 11 #include "content/public/renderer/media_stream_video_sink.h" |
10 #include "content/renderer/media/media_stream.h" | 12 #include "content/renderer/media/media_stream.h" |
11 #include "content/renderer/media/media_stream_registry_interface.h" | 13 #include "content/renderer/media/media_stream_registry_interface.h" |
12 #include "content/renderer/media/mock_media_stream_registry.h" | 14 #include "content/renderer/media/mock_media_stream_registry.h" |
13 #include "content/renderer/media/video_source_handler.h" | 15 #include "content/renderer/media/video_source_handler.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 18 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
17 #include "third_party/WebKit/public/platform/WebString.h" | 19 #include "third_party/WebKit/public/platform/WebString.h" |
18 | 20 |
(...skipping 23 matching lines...) Expand all Loading... |
42 public: | 44 public: |
43 VideoSourceHandlerTest() | 45 VideoSourceHandlerTest() |
44 : child_process_(new ChildProcess()), | 46 : child_process_(new ChildProcess()), |
45 registry_() { | 47 registry_() { |
46 handler_.reset(new VideoSourceHandler(®istry_)); | 48 handler_.reset(new VideoSourceHandler(®istry_)); |
47 registry_.Init(kTestStreamUrl); | 49 registry_.Init(kTestStreamUrl); |
48 registry_.AddVideoTrack(kTestVideoTrackId); | 50 registry_.AddVideoTrack(kTestVideoTrackId); |
49 } | 51 } |
50 | 52 |
51 protected: | 53 protected: |
| 54 base::MessageLoop message_loop_; |
52 scoped_ptr<ChildProcess> child_process_; | 55 scoped_ptr<ChildProcess> child_process_; |
53 scoped_ptr<VideoSourceHandler> handler_; | 56 scoped_ptr<VideoSourceHandler> handler_; |
54 MockMediaStreamRegistry registry_; | 57 MockMediaStreamRegistry registry_; |
55 }; | 58 }; |
56 | 59 |
57 TEST_F(VideoSourceHandlerTest, OpenClose) { | 60 TEST_F(VideoSourceHandlerTest, OpenClose) { |
58 FakeFrameReader reader; | 61 FakeFrameReader reader; |
59 // Unknow url will return false. | 62 // Unknow url will return false. |
60 EXPECT_FALSE(handler_->Open(kUnknownStreamUrl, &reader)); | 63 EXPECT_FALSE(handler_->Open(kUnknownStreamUrl, &reader)); |
61 EXPECT_TRUE(handler_->Open(kTestStreamUrl, &reader)); | 64 EXPECT_TRUE(handler_->Open(kTestStreamUrl, &reader)); |
62 | 65 |
63 int width = 640; | 66 int width = 640; |
64 int height = 360; | 67 int height = 360; |
65 base::TimeDelta ts = base::TimeDelta::FromInternalValue(789012); | 68 base::TimeDelta ts = base::TimeDelta::FromInternalValue(789012); |
66 | 69 |
67 // A new frame is captured. | 70 // A new frame is captured. |
68 scoped_refptr<media::VideoFrame> captured_frame = | 71 scoped_refptr<media::VideoFrame> captured_frame = |
69 media::VideoFrame::CreateBlackFrame(gfx::Size(width, height)); | 72 media::VideoFrame::CreateBlackFrame(gfx::Size(width, height)); |
70 captured_frame->set_timestamp(ts); | 73 captured_frame->set_timestamp(ts); |
71 | 74 |
72 // The frame is delivered to VideoSourceHandler. | 75 // The frame is delivered to VideoSourceHandler. |
73 MediaStreamVideoSink* receiver = handler_->GetReceiver(&reader); | 76 handler_->DeliverFrameForTesting(&reader, captured_frame); |
74 receiver->OnVideoFrame(captured_frame); | |
75 | 77 |
76 // Compare |frame| to |captured_frame|. | 78 // Compare |frame| to |captured_frame|. |
77 const media::VideoFrame* frame = reader.last_frame(); | 79 const media::VideoFrame* frame = reader.last_frame(); |
78 ASSERT_TRUE(frame != NULL); | 80 ASSERT_TRUE(frame != NULL); |
79 EXPECT_EQ(width, frame->coded_size().width()); | 81 EXPECT_EQ(width, frame->coded_size().width()); |
80 EXPECT_EQ(height, frame->coded_size().height()); | 82 EXPECT_EQ(height, frame->coded_size().height()); |
81 EXPECT_EQ(ts, frame->timestamp()); | 83 EXPECT_EQ(ts, frame->timestamp()); |
82 EXPECT_EQ(captured_frame->data(media::VideoFrame::kYPlane), | 84 EXPECT_EQ(captured_frame->data(media::VideoFrame::kYPlane), |
83 frame->data(media::VideoFrame::kYPlane)); | 85 frame->data(media::VideoFrame::kYPlane)); |
84 | 86 |
85 EXPECT_FALSE(handler_->Close(NULL)); | 87 EXPECT_FALSE(handler_->Close(NULL)); |
86 EXPECT_TRUE(handler_->Close(&reader)); | 88 EXPECT_TRUE(handler_->Close(&reader)); |
87 EXPECT_TRUE(handler_->GetReceiver(&reader) == NULL); | |
88 } | 89 } |
89 | 90 |
90 TEST_F(VideoSourceHandlerTest, OpenWithoutClose) { | 91 TEST_F(VideoSourceHandlerTest, OpenWithoutClose) { |
91 FakeFrameReader reader; | 92 FakeFrameReader reader; |
92 EXPECT_TRUE(handler_->Open(kTestStreamUrl, &reader)); | 93 EXPECT_TRUE(handler_->Open(kTestStreamUrl, &reader)); |
93 } | 94 } |
94 | 95 |
95 } // namespace content | 96 } // namespace content |
OLD | NEW |