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

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

Issue 10834232: Revert 150491 - refactor EnumerateDevices to make it a persistent request. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 <string> 5 #include <string>
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "content/common/media/media_stream_messages.h" 10 #include "content/common/media/media_stream_messages.h"
11 #include "content/renderer/media/media_stream_dispatcher.h" 11 #include "content/renderer/media/media_stream_dispatcher.h"
12 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" 12 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h"
13 #include "googleurl/src/gurl.h" 13 #include "googleurl/src/gurl.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace { 16 namespace {
17 17
18 const int kRouteId = 0; 18 const int kRouteId = 0;
19 const int kAudioSessionId = 3; 19 const int kAudioSessionId = 3;
20 const int kVideoSessionId = 5; 20 const int kVideoSessionId = 5;
21 const int kRequestId1 = 10; 21 const int kRequestId1 = 10;
22 const int kRequestId2 = 20; 22 const int kRequestId2 = 20;
23 const int kRequestId3 = 30; 23 const int kRequestId3 = 30;
24 const int kRequestId4 = 40; 24 const int kRequestId4 = 40;
25 static const char kLabel[] = "test";
26 25
27 class MockMediaStreamDispatcherEventHandler 26 class MockMediaStreamDispatcherEventHandler
28 : public MediaStreamDispatcherEventHandler, 27 : public MediaStreamDispatcherEventHandler,
29 public base::SupportsWeakPtr<MockMediaStreamDispatcherEventHandler> { 28 public base::SupportsWeakPtr<MockMediaStreamDispatcherEventHandler> {
30 public: 29 public:
31 MockMediaStreamDispatcherEventHandler() 30 MockMediaStreamDispatcherEventHandler()
32 : request_id_(-1), 31 : request_id_(-1),
33 audio_failed(false), 32 audio_failed(false),
34 video_failed(false) {} 33 video_failed(false) {}
35 34
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 std::string label_; 81 std::string label_;
83 bool audio_failed; 82 bool audio_failed;
84 bool video_failed; 83 bool video_failed;
85 84
86 DISALLOW_COPY_AND_ASSIGN(MockMediaStreamDispatcherEventHandler); 85 DISALLOW_COPY_AND_ASSIGN(MockMediaStreamDispatcherEventHandler);
87 }; 86 };
88 87
89 } // namespace 88 } // namespace
90 89
91 TEST(MediaStreamDispatcherTest, BasicStream) { 90 TEST(MediaStreamDispatcherTest, BasicStream) {
92 scoped_ptr<MessageLoop> message_loop(new MessageLoop());
93 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 91 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
94 scoped_ptr<MockMediaStreamDispatcherEventHandler> 92 scoped_ptr<MockMediaStreamDispatcherEventHandler>
95 handler(new MockMediaStreamDispatcherEventHandler); 93 handler(new MockMediaStreamDispatcherEventHandler);
96 media_stream::StreamOptions components(true, true); 94 media_stream::StreamOptions components(true, true);
97 GURL security_origin; 95 GURL security_origin;
98 96
99 int ipc_request_id1 = dispatcher->next_ipc_id_; 97 int ipc_request_id1 = dispatcher->next_ipc_id_;
100 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(), 98 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
101 components, security_origin); 99 components, security_origin);
102 int ipc_request_id2 = dispatcher->next_ipc_id_; 100 int ipc_request_id2 = dispatcher->next_ipc_id_;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), 156 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0),
159 media_stream::StreamDeviceInfo::kNoId); 157 media_stream::StreamDeviceInfo::kNoId);
160 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 158 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
161 159
162 // Verify that the request have been completed. 160 // Verify that the request have been completed.
163 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 161 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
164 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 162 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
165 } 163 }
166 164
167 TEST(MediaStreamDispatcherTest, BasicVideoDevice) { 165 TEST(MediaStreamDispatcherTest, BasicVideoDevice) {
168 scoped_ptr<MessageLoop> message_loop(new MessageLoop());
169 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 166 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
170 scoped_ptr<MockMediaStreamDispatcherEventHandler> 167 scoped_ptr<MockMediaStreamDispatcherEventHandler>
171 handler1(new MockMediaStreamDispatcherEventHandler); 168 handler(new MockMediaStreamDispatcherEventHandler);
172 scoped_ptr<MockMediaStreamDispatcherEventHandler>
173 handler2(new MockMediaStreamDispatcherEventHandler);
174 GURL security_origin; 169 GURL security_origin;
175 170
176 int ipc_request_id1 = dispatcher->next_ipc_id_; 171 int ipc_request_id1 = dispatcher->next_ipc_id_;
177 dispatcher->EnumerateDevices(kRequestId1, handler1.get()->AsWeakPtr(), 172 dispatcher->EnumerateDevices(kRequestId1, handler.get()->AsWeakPtr(),
178 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 173 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
179 security_origin); 174 security_origin);
180 int ipc_request_id2 = dispatcher->next_ipc_id_; 175 int ipc_request_id2 = dispatcher->next_ipc_id_;
181 EXPECT_NE(ipc_request_id1, ipc_request_id2); 176 EXPECT_NE(ipc_request_id1, ipc_request_id2);
182 dispatcher->EnumerateDevices(kRequestId2, handler2.get()->AsWeakPtr(), 177 dispatcher->EnumerateDevices(kRequestId2, handler.get()->AsWeakPtr(),
183 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 178 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
184 security_origin); 179 security_origin);
185 EXPECT_EQ(dispatcher->video_enumeration_state_.requests.size(), size_t(2)); 180 EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
186 181
187 media_stream::StreamDeviceInfoArray video_device_array(1); 182 media_stream::StreamDeviceInfoArray video_device_array(1);
188 media_stream::StreamDeviceInfo video_device_info; 183 media_stream::StreamDeviceInfo video_device_info;
189 video_device_info.name = "Camera"; 184 video_device_info.name = "Camera";
190 video_device_info.device_id = "device_path"; 185 video_device_info.device_id = "device_path";
191 video_device_info.stream_type = 186 video_device_info.stream_type =
192 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; 187 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE;
193 video_device_info.session_id = kVideoSessionId; 188 video_device_info.session_id = kVideoSessionId;
194 video_device_array[0] = video_device_info; 189 video_device_array[0] = video_device_info;
195 190
196 // Complete the enumeration request and all requesters should receive reply. 191 // Complete the enumeration of request 1.
197 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated( 192 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
198 kRouteId, ipc_request_id1, kLabel, video_device_array)); 193 kRouteId, ipc_request_id1, video_device_array));
199 EXPECT_EQ(handler1->request_id_, kRequestId1); 194 EXPECT_EQ(handler->request_id_, kRequestId1);
200 EXPECT_EQ(handler2->request_id_, kRequestId2);
201 195
202 EXPECT_EQ(dispatcher->video_enumeration_state_.requests.size(), size_t(2)); 196 // Complete the enumeration of request 2.
197 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
198 kRouteId, ipc_request_id2, video_device_array));
199 EXPECT_EQ(handler->request_id_, kRequestId2);
200
201 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
203 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 202 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
204 203
205 int ipc_request_id3 = dispatcher->next_ipc_id_; 204 int ipc_request_id3 = dispatcher->next_ipc_id_;
206 dispatcher->OpenDevice(kRequestId3, handler1.get()->AsWeakPtr(), 205 dispatcher->OpenDevice(kRequestId3, handler.get()->AsWeakPtr(),
207 video_device_info.device_id, 206 video_device_info.device_id,
208 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 207 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
209 security_origin); 208 security_origin);
210 int ipc_request_id4 = dispatcher->next_ipc_id_; 209 int ipc_request_id4 = dispatcher->next_ipc_id_;
211 EXPECT_NE(ipc_request_id3, ipc_request_id4); 210 EXPECT_NE(ipc_request_id3, ipc_request_id4);
212 dispatcher->OpenDevice(kRequestId4, handler1.get()->AsWeakPtr(), 211 dispatcher->OpenDevice(kRequestId4, handler.get()->AsWeakPtr(),
213 video_device_info.device_id, 212 video_device_info.device_id,
214 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 213 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
215 security_origin); 214 security_origin);
216 EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); 215 EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
217 216
218 // Complete the OpenDevice of request 1. 217 // Complete the OpenDevice of request 1.
219 std::string stream_label1 = std::string("stream1"); 218 std::string stream_label1 = std::string("stream1");
220 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened( 219 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened(
221 kRouteId, ipc_request_id3, stream_label1, video_device_info)); 220 kRouteId, ipc_request_id3, stream_label1, video_device_info));
222 EXPECT_EQ(handler1->request_id_, kRequestId3); 221 EXPECT_EQ(handler->request_id_, kRequestId3);
223 222
224 // Complete the OpenDevice of request 2. 223 // Complete the OpenDevice of request 2.
225 std::string stream_label2 = std::string("stream2"); 224 std::string stream_label2 = std::string("stream2");
226 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened( 225 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened(
227 kRouteId, ipc_request_id4, stream_label2, video_device_info)); 226 kRouteId, ipc_request_id4, stream_label2, video_device_info));
228 EXPECT_EQ(handler1->request_id_, kRequestId4); 227 EXPECT_EQ(handler->request_id_, kRequestId4);
229 228
230 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 229 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
231 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(2)); 230 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(2));
232 231
233 // Check the video_session_id. 232 // Check the video_session_id.
234 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), kVideoSessionId); 233 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), kVideoSessionId);
235 EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), kVideoSessionId); 234 EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), kVideoSessionId);
236 235
237 // Stop stream2. 236 // Stop stream2.
238 dispatcher->StopStream(stream_label2); 237 dispatcher->StopStream(stream_label2);
239 EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), 238 EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0),
240 media_stream::StreamDeviceInfo::kNoId); 239 media_stream::StreamDeviceInfo::kNoId);
241 240
242 // Stop stream1. 241 // Stop stream1.
243 dispatcher->StopStream(stream_label1); 242 dispatcher->StopStream(stream_label1);
244 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), 243 EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0),
245 media_stream::StreamDeviceInfo::kNoId); 244 media_stream::StreamDeviceInfo::kNoId);
246 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 245 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
247 246
248 // Verify that the request have been completed. 247 // Verify that the request have been completed.
249 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 248 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
250 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 249 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
251 } 250 }
252 251
253 TEST(MediaStreamDispatcherTest, TestFailure) { 252 TEST(MediaStreamDispatcherTest, TestFailure) {
254 scoped_ptr<MessageLoop> message_loop(new MessageLoop());
255 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 253 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
256 scoped_ptr<MockMediaStreamDispatcherEventHandler> 254 scoped_ptr<MockMediaStreamDispatcherEventHandler>
257 handler(new MockMediaStreamDispatcherEventHandler); 255 handler(new MockMediaStreamDispatcherEventHandler);
258 media_stream::StreamOptions components(true, true); 256 media_stream::StreamOptions components(true, true);
259 GURL security_origin; 257 GURL security_origin;
260 258
261 // Test failure when creating a stream. 259 // Test failure when creating a stream.
262 int ipc_request_id1 = dispatcher->next_ipc_id_; 260 int ipc_request_id1 = dispatcher->next_ipc_id_;
263 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(), 261 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
264 components, security_origin); 262 components, security_origin);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 dispatcher->OnMessageReceived( 309 dispatcher->OnMessageReceived(
312 MediaStreamHostMsg_AudioDeviceFailed(kRouteId, stream_label1, 0)); 310 MediaStreamHostMsg_AudioDeviceFailed(kRouteId, stream_label1, 0));
313 EXPECT_EQ(handler->audio_failed, true); 311 EXPECT_EQ(handler->audio_failed, true);
314 312
315 // Stop stream1. 313 // Stop stream1.
316 dispatcher->StopStream(stream_label1); 314 dispatcher->StopStream(stream_label1);
317 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 315 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
318 } 316 }
319 317
320 TEST(MediaStreamDispatcherTest, CancelGenerateStream) { 318 TEST(MediaStreamDispatcherTest, CancelGenerateStream) {
321 scoped_ptr<MessageLoop> message_loop(new MessageLoop());
322 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 319 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
323 scoped_ptr<MockMediaStreamDispatcherEventHandler> 320 scoped_ptr<MockMediaStreamDispatcherEventHandler>
324 handler(new MockMediaStreamDispatcherEventHandler); 321 handler(new MockMediaStreamDispatcherEventHandler);
325 media_stream::StreamOptions components(true, true); 322 media_stream::StreamOptions components(true, true);
326 int ipc_request_id1 = dispatcher->next_ipc_id_; 323 int ipc_request_id1 = dispatcher->next_ipc_id_;
327 324
328 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(), 325 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
329 components, GURL()); 326 components, GURL());
330 dispatcher->GenerateStream(kRequestId2, handler.get()->AsWeakPtr(), 327 dispatcher->GenerateStream(kRequestId2, handler.get()->AsWeakPtr(),
331 components, GURL()); 328 components, GURL());
(...skipping 20 matching lines...) Expand all
352 video_device_array[0] = video_device_info; 349 video_device_array[0] = video_device_info;
353 350
354 std::string stream_label1 = "stream1"; 351 std::string stream_label1 = "stream1";
355 dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerated( 352 dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerated(
356 kRouteId, ipc_request_id1, stream_label1, 353 kRouteId, ipc_request_id1, stream_label1,
357 audio_device_array, video_device_array)); 354 audio_device_array, video_device_array));
358 EXPECT_EQ(handler->request_id_, kRequestId1); 355 EXPECT_EQ(handler->request_id_, kRequestId1);
359 EXPECT_EQ(handler->label_, stream_label1); 356 EXPECT_EQ(handler->label_, stream_label1);
360 EXPECT_EQ(0u, dispatcher->requests_.size()); 357 EXPECT_EQ(0u, dispatcher->requests_.size());
361 } 358 }
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_dispatcher.cc ('k') | content/renderer/pepper/pepper_device_enumeration_event_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698