Index: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
index 733787f34109b44eccab55864324facd02977f3f..a09ffea38e48cdf218c4eb376e63fcec4a7edaa0 100644 |
--- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
+++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
@@ -51,8 +51,10 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, |
MockMediaStreamDispatcherHost( |
const ResourceContext::SaltCallback salt_callback, |
const scoped_refptr<base::MessageLoopProxy>& message_loop, |
- MediaStreamManager* manager) |
- : MediaStreamDispatcherHost(kProcessId, salt_callback, manager), |
+ MediaStreamManager* manager, |
+ ResourceContext* resource_context) |
+ : MediaStreamDispatcherHost(kProcessId, salt_callback, manager, |
+ resource_context), |
message_loop_(message_loop), |
current_ipc_(NULL) {} |
@@ -230,10 +232,17 @@ class MediaStreamDispatcherHostTest : public testing::Test { |
->video_capture_device_factory()); |
DCHECK(video_capture_device_factory_); |
+ MockResourceContext* mock_resource_context = |
+ static_cast<MockResourceContext*>( |
+ browser_context_.GetResourceContext()); |
+ mock_resource_context->set_mic_access(true); |
+ mock_resource_context->set_camera_access(true); |
+ |
host_ = new MockMediaStreamDispatcherHost( |
- browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(), |
+ mock_resource_context->GetMediaDeviceIDSalt(), |
base::MessageLoopProxy::current(), |
- media_stream_manager_.get()); |
+ media_stream_manager_.get(), |
+ mock_resource_context); |
// Use the fake content client and browser. |
content_client_.reset(new TestContentClient()); |
@@ -380,6 +389,24 @@ class MediaStreamDispatcherHostTest : public testing::Test { |
return true; |
} |
+ // Returns true if all devices have labels, false otherwise. |
+ bool DoesContainLabels(const StreamDeviceInfoArray& devices) { |
+ for (size_t i = 0; i < devices.size(); ++i) { |
+ if (devices[i].device.name.empty()) |
+ return false; |
+ } |
+ return true; |
+ } |
+ |
+ // Returns true if no devices have labels, false otherwise. |
+ bool DoesNotContainLabels(const StreamDeviceInfoArray& devices) { |
+ for (size_t i = 0; i < devices.size(); ++i) { |
+ if (!devices[i].device.name.empty()) |
+ return false; |
+ } |
+ return true; |
+ } |
+ |
void AddSourceIdConstraint(const std::string& source_id, |
StreamOptions::Constraints* constraints) { |
constraints->push_back(StreamOptions::Constraint(kMediaStreamSourceInfoId, |
@@ -852,11 +879,31 @@ TEST_F(MediaStreamDispatcherHostTest, VideoDeviceUnplugged) { |
TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevices) { |
EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
MEDIA_DEVICE_AUDIO_CAPTURE); |
+ EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); |
} |
TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevices) { |
EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
MEDIA_DEVICE_VIDEO_CAPTURE); |
+ EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); |
+} |
+ |
+TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevicesNoAccess) { |
+ MockResourceContext* mock_resource_context = |
+ static_cast<MockResourceContext*>(browser_context_.GetResourceContext()); |
+ mock_resource_context->set_mic_access(false); |
+ EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
+ MEDIA_DEVICE_AUDIO_CAPTURE); |
+ EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); |
+} |
+ |
+TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevicesNoAccess) { |
+ MockResourceContext* mock_resource_context = |
+ static_cast<MockResourceContext*>(browser_context_.GetResourceContext()); |
+ mock_resource_context->set_camera_access(false); |
+ EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, |
+ MEDIA_DEVICE_VIDEO_CAPTURE); |
+ EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); |
} |
}; // namespace content |