OLD | NEW |
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 #include <queue> | 6 #include <queue> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 const int kPageRequestId = 7; | 44 const int kPageRequestId = 7; |
45 | 45 |
46 namespace content { | 46 namespace content { |
47 | 47 |
48 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, | 48 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, |
49 public TestContentBrowserClient { | 49 public TestContentBrowserClient { |
50 public: | 50 public: |
51 MockMediaStreamDispatcherHost( | 51 MockMediaStreamDispatcherHost( |
52 const ResourceContext::SaltCallback salt_callback, | 52 const ResourceContext::SaltCallback salt_callback, |
53 const scoped_refptr<base::MessageLoopProxy>& message_loop, | 53 const scoped_refptr<base::MessageLoopProxy>& message_loop, |
54 MediaStreamManager* manager) | 54 MediaStreamManager* manager, |
55 : MediaStreamDispatcherHost(kProcessId, salt_callback, manager), | 55 ResourceContext* resource_context) |
| 56 : MediaStreamDispatcherHost(kProcessId, salt_callback, manager, |
| 57 resource_context), |
56 message_loop_(message_loop), | 58 message_loop_(message_loop), |
57 current_ipc_(NULL) {} | 59 current_ipc_(NULL) {} |
58 | 60 |
59 // A list of mock methods. | 61 // A list of mock methods. |
60 MOCK_METHOD4(OnStreamGenerated, | 62 MOCK_METHOD4(OnStreamGenerated, |
61 void(int routing_id, int request_id, int audio_array_size, | 63 void(int routing_id, int request_id, int audio_array_size, |
62 int video_array_size)); | 64 int video_array_size)); |
63 MOCK_METHOD3(OnStreamGenerationFailed, void(int routing_id, | 65 MOCK_METHOD3(OnStreamGenerationFailed, void(int routing_id, |
64 int request_id, | 66 int request_id, |
65 MediaStreamRequestResult result)); | 67 MediaStreamRequestResult result)); |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 CommandLine::ForCurrentProcess()->AppendSwitch( | 225 CommandLine::ForCurrentProcess()->AppendSwitch( |
224 switches::kUseFakeDeviceForMediaStream); | 226 switches::kUseFakeDeviceForMediaStream); |
225 // Create our own MediaStreamManager. | 227 // Create our own MediaStreamManager. |
226 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get())); | 228 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get())); |
227 video_capture_device_factory_ = | 229 video_capture_device_factory_ = |
228 static_cast<media::FakeVideoCaptureDeviceFactory*>( | 230 static_cast<media::FakeVideoCaptureDeviceFactory*>( |
229 media_stream_manager_->video_capture_manager() | 231 media_stream_manager_->video_capture_manager() |
230 ->video_capture_device_factory()); | 232 ->video_capture_device_factory()); |
231 DCHECK(video_capture_device_factory_); | 233 DCHECK(video_capture_device_factory_); |
232 | 234 |
| 235 MockResourceContext* mock_resource_context = |
| 236 static_cast<MockResourceContext*>( |
| 237 browser_context_.GetResourceContext()); |
| 238 mock_resource_context->set_mic_access(true); |
| 239 mock_resource_context->set_camera_access(true); |
| 240 |
233 host_ = new MockMediaStreamDispatcherHost( | 241 host_ = new MockMediaStreamDispatcherHost( |
234 browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(), | 242 mock_resource_context->GetMediaDeviceIDSalt(), |
235 base::MessageLoopProxy::current(), | 243 base::MessageLoopProxy::current(), |
236 media_stream_manager_.get()); | 244 media_stream_manager_.get(), |
| 245 mock_resource_context); |
237 | 246 |
238 // Use the fake content client and browser. | 247 // Use the fake content client and browser. |
239 content_client_.reset(new TestContentClient()); | 248 content_client_.reset(new TestContentClient()); |
240 SetContentClient(content_client_.get()); | 249 SetContentClient(content_client_.get()); |
241 old_browser_client_ = SetBrowserClientForTesting(host_.get()); | 250 old_browser_client_ = SetBrowserClientForTesting(host_.get()); |
242 } | 251 } |
243 | 252 |
244 virtual ~MediaStreamDispatcherHostTest() { | 253 virtual ~MediaStreamDispatcherHostTest() { |
245 } | 254 } |
246 | 255 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 EXPECT_FALSE(found_match); | 382 EXPECT_FALSE(found_match); |
374 found_match = true; | 383 found_match = true; |
375 } | 384 } |
376 } | 385 } |
377 if (!found_match) | 386 if (!found_match) |
378 return false; | 387 return false; |
379 } | 388 } |
380 return true; | 389 return true; |
381 } | 390 } |
382 | 391 |
| 392 // Returns true if all devices have labels, false otherwise. |
| 393 bool DoesContainLabels(const StreamDeviceInfoArray& devices) { |
| 394 for (size_t i = 0; i < devices.size(); ++i) { |
| 395 if (devices[i].device.name.empty()) |
| 396 return false; |
| 397 } |
| 398 return true; |
| 399 } |
| 400 |
| 401 // Returns true if no devices have labels, false otherwise. |
| 402 bool DoesNotContainLabels(const StreamDeviceInfoArray& devices) { |
| 403 for (size_t i = 0; i < devices.size(); ++i) { |
| 404 if (!devices[i].device.name.empty()) |
| 405 return false; |
| 406 } |
| 407 return true; |
| 408 } |
| 409 |
383 void AddSourceIdConstraint(const std::string& source_id, | 410 void AddSourceIdConstraint(const std::string& source_id, |
384 StreamOptions::Constraints* constraints) { | 411 StreamOptions::Constraints* constraints) { |
385 constraints->push_back(StreamOptions::Constraint(kMediaStreamSourceInfoId, | 412 constraints->push_back(StreamOptions::Constraint(kMediaStreamSourceInfoId, |
386 source_id)); | 413 source_id)); |
387 } | 414 } |
388 | 415 |
389 scoped_refptr<MockMediaStreamDispatcherHost> host_; | 416 scoped_refptr<MockMediaStreamDispatcherHost> host_; |
390 scoped_ptr<media::AudioManager> audio_manager_; | 417 scoped_ptr<media::AudioManager> audio_manager_; |
391 scoped_ptr<MediaStreamManager> media_stream_manager_; | 418 scoped_ptr<MediaStreamManager> media_stream_manager_; |
392 ContentBrowserClient* old_browser_client_; | 419 ContentBrowserClient* old_browser_client_; |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
845 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 872 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
846 media_stream_manager_->OnDevicesChanged( | 873 media_stream_manager_->OnDevicesChanged( |
847 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); | 874 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); |
848 | 875 |
849 run_loop.Run(); | 876 run_loop.Run(); |
850 } | 877 } |
851 | 878 |
852 TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevices) { | 879 TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevices) { |
853 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, | 880 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
854 MEDIA_DEVICE_AUDIO_CAPTURE); | 881 MEDIA_DEVICE_AUDIO_CAPTURE); |
| 882 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); |
855 } | 883 } |
856 | 884 |
857 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevices) { | 885 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevices) { |
858 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, | 886 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
859 MEDIA_DEVICE_VIDEO_CAPTURE); | 887 MEDIA_DEVICE_VIDEO_CAPTURE); |
| 888 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); |
| 889 } |
| 890 |
| 891 TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevicesNoAccess) { |
| 892 MockResourceContext* mock_resource_context = |
| 893 static_cast<MockResourceContext*>(browser_context_.GetResourceContext()); |
| 894 mock_resource_context->set_mic_access(false); |
| 895 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
| 896 MEDIA_DEVICE_AUDIO_CAPTURE); |
| 897 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); |
| 898 } |
| 899 |
| 900 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevicesNoAccess) { |
| 901 MockResourceContext* mock_resource_context = |
| 902 static_cast<MockResourceContext*>(browser_context_.GetResourceContext()); |
| 903 mock_resource_context->set_camera_access(false); |
| 904 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
| 905 MEDIA_DEVICE_VIDEO_CAPTURE); |
| 906 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); |
860 } | 907 } |
861 | 908 |
862 }; // namespace content | 909 }; // namespace content |
OLD | NEW |