Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: content/renderer/media/media_stream_impl_unittest.cc

Issue 12084088: Renamed WebMediaStreamComponent and WebMediaStreamDescriptor to WebMediaStreamTrack & WebMediaStream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "content/renderer/media/media_stream_extra_data.h" 8 #include "content/renderer/media/media_stream_extra_data.h"
9 #include "content/renderer/media/media_stream_impl.h" 9 #include "content/renderer/media/media_stream_impl.h"
10 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 10 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
11 #include "content/renderer/media/mock_media_stream_dispatcher.h" 11 #include "content/renderer/media/mock_media_stream_dispatcher.h"
12 #include "content/renderer/media/video_capture_impl_manager.h" 12 #include "content/renderer/media/video_capture_impl_manager.h"
13 #include "media/base/video_decoder.h" 13 #include "media/base/video_decoder.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamCompo nent.h" 15 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStream.h"
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamDescr iptor.h"
17 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc e.h" 16 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamSourc e.h"
17 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaStreamTrack .h"
18 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h" 18 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
19 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h" 19 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
20 20
21 namespace content { 21 namespace content {
22 22
23 class MediaStreamImplUnderTest : public MediaStreamImpl { 23 class MediaStreamImplUnderTest : public MediaStreamImpl {
24 public: 24 public:
25 enum RequestState { 25 enum RequestState {
26 REQUEST_NOT_STARTED, 26 REQUEST_NOT_STARTED,
27 REQUEST_NOT_COMPLETE, 27 REQUEST_NOT_COMPLETE,
(...skipping 14 matching lines...) Expand all
42 WebKit::WebVector<WebKit::WebMediaStreamSource> audio_sources( 42 WebKit::WebVector<WebKit::WebMediaStreamSource> audio_sources(
43 audio ? static_cast<size_t>(1) : 0); 43 audio ? static_cast<size_t>(1) : 0);
44 WebKit::WebVector<WebKit::WebMediaStreamSource> video_sources( 44 WebKit::WebVector<WebKit::WebMediaStreamSource> video_sources(
45 video ? static_cast<size_t>(1) : 0); 45 video ? static_cast<size_t>(1) : 0);
46 state_ = REQUEST_NOT_COMPLETE; 46 state_ = REQUEST_NOT_COMPLETE;
47 requestUserMedia(user_media_request, audio_sources, 47 requestUserMedia(user_media_request, audio_sources,
48 video_sources); 48 video_sources);
49 } 49 }
50 50
51 virtual void CompleteGetUserMediaRequest( 51 virtual void CompleteGetUserMediaRequest(
52 const WebKit::WebMediaStreamDescriptor& stream, 52 const WebKit::WebMediaStream& stream,
53 WebKit::WebUserMediaRequest* request_info, 53 WebKit::WebUserMediaRequest* request_info,
54 bool request_succeeded) OVERRIDE { 54 bool request_succeeded) OVERRIDE {
55 last_generated_stream_ = stream; 55 last_generated_stream_ = stream;
56 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED; 56 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED;
57 } 57 }
58 58
59 virtual WebKit::WebMediaStreamDescriptor GetMediaStream( 59 virtual WebKit::WebMediaStream GetMediaStream(
60 const GURL& url) OVERRIDE { 60 const GURL& url) OVERRIDE {
61 return last_generated_stream_; 61 return last_generated_stream_;
62 } 62 }
63 63
64 using MediaStreamImpl::OnLocalMediaStreamStop; 64 using MediaStreamImpl::OnLocalMediaStreamStop;
65 65
66 const WebKit::WebMediaStreamDescriptor& last_generated_stream() { 66 const WebKit::WebMediaStream& last_generated_stream() {
67 return last_generated_stream_; 67 return last_generated_stream_;
68 } 68 }
69 69
70 RequestState request_state() const { return state_; } 70 RequestState request_state() const { return state_; }
71 71
72 private: 72 private:
73 WebKit::WebMediaStreamDescriptor last_generated_stream_; 73 WebKit::WebMediaStream last_generated_stream_;
74 RequestState state_; 74 RequestState state_;
75 }; 75 };
76 76
77 class MediaStreamImplTest : public ::testing::Test { 77 class MediaStreamImplTest : public ::testing::Test {
78 public: 78 public:
79 void SetUp() { 79 void SetUp() {
80 // Create our test object. 80 // Create our test object.
81 ms_dispatcher_.reset(new MockMediaStreamDispatcher()); 81 ms_dispatcher_.reset(new MockMediaStreamDispatcher());
82 scoped_refptr<VideoCaptureImplManager> vc_manager( 82 scoped_refptr<VideoCaptureImplManager> vc_manager(
83 new VideoCaptureImplManager()); 83 new VideoCaptureImplManager());
84 dependency_factory_.reset(new MockMediaStreamDependencyFactory()); 84 dependency_factory_.reset(new MockMediaStreamDependencyFactory());
85 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(), 85 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(),
86 vc_manager.get(), 86 vc_manager.get(),
87 dependency_factory_.get())); 87 dependency_factory_.get()));
88 } 88 }
89 89
90 WebKit::WebMediaStreamDescriptor RequestLocalMediaStream(bool audio, 90 WebKit::WebMediaStream RequestLocalMediaStream(bool audio,
91 bool video) { 91 bool video) {
92 ms_impl_->RequestUserMedia(audio, video); 92 ms_impl_->RequestUserMedia(audio, video);
93 FakeMediaStreamDispatcherComplete(); 93 FakeMediaStreamDispatcherComplete();
94 if (video) 94 if (video)
95 ChangeVideoSourceStateToLive(); 95 ChangeVideoSourceStateToLive();
96 if (audio) 96 if (audio)
97 ChangeAudioSourceStateToLive(); 97 ChangeAudioSourceStateToLive();
98 98
99 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, 99 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED,
100 ms_impl_->request_state()); 100 ms_impl_->request_state());
101 101
102 WebKit::WebMediaStreamDescriptor desc = ms_impl_->last_generated_stream(); 102 WebKit::WebMediaStream desc = ms_impl_->last_generated_stream();
103 content::MediaStreamExtraData* extra_data = 103 content::MediaStreamExtraData* extra_data =
104 static_cast<content::MediaStreamExtraData*>(desc.extraData()); 104 static_cast<content::MediaStreamExtraData*>(desc.extraData());
105 if (!extra_data || !extra_data->local_stream()) { 105 if (!extra_data || !extra_data->local_stream()) {
106 ADD_FAILURE(); 106 ADD_FAILURE();
107 return desc; 107 return desc;
108 } 108 }
109 109
110 if (audio) 110 if (audio)
111 EXPECT_EQ(1u, extra_data->local_stream()->audio_tracks()->count()); 111 EXPECT_EQ(1u, extra_data->local_stream()->audio_tracks()->count());
112 if (video) 112 if (video)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 } 151 }
152 152
153 protected: 153 protected:
154 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_; 154 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_;
155 scoped_ptr<MediaStreamImplUnderTest> ms_impl_; 155 scoped_ptr<MediaStreamImplUnderTest> ms_impl_;
156 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; 156 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_;
157 }; 157 };
158 158
159 TEST_F(MediaStreamImplTest, LocalMediaStream) { 159 TEST_F(MediaStreamImplTest, LocalMediaStream) {
160 // Test a stream with both audio and video. 160 // Test a stream with both audio and video.
161 WebKit::WebMediaStreamDescriptor mixed_desc = RequestLocalMediaStream(true, 161 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(true, true);
162 true);
163 // Create a renderer for the stream. 162 // Create a renderer for the stream.
164 scoped_refptr<media::VideoDecoder> mixed_decoder( 163 scoped_refptr<media::VideoDecoder> mixed_decoder(
165 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current())); 164 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current()));
166 EXPECT_TRUE(mixed_decoder.get() != NULL); 165 EXPECT_TRUE(mixed_decoder.get() != NULL);
167 166
168 // Test a stream with audio only. 167 // Test a stream with audio only.
169 WebKit::WebMediaStreamDescriptor audio_desc = RequestLocalMediaStream(true, 168 WebKit::WebMediaStream audio_desc = RequestLocalMediaStream(true, false);
170 false);
171 scoped_refptr<media::VideoDecoder> audio_decoder( 169 scoped_refptr<media::VideoDecoder> audio_decoder(
172 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current())); 170 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current()));
173 EXPECT_TRUE(audio_decoder.get() == NULL); 171 EXPECT_TRUE(audio_decoder.get() == NULL);
174 172
175 // Test a stream with video only. 173 // Test a stream with video only.
176 WebKit::WebMediaStreamDescriptor video_desc = RequestLocalMediaStream(false, 174 WebKit::WebMediaStream video_desc = RequestLocalMediaStream(false, true);
177 true);
178 scoped_refptr<media::VideoDecoder> video_decoder( 175 scoped_refptr<media::VideoDecoder> video_decoder(
179 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current())); 176 ms_impl_->GetVideoDecoder(GURL(), base::MessageLoopProxy::current()));
180 EXPECT_TRUE(video_decoder.get() != NULL); 177 EXPECT_TRUE(video_decoder.get() != NULL);
181 178
182 // Stop generated local streams. 179 // Stop generated local streams.
183 ms_impl_->OnLocalMediaStreamStop(mixed_desc.label().utf8()); 180 ms_impl_->OnLocalMediaStreamStop(mixed_desc.label().utf8());
184 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter()); 181 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter());
185 ms_impl_->OnLocalMediaStreamStop(audio_desc.label().utf8()); 182 ms_impl_->OnLocalMediaStreamStop(audio_desc.label().utf8());
186 EXPECT_EQ(2, ms_dispatcher_->stop_stream_counter()); 183 EXPECT_EQ(2, ms_dispatcher_->stop_stream_counter());
187 184
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 ms_impl_->FrameWillClose(NULL); 234 ms_impl_->FrameWillClose(NULL);
238 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter()); 235 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter());
239 ChangeVideoSourceStateToLive(); 236 ChangeVideoSourceStateToLive();
240 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 237 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
241 ms_impl_->request_state()); 238 ms_impl_->request_state());
242 } 239 }
243 240
244 // This test what happens if stop is called on a stream after the frame has 241 // This test what happens if stop is called on a stream after the frame has
245 // been reloaded. 242 // been reloaded.
246 TEST_F(MediaStreamImplTest, StopStreamAfterReload) { 243 TEST_F(MediaStreamImplTest, StopStreamAfterReload) {
247 WebKit::WebMediaStreamDescriptor mixed_desc = RequestLocalMediaStream(true, 244 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(true, true);
248 true);
249 EXPECT_EQ(0, ms_dispatcher_->stop_stream_counter()); 245 EXPECT_EQ(0, ms_dispatcher_->stop_stream_counter());
250 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 246 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
251 ms_impl_->FrameWillClose(NULL); 247 ms_impl_->FrameWillClose(NULL);
252 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter()); 248 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter());
253 ms_impl_->OnLocalMediaStreamStop(mixed_desc.label().utf8()); 249 ms_impl_->OnLocalMediaStreamStop(mixed_desc.label().utf8());
254 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter()); 250 EXPECT_EQ(1, ms_dispatcher_->stop_stream_counter());
255 } 251 }
256 252
257 } // namespace content 253 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_impl.cc ('k') | content/renderer/media/mock_web_rtc_peer_connection_handler_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698