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

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

Issue 9903014: Using WeakPtr for requests to MediaStreamDispatcher. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 8 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 "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace { 15 namespace {
16 16
17 const int kRouteId = 0; 17 const int kRouteId = 0;
18 const int kAudioSessionId = 3; 18 const int kAudioSessionId = 3;
19 const int kVideoSessionId = 5; 19 const int kVideoSessionId = 5;
20 const int kRequestId1 = 10; 20 const int kRequestId1 = 10;
21 const int kRequestId2 = 20; 21 const int kRequestId2 = 20;
22 const int kRequestId3 = 30; 22 const int kRequestId3 = 30;
23 const int kRequestId4 = 40; 23 const int kRequestId4 = 40;
24 24
25 class MockMediaStreamDispatcherEventHandler 25 class MockMediaStreamDispatcherEventHandler
26 : public MediaStreamDispatcherEventHandler { 26 : public MediaStreamDispatcherEventHandler,
27 public base::SupportsWeakPtr<MockMediaStreamDispatcherEventHandler> {
27 public: 28 public:
28 MockMediaStreamDispatcherEventHandler() 29 MockMediaStreamDispatcherEventHandler()
29 : request_id_(-1), 30 : request_id_(-1),
30 audio_failed(false), 31 audio_failed(false),
31 video_failed(false) {} 32 video_failed(false) {}
32 33
33 virtual void OnStreamGenerated( 34 virtual void OnStreamGenerated(
34 int request_id, 35 int request_id,
35 const std::string &label, 36 const std::string &label,
36 const media_stream::StreamDeviceInfoArray& audio_device_array, 37 const media_stream::StreamDeviceInfoArray& audio_device_array,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 88
88 TEST(MediaStreamDispatcherTest, BasicStream) { 89 TEST(MediaStreamDispatcherTest, BasicStream) {
89 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 90 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
90 scoped_ptr<MockMediaStreamDispatcherEventHandler> 91 scoped_ptr<MockMediaStreamDispatcherEventHandler>
91 handler(new MockMediaStreamDispatcherEventHandler); 92 handler(new MockMediaStreamDispatcherEventHandler);
92 media_stream::StreamOptions components( 93 media_stream::StreamOptions components(
93 true, media_stream::StreamOptions::kFacingUser); 94 true, media_stream::StreamOptions::kFacingUser);
94 std::string security_origin; 95 std::string security_origin;
95 96
96 int ipc_request_id1 = dispatcher->next_ipc_id_; 97 int ipc_request_id1 = dispatcher->next_ipc_id_;
97 dispatcher->GenerateStream(kRequestId1, handler.get(), components, 98 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
98 security_origin); 99 components, security_origin);
99 int ipc_request_id2 = dispatcher->next_ipc_id_; 100 int ipc_request_id2 = dispatcher->next_ipc_id_;
100 EXPECT_NE(ipc_request_id1, ipc_request_id2); 101 EXPECT_NE(ipc_request_id1, ipc_request_id2);
101 dispatcher->GenerateStream(kRequestId2, handler.get(), components, 102 dispatcher->GenerateStream(kRequestId2, handler.get()->AsWeakPtr(),
102 security_origin); 103 components, security_origin);
103 EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); 104 EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
104 105
105 media_stream::StreamDeviceInfoArray audio_device_array(1); 106 media_stream::StreamDeviceInfoArray audio_device_array(1);
106 media_stream::StreamDeviceInfo audio_device_info; 107 media_stream::StreamDeviceInfo audio_device_info;
107 audio_device_info.name = "Microphone"; 108 audio_device_info.name = "Microphone";
108 audio_device_info.stream_type = 109 audio_device_info.stream_type =
109 content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE; 110 content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE;
110 audio_device_info.session_id = kAudioSessionId; 111 audio_device_info.session_id = kAudioSessionId;
111 audio_device_array[0] = audio_device_info; 112 audio_device_array[0] = audio_device_info;
112 113
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 162 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
162 } 163 }
163 164
164 TEST(MediaStreamDispatcherTest, BasicVideoDevice) { 165 TEST(MediaStreamDispatcherTest, BasicVideoDevice) {
165 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 166 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
166 scoped_ptr<MockMediaStreamDispatcherEventHandler> 167 scoped_ptr<MockMediaStreamDispatcherEventHandler>
167 handler(new MockMediaStreamDispatcherEventHandler); 168 handler(new MockMediaStreamDispatcherEventHandler);
168 std::string security_origin; 169 std::string security_origin;
169 170
170 int ipc_request_id1 = dispatcher->next_ipc_id_; 171 int ipc_request_id1 = dispatcher->next_ipc_id_;
171 dispatcher->EnumerateDevices(kRequestId1, handler.get(), 172 dispatcher->EnumerateDevices(kRequestId1, handler.get()->AsWeakPtr(),
172 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 173 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
173 security_origin); 174 security_origin);
174 int ipc_request_id2 = dispatcher->next_ipc_id_; 175 int ipc_request_id2 = dispatcher->next_ipc_id_;
175 EXPECT_NE(ipc_request_id1, ipc_request_id2); 176 EXPECT_NE(ipc_request_id1, ipc_request_id2);
176 dispatcher->EnumerateDevices(kRequestId2, handler.get(), 177 dispatcher->EnumerateDevices(kRequestId2, handler.get()->AsWeakPtr(),
177 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 178 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
178 security_origin); 179 security_origin);
179 EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); 180 EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
180 181
181 media_stream::StreamDeviceInfoArray video_device_array(1); 182 media_stream::StreamDeviceInfoArray video_device_array(1);
182 media_stream::StreamDeviceInfo video_device_info; 183 media_stream::StreamDeviceInfo video_device_info;
183 video_device_info.name = "Camera"; 184 video_device_info.name = "Camera";
184 video_device_info.device_id = "device_path"; 185 video_device_info.device_id = "device_path";
185 video_device_info.stream_type = 186 video_device_info.stream_type =
186 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; 187 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE;
187 video_device_info.session_id = kVideoSessionId; 188 video_device_info.session_id = kVideoSessionId;
188 video_device_array[0] = video_device_info; 189 video_device_array[0] = video_device_info;
189 190
190 // Complete the enumeration of request 1. 191 // Complete the enumeration of request 1.
191 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated( 192 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
192 kRouteId, ipc_request_id1, video_device_array)); 193 kRouteId, ipc_request_id1, video_device_array));
193 EXPECT_EQ(handler->request_id_, kRequestId1); 194 EXPECT_EQ(handler->request_id_, kRequestId1);
194 195
195 // Complete the enumeration of request 2. 196 // Complete the enumeration of request 2.
196 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated( 197 dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
197 kRouteId, ipc_request_id2, video_device_array)); 198 kRouteId, ipc_request_id2, video_device_array));
198 EXPECT_EQ(handler->request_id_, kRequestId2); 199 EXPECT_EQ(handler->request_id_, kRequestId2);
199 200
200 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 201 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
201 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 202 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
202 203
203 int ipc_request_id3 = dispatcher->next_ipc_id_; 204 int ipc_request_id3 = dispatcher->next_ipc_id_;
204 dispatcher->OpenDevice(kRequestId3, handler.get(), 205 dispatcher->OpenDevice(kRequestId3, handler.get()->AsWeakPtr(),
205 video_device_info.device_id, 206 video_device_info.device_id,
206 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 207 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
207 security_origin); 208 security_origin);
208 int ipc_request_id4 = dispatcher->next_ipc_id_; 209 int ipc_request_id4 = dispatcher->next_ipc_id_;
209 EXPECT_NE(ipc_request_id3, ipc_request_id4); 210 EXPECT_NE(ipc_request_id3, ipc_request_id4);
210 dispatcher->OpenDevice(kRequestId4, handler.get(), 211 dispatcher->OpenDevice(kRequestId4, handler.get()->AsWeakPtr(),
211 video_device_info.device_id, 212 video_device_info.device_id,
212 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, 213 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE,
213 security_origin); 214 security_origin);
214 EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); 215 EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
215 216
216 // Complete the OpenDevice of request 1. 217 // Complete the OpenDevice of request 1.
217 std::string stream_label1 = std::string("stream1"); 218 std::string stream_label1 = std::string("stream1");
218 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened( 219 dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened(
219 kRouteId, ipc_request_id3, stream_label1, video_device_info)); 220 kRouteId, ipc_request_id3, stream_label1, video_device_info));
220 EXPECT_EQ(handler->request_id_, kRequestId3); 221 EXPECT_EQ(handler->request_id_, kRequestId3);
(...skipping 30 matching lines...) Expand all
251 TEST(MediaStreamDispatcherTest, TestFailure) { 252 TEST(MediaStreamDispatcherTest, TestFailure) {
252 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); 253 scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
253 scoped_ptr<MockMediaStreamDispatcherEventHandler> 254 scoped_ptr<MockMediaStreamDispatcherEventHandler>
254 handler(new MockMediaStreamDispatcherEventHandler); 255 handler(new MockMediaStreamDispatcherEventHandler);
255 media_stream::StreamOptions components( 256 media_stream::StreamOptions components(
256 true, media_stream::StreamOptions::kFacingUser); 257 true, media_stream::StreamOptions::kFacingUser);
257 std::string security_origin; 258 std::string security_origin;
258 259
259 // Test failure when creating a stream. 260 // Test failure when creating a stream.
260 int ipc_request_id1 = dispatcher->next_ipc_id_; 261 int ipc_request_id1 = dispatcher->next_ipc_id_;
261 dispatcher->GenerateStream(kRequestId1, handler.get(), components, 262 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
262 security_origin); 263 components, security_origin);
263 dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerationFailed( 264 dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerationFailed(
264 kRouteId, ipc_request_id1)); 265 kRouteId, ipc_request_id1));
265 266
266 // Verify that the request have been completed. 267 // Verify that the request have been completed.
267 EXPECT_EQ(handler->request_id_, kRequestId1); 268 EXPECT_EQ(handler->request_id_, kRequestId1);
268 EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); 269 EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
269 270
270 // Create a new stream. 271 // Create a new stream.
271 ipc_request_id1 = dispatcher->next_ipc_id_; 272 ipc_request_id1 = dispatcher->next_ipc_id_;
272 dispatcher->GenerateStream(kRequestId1, handler.get(), components, 273 dispatcher->GenerateStream(kRequestId1, handler.get()->AsWeakPtr(),
273 security_origin); 274 components, security_origin);
274 275
275 media_stream::StreamDeviceInfoArray audio_device_array(1); 276 media_stream::StreamDeviceInfoArray audio_device_array(1);
276 media_stream::StreamDeviceInfo audio_device_info; 277 media_stream::StreamDeviceInfo audio_device_info;
277 audio_device_info.name = "Microphone"; 278 audio_device_info.name = "Microphone";
278 audio_device_info.stream_type = 279 audio_device_info.stream_type =
279 content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE; 280 content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE;
280 audio_device_info.session_id = kAudioSessionId; 281 audio_device_info.session_id = kAudioSessionId;
281 audio_device_array[0] = audio_device_info; 282 audio_device_array[0] = audio_device_info;
282 283
283 media_stream::StreamDeviceInfoArray video_device_array(1); 284 media_stream::StreamDeviceInfoArray video_device_array(1);
(...skipping 23 matching lines...) Expand all
307 308
308 // Test failure of the audio device. 309 // Test failure of the audio device.
309 dispatcher->OnMessageReceived( 310 dispatcher->OnMessageReceived(
310 MediaStreamHostMsg_AudioDeviceFailed(kRouteId, stream_label1, 0)); 311 MediaStreamHostMsg_AudioDeviceFailed(kRouteId, stream_label1, 0));
311 EXPECT_EQ(handler->audio_failed, true); 312 EXPECT_EQ(handler->audio_failed, true);
312 313
313 // Stop stream1. 314 // Stop stream1.
314 dispatcher->StopStream(stream_label1); 315 dispatcher->StopStream(stream_label1);
315 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); 316 EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
316 } 317 }
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_dispatcher.cc ('k') | content/renderer/media/media_stream_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698