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

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

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