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

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

Issue 131763002: Adds MediaStreamSource, MediaStreamAudioSource and MediaStreamVideoCaptureDeviceSource (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 11 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 "content/common/media/media_stream_options.h" 6 #include "content/common/media/media_stream_options.h"
7 #include "content/renderer/media/media_stream_extra_data.h" 7 #include "content/renderer/media/media_stream_extra_data.h"
8 #include "content/renderer/media/media_stream_source_extra_data.h" 8 #include "content/renderer/media/media_stream_source.h"
9 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 9 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
10 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h" 10 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 12 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
13 #include "third_party/WebKit/public/platform/WebMediaStream.h" 13 #include "third_party/WebKit/public/platform/WebMediaStream.h"
14 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" 14 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
15 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 15 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
16 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandler.h" 16 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandler.h"
17 #include "third_party/WebKit/public/platform/WebVector.h" 17 #include "third_party/WebKit/public/platform/WebVector.h"
18 #include "third_party/libjingle/source/talk/app/webrtc/videosourceinterface.h" 18 #include "third_party/libjingle/source/talk/app/webrtc/videosourceinterface.h"
(...skipping 28 matching lines...) Expand all
47 public: 47 public:
48 virtual void SetUp() { 48 virtual void SetUp() {
49 dependency_factory_.reset(new MockMediaStreamDependencyFactory()); 49 dependency_factory_.reset(new MockMediaStreamDependencyFactory());
50 } 50 }
51 51
52 blink::WebMediaStream CreateWebKitMediaStream(bool audio, bool video) { 52 blink::WebMediaStream CreateWebKitMediaStream(bool audio, bool video) {
53 blink::WebVector<blink::WebMediaStreamSource> audio_sources( 53 blink::WebVector<blink::WebMediaStreamSource> audio_sources(
54 audio ? static_cast<size_t>(1) : 0); 54 audio ? static_cast<size_t>(1) : 0);
55 blink::WebVector<blink::WebMediaStreamSource> video_sources( 55 blink::WebVector<blink::WebMediaStreamSource> video_sources(
56 video ? static_cast<size_t>(1) : 0); 56 video ? static_cast<size_t>(1) : 0);
57 MediaStreamSourceExtraData::SourceStopCallback dummy_callback; 57 MediaStreamSource::SourceStopCallback dummy_callback;
58 58
59 if (audio) { 59 if (audio) {
60 StreamDeviceInfo info; 60 StreamDeviceInfo info;
61 info.device.type = content::MEDIA_DEVICE_AUDIO_CAPTURE; 61 info.device.type = content::MEDIA_DEVICE_AUDIO_CAPTURE;
62 info.device.name = "audio"; 62 info.device.name = "audio";
63 info.session_id = 99; 63 info.session_id = 99;
64 audio_sources[0].initialize("audio", 64 audio_sources[0].initialize("audio",
65 blink::WebMediaStreamSource::TypeAudio, 65 blink::WebMediaStreamSource::TypeAudio,
66 "audio"); 66 "audio");
67 audio_sources[0].setExtraData( 67 audio_sources[0].setExtraData(
68 new MediaStreamSourceExtraData(info, dummy_callback)); 68 new MediaStreamSource(info, dummy_callback));
69 audio_sources_.assign(audio_sources); 69 audio_sources_.assign(audio_sources);
70 } 70 }
71 if (video) { 71 if (video) {
72 StreamDeviceInfo info; 72 StreamDeviceInfo info;
73 info.device.type = content::MEDIA_DEVICE_VIDEO_CAPTURE; 73 info.device.type = content::MEDIA_DEVICE_VIDEO_CAPTURE;
74 info.device.name = "video"; 74 info.device.name = "video";
75 info.session_id = 98; 75 info.session_id = 98;
76 video_sources[0].initialize("video", 76 video_sources[0].initialize("video",
77 blink::WebMediaStreamSource::TypeVideo, 77 blink::WebMediaStreamSource::TypeVideo,
78 "video"); 78 "video");
79 video_sources[0].setExtraData( 79 video_sources[0].setExtraData(
80 new MediaStreamSourceExtraData(info, dummy_callback)); 80 new MediaStreamSource(info, dummy_callback));
81 video_sources_.assign(video_sources); 81 video_sources_.assign(video_sources);
82 } 82 }
83 blink::WebMediaStream stream_desc; 83 blink::WebMediaStream stream_desc;
84 blink::WebVector<blink::WebMediaStreamTrack> audio_track_vector( 84 blink::WebVector<blink::WebMediaStreamTrack> audio_track_vector(
85 audio_sources.size()); 85 audio_sources.size());
86 for (size_t i = 0; i < audio_track_vector.size(); ++i) { 86 for (size_t i = 0; i < audio_track_vector.size(); ++i) {
87 audio_track_vector[i].initialize(audio_sources[i].id(), 87 audio_track_vector[i].initialize(audio_sources[i].id(),
88 audio_sources[i]); 88 audio_sources[i]);
89 } 89 }
90 90
91 blink::WebVector<blink::WebMediaStreamTrack> video_track_vector( 91 blink::WebVector<blink::WebMediaStreamTrack> video_track_vector(
92 video_sources.size()); 92 video_sources.size());
93 for (size_t i = 0; i < video_track_vector.size(); ++i) { 93 for (size_t i = 0; i < video_track_vector.size(); ++i) {
94 video_track_vector[i].initialize(video_sources[i].id(), 94 video_track_vector[i].initialize(video_sources[i].id(),
95 video_sources[i]); 95 video_sources[i]);
96 } 96 }
97 97
98 stream_desc.initialize("media stream", audio_track_vector, 98 stream_desc.initialize("media stream", audio_track_vector,
99 video_track_vector); 99 video_track_vector);
100 return stream_desc; 100 return stream_desc;
101 } 101 }
102 102
103 /*
103 void CreateNativeSources(blink::WebMediaStream* descriptor) { 104 void CreateNativeSources(blink::WebMediaStream* descriptor) {
104 static const int kRenderViewId = 1; 105 static const int kRenderViewId = 1;
105 106
106 MediaSourceCreatedObserver observer; 107 MediaSourceCreatedObserver observer;
107 blink::WebMediaConstraints audio_constraints; 108 blink::WebMediaConstraints audio_constraints;
108 dependency_factory_->CreateNativeMediaSources( 109 dependency_factory_->CreateNativeMediaSources(
109 kRenderViewId, 110 kRenderViewId,
110 blink::WebMediaConstraints(), 111 blink::WebMediaConstraints(),
111 blink::WebMediaConstraints(), 112 blink::WebMediaConstraints(),
112 descriptor, 113 descriptor,
113 base::Bind( 114 base::Bind(
114 &MediaSourceCreatedObserver::OnCreateNativeSourcesComplete, 115 &MediaSourceCreatedObserver::OnCreateNativeSourcesComplete,
115 base::Unretained(&observer))); 116 base::Unretained(&observer)));
116 117
117 EXPECT_FALSE(observer.result()); 118 EXPECT_FALSE(observer.result());
118 // Change the state of the created source to live. This should trigger 119 // Change the state of the created source to live. This should trigger
119 // MediaSourceCreatedObserver::OnCreateNativeSourcesComplete 120 // MediaSourceCreatedObserver::OnCreateNativeSourcesComplete
120 if (dependency_factory_->last_video_source()) { 121 if (dependency_factory_->last_video_source()) {
121 dependency_factory_->last_audio_source()->SetLive(); 122 dependency_factory_->last_audio_source()->SetLive();
122 dependency_factory_->last_video_source()->SetLive(); 123 dependency_factory_->last_video_source()->SetLive();
123 } 124 }
124 EXPECT_TRUE(observer.result()); 125 EXPECT_TRUE(observer.result());
125 EXPECT_TRUE(observer.description() == descriptor); 126 EXPECT_TRUE(observer.description() == descriptor);
126 } 127 }*/
127 128
128 void VerifyMediaStream(const blink::WebMediaStream& stream_desc, 129 void VerifyMediaStream(const blink::WebMediaStream& stream_desc,
129 size_t num_audio_tracks, 130 size_t num_audio_tracks,
130 size_t num_video_tracks) { 131 size_t num_video_tracks) {
131 content::MediaStreamExtraData* extra_data = 132 content::MediaStreamExtraData* extra_data =
132 static_cast<content::MediaStreamExtraData*>(stream_desc.extraData()); 133 static_cast<content::MediaStreamExtraData*>(stream_desc.extraData());
133 ASSERT_TRUE(extra_data && extra_data->stream().get()); 134 ASSERT_TRUE(extra_data && extra_data->stream().get());
134 EXPECT_TRUE(extra_data->is_local()); 135 EXPECT_TRUE(extra_data->is_local());
135 EXPECT_EQ(num_audio_tracks, extra_data->stream()->GetAudioTracks().size()); 136 EXPECT_EQ(num_audio_tracks, extra_data->stream()->GetAudioTracks().size());
136 EXPECT_EQ(num_video_tracks, extra_data->stream()->GetVideoTracks().size()); 137 EXPECT_EQ(num_video_tracks, extra_data->stream()->GetVideoTracks().size());
137 } 138 }
138 139
139 protected: 140 protected:
140 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; 141 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_;
141 blink::WebVector<blink::WebMediaStreamSource> audio_sources_; 142 blink::WebVector<blink::WebMediaStreamSource> audio_sources_;
142 blink::WebVector<blink::WebMediaStreamSource> video_sources_; 143 blink::WebVector<blink::WebMediaStreamSource> video_sources_;
143 }; 144 };
144 145
145 TEST_F(MediaStreamDependencyFactoryTest, CreateRTCPeerConnectionHandler) { 146 TEST_F(MediaStreamDependencyFactoryTest, CreateRTCPeerConnectionHandler) {
146 MockWebRTCPeerConnectionHandlerClient client_jsep; 147 MockWebRTCPeerConnectionHandlerClient client_jsep;
147 scoped_ptr<blink::WebRTCPeerConnectionHandler> pc_handler( 148 scoped_ptr<blink::WebRTCPeerConnectionHandler> pc_handler(
148 dependency_factory_->CreateRTCPeerConnectionHandler(&client_jsep)); 149 dependency_factory_->CreateRTCPeerConnectionHandler(&client_jsep));
149 EXPECT_TRUE(pc_handler.get() != NULL); 150 EXPECT_TRUE(pc_handler.get() != NULL);
150 } 151 }
151 152
152 TEST_F(MediaStreamDependencyFactoryTest, CreateNativeMediaStream) { 153 TEST_F(MediaStreamDependencyFactoryTest, CreateNativeMediaStream) {
153 blink::WebMediaStream stream_desc = CreateWebKitMediaStream(true, true); 154 blink::WebMediaStream stream_desc = CreateWebKitMediaStream(true, true);
154 CreateNativeSources(&stream_desc); 155 //CreateNativeSources(&stream_desc);
155 156
156 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc); 157 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc);
157 VerifyMediaStream(stream_desc, 1, 1); 158 VerifyMediaStream(stream_desc, 1, 1);
158 } 159 }
159 160
160 // Test that we don't crash if a MediaStream is created in WebKit with unknown 161 // Test that we don't crash if a MediaStream is created in WebKit with unknown
161 // sources. This can for example happen if a MediaStream is created with 162 // sources. This can for example happen if a MediaStream is created with
162 // remote tracks. 163 // remote tracks.
163 TEST_F(MediaStreamDependencyFactoryTest, CreateNativeMediaStreamWithoutSource) { 164 TEST_F(MediaStreamDependencyFactoryTest, CreateNativeMediaStreamWithoutSource) {
164 // Create a WebKit MediaStream description. 165 // Create a WebKit MediaStream description.
(...skipping 16 matching lines...) Expand all
181 blink::WebMediaStream stream_desc; 182 blink::WebMediaStream stream_desc;
182 stream_desc.initialize("new stream", audio_tracks, video_tracks); 183 stream_desc.initialize("new stream", audio_tracks, video_tracks);
183 184
184 EXPECT_TRUE(dependency_factory_->EnsurePeerConnectionFactory()); 185 EXPECT_TRUE(dependency_factory_->EnsurePeerConnectionFactory());
185 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc); 186 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc);
186 VerifyMediaStream(stream_desc, 0, 0); 187 VerifyMediaStream(stream_desc, 0, 0);
187 } 188 }
188 189
189 TEST_F(MediaStreamDependencyFactoryTest, AddAndRemoveNativeTrack) { 190 TEST_F(MediaStreamDependencyFactoryTest, AddAndRemoveNativeTrack) {
190 blink::WebMediaStream stream_desc = CreateWebKitMediaStream(true, true); 191 blink::WebMediaStream stream_desc = CreateWebKitMediaStream(true, true);
191 CreateNativeSources(&stream_desc); 192 //CreateNativeSources(&stream_desc);
192 193
193 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc); 194 dependency_factory_->CreateNativeLocalMediaStream(&stream_desc);
194 VerifyMediaStream(stream_desc, 1, 1); 195 VerifyMediaStream(stream_desc, 1, 1);
195 196
196 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 197 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
197 stream_desc.audioTracks(audio_tracks); 198 stream_desc.audioTracks(audio_tracks);
198 EXPECT_TRUE(dependency_factory_->RemoveNativeMediaStreamTrack( 199 EXPECT_TRUE(dependency_factory_->RemoveNativeMediaStreamTrack(
199 stream_desc, audio_tracks[0])); 200 stream_desc, audio_tracks[0]));
200 VerifyMediaStream(stream_desc, 0, 1); 201 VerifyMediaStream(stream_desc, 0, 1);
201 202
202 EXPECT_TRUE(dependency_factory_->AddNativeMediaStreamTrack( 203 EXPECT_TRUE(dependency_factory_->AddNativeMediaStreamTrack(
203 stream_desc, audio_tracks[0])); 204 stream_desc, audio_tracks[0]));
204 VerifyMediaStream(stream_desc, 1, 1); 205 VerifyMediaStream(stream_desc, 1, 1);
205 206
206 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 207 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
207 stream_desc.videoTracks(video_tracks); 208 stream_desc.videoTracks(video_tracks);
208 EXPECT_TRUE(dependency_factory_->RemoveNativeMediaStreamTrack( 209 EXPECT_TRUE(dependency_factory_->RemoveNativeMediaStreamTrack(
209 stream_desc, video_tracks[0])); 210 stream_desc, video_tracks[0]));
210 VerifyMediaStream(stream_desc, 1, 0); 211 VerifyMediaStream(stream_desc, 1, 0);
211 212
212 EXPECT_TRUE(dependency_factory_->AddNativeMediaStreamTrack( 213 EXPECT_TRUE(dependency_factory_->AddNativeMediaStreamTrack(
213 stream_desc, video_tracks[0])); 214 stream_desc, video_tracks[0]));
214 VerifyMediaStream(stream_desc, 1, 1); 215 VerifyMediaStream(stream_desc, 1, 1);
215 } 216 }
216 217
217 } // namespace content 218 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698