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

Side by Side Diff: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc

Issue 9433006: Remove GetAudioManager and GetMediaStreamManager from ResourceContext. The reason is the content mo… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review comments Created 8 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 <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "content/browser/browser_thread_impl.h" 9 #include "content/browser/browser_thread_impl.h"
10 #include "content/browser/mock_resource_context.h" 10 #include "content/browser/mock_resource_context.h"
(...skipping 17 matching lines...) Expand all
28 28
29 const int kProcessId = 5; 29 const int kProcessId = 5;
30 const int kRenderId = 6; 30 const int kRenderId = 6;
31 const int kPageRequestId = 7; 31 const int kPageRequestId = 7;
32 32
33 namespace media_stream { 33 namespace media_stream {
34 34
35 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost { 35 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost {
36 public: 36 public:
37 MockMediaStreamDispatcherHost(content::ResourceContext* resource_context, 37 MockMediaStreamDispatcherHost(content::ResourceContext* resource_context,
38 MessageLoop* message_loop) 38 MessageLoop* message_loop,
39 : MediaStreamDispatcherHost(resource_context, kProcessId), 39 AudioManager* audio_manager)
40 : MediaStreamDispatcherHost(resource_context, kProcessId, audio_manager),
40 message_loop_(message_loop) {} 41 message_loop_(message_loop) {}
41 virtual ~MockMediaStreamDispatcherHost() {} 42 virtual ~MockMediaStreamDispatcherHost() {}
42 43
43 // A list of mock methods. 44 // A list of mock methods.
44 MOCK_METHOD4(OnStreamGenerated, 45 MOCK_METHOD4(OnStreamGenerated,
45 void(int routing_id, int request_id, int audio_array_size, 46 void(int routing_id, int request_id, int audio_array_size,
46 int video_array_size)); 47 int video_array_size));
47 MOCK_METHOD2(OnStreamGenerationFailed, void(int routing_id, int request_id)); 48 MOCK_METHOD2(OnStreamGenerationFailed, void(int routing_id, int request_id));
48 MOCK_METHOD2(OnAudioDeviceFailed, void(int routing_id, int index)); 49 MOCK_METHOD2(OnAudioDeviceFailed, void(int routing_id, int index));
49 MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index)); 50 MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index));
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); 147 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
147 // ResourceContext must be created on UI thread. 148 // ResourceContext must be created on UI thread.
148 ui_thread_.reset(new BrowserThreadImpl(BrowserThread::UI, 149 ui_thread_.reset(new BrowserThreadImpl(BrowserThread::UI,
149 message_loop_.get())); 150 message_loop_.get()));
150 // MediaStreamManager must be created and called on IO thread. 151 // MediaStreamManager must be created and called on IO thread.
151 io_thread_.reset(new BrowserThreadImpl(BrowserThread::IO, 152 io_thread_.reset(new BrowserThreadImpl(BrowserThread::IO,
152 message_loop_.get())); 153 message_loop_.get()));
153 154
154 audio_manager_.reset(AudioManager::Create()); 155 audio_manager_.reset(AudioManager::Create());
155 156
156 // Create a MediaStreamManager instance and hand over pointer to
157 // ResourceContext.
158 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get()));
159 // Make sure we use fake devices to avoid long delays. 157 // Make sure we use fake devices to avoid long delays.
160 media_stream_manager_->UseFakeDevice(); 158 MediaStreamManager::GetForResourceContext(
161 resource_context_.set_media_stream_manager(media_stream_manager_.get()); 159 &resource_context_, audio_manager_.get())->UseFakeDevice();
162 160
163 host_ = new MockMediaStreamDispatcherHost( 161 host_ = new MockMediaStreamDispatcherHost(
164 &resource_context_, message_loop_.get()); 162 &resource_context_, message_loop_.get(), audio_manager_.get());
165 } 163 }
166 164
167 virtual void TearDown() { 165 virtual void TearDown() {
168 // Needed to make sure the manager finishes all tasks on its own thread. 166 // Needed to make sure the manager finishes all tasks on its own thread.
169 SyncWithVideoCaptureManagerThread(); 167 SyncWithVideoCaptureManagerThread();
170 } 168 }
171 169
172 // Called on the VideoCaptureManager thread. 170 // Called on the VideoCaptureManager thread.
173 static void PostQuitMessageLoop(MessageLoop* message_loop) { 171 static void PostQuitMessageLoop(MessageLoop* message_loop) {
174 message_loop->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 172 message_loop->PostTask(FROM_HERE, MessageLoop::QuitClosure());
(...skipping 10 matching lines...) Expand all
185 183
186 // SyncWithVideoCaptureManagerThread() waits until all pending tasks on the 184 // SyncWithVideoCaptureManagerThread() waits until all pending tasks on the
187 // video_capture_manager thread are executed while also processing pending 185 // video_capture_manager thread are executed while also processing pending
188 // task in message_loop_ on the current thread. It is used to synchronize 186 // task in message_loop_ on the current thread. It is used to synchronize
189 // with the video capture manager thread when we are stopping a video 187 // with the video capture manager thread when we are stopping a video
190 // capture device. 188 // capture device.
191 void SyncWithVideoCaptureManagerThread() { 189 void SyncWithVideoCaptureManagerThread() {
192 message_loop_->PostTask( 190 message_loop_->PostTask(
193 FROM_HERE, 191 FROM_HERE,
194 base::Bind(&PostQuitOnVideoCaptureManagerThread, 192 base::Bind(&PostQuitOnVideoCaptureManagerThread,
195 message_loop_.get(), media_stream_manager_.get())); 193 message_loop_.get(),
194 MediaStreamManager::GetForResourceContext(
195 &resource_context_, audio_manager_.get())));
196 message_loop_->Run(); 196 message_loop_->Run();
197 } 197 }
198 198
199 scoped_refptr<MockMediaStreamDispatcherHost> host_; 199 scoped_refptr<MockMediaStreamDispatcherHost> host_;
200 scoped_ptr<MessageLoop> message_loop_; 200 scoped_ptr<MessageLoop> message_loop_;
201 scoped_ptr<BrowserThreadImpl> ui_thread_; 201 scoped_ptr<BrowserThreadImpl> ui_thread_;
202 scoped_ptr<BrowserThreadImpl> io_thread_; 202 scoped_ptr<BrowserThreadImpl> io_thread_;
203 scoped_ptr<MediaStreamManager> media_stream_manager_;
204 scoped_ptr<AudioManager> audio_manager_; 203 scoped_ptr<AudioManager> audio_manager_;
205 content::MockResourceContext resource_context_; 204 content::MockResourceContext resource_context_;
206 }; 205 };
207 206
208 TEST_F(MediaStreamDispatcherHostTest, GenerateStream) { 207 TEST_F(MediaStreamDispatcherHostTest, GenerateStream) {
209 StreamOptions options(false, StreamOptions::kFacingUser); 208 StreamOptions options(false, StreamOptions::kFacingUser);
210 209
211 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1)); 210 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
212 host_->OnGenerateStream(kPageRequestId, options); 211 host_->OnGenerateStream(kPageRequestId, options);
213 212
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 host_->OnGenerateStream(kPageRequestId, options); 292 host_->OnGenerateStream(kPageRequestId, options);
294 WaitForResult(); 293 WaitForResult();
295 std::string label = host_->label_; 294 std::string label = host_->label_;
296 295
297 EXPECT_EQ(host_->audio_devices_.size(), 0u); 296 EXPECT_EQ(host_->audio_devices_.size(), 0u);
298 EXPECT_EQ(host_->video_devices_.size(), 1u); 297 EXPECT_EQ(host_->video_devices_.size(), 1u);
299 EXPECT_EQ(host_->NumberOfStreams(), 1u); 298 EXPECT_EQ(host_->NumberOfStreams(), 1u);
300 299
301 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0)); 300 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0));
302 int session_id = host_->video_devices_[0].session_id; 301 int session_id = host_->video_devices_[0].session_id;
303 resource_context_.GetMediaStreamManager()->video_capture_manager()->Error( 302 MediaStreamManager::GetForResourceContext(
304 session_id); 303 &resource_context_, audio_manager_.get())->
304 video_capture_manager()->Error(session_id);
305 WaitForResult(); 305 WaitForResult();
306 EXPECT_EQ(host_->video_devices_.size(), 0u); 306 EXPECT_EQ(host_->video_devices_.size(), 0u);
307 EXPECT_EQ(host_->NumberOfStreams(), 1u); 307 EXPECT_EQ(host_->NumberOfStreams(), 1u);
308 308
309 // TODO(perkj): test audio device failure? 309 // TODO(perkj): test audio device failure?
310 310
311 host_->OnStopGeneratedStream(label); 311 host_->OnStopGeneratedStream(label);
312 EXPECT_EQ(host_->NumberOfStreams(), 0u); 312 EXPECT_EQ(host_->NumberOfStreams(), 0u);
313 } 313 }
314 314
315 }; // namespace media_stream 315 }; // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698