| Index: content/browser/renderer_host/media/device_request_message_filter_unittest.cc | 
| =================================================================== | 
| --- content/browser/renderer_host/media/device_request_message_filter_unittest.cc	(revision 278172) | 
| +++ content/browser/renderer_host/media/device_request_message_filter_unittest.cc	(working copy) | 
| @@ -25,15 +25,15 @@ | 
|  | 
| virtual ~MockMediaStreamManager() {} | 
|  | 
| -  MOCK_METHOD8(EnumerateDevices, | 
| +  MOCK_METHOD7(EnumerateDevices, | 
| std::string(MediaStreamRequester* requester, | 
| int render_process_id, | 
| int render_view_id, | 
| const ResourceContext::SaltCallback& rc, | 
| int page_request_id, | 
| MediaStreamType type, | 
| -                           const GURL& security_origin, | 
| -                           bool have_permission)); | 
| +                           const GURL& security_origin)); | 
| +  MOCK_METHOD1(CancelRequest, void(const std::string& label)); | 
|  | 
| std::string DoEnumerateDevices(MediaStreamRequester* requester, | 
| int render_process_id, | 
| @@ -41,8 +41,7 @@ | 
| const ResourceContext::SaltCallback& rc, | 
| int page_request_id, | 
| MediaStreamType type, | 
| -                                 const GURL& security_origin, | 
| -                                 bool have_permission) { | 
| +                                 const GURL& security_origin) { | 
| if (type == MEDIA_DEVICE_AUDIO_CAPTURE) { | 
| return kAudioLabel; | 
| } else { | 
| @@ -96,12 +95,10 @@ | 
| AddVideoDevices(number_video_devices); | 
| GURL origin("https://test.com"); | 
| EXPECT_CALL(*media_stream_manager_, | 
| -                EnumerateDevices(_, _, _, _, _, MEDIA_DEVICE_AUDIO_CAPTURE, | 
| -                                 _, _)) | 
| +                EnumerateDevices(_, _, _, _, _, MEDIA_DEVICE_AUDIO_CAPTURE, _)) | 
| .Times(1); | 
| EXPECT_CALL(*media_stream_manager_, | 
| -                EnumerateDevices(_, _, _, _, _, MEDIA_DEVICE_VIDEO_CAPTURE, | 
| -                                 _, _)) | 
| +                EnumerateDevices(_, _, _, _, _, MEDIA_DEVICE_VIDEO_CAPTURE, _)) | 
| .Times(1); | 
| // Send message to get devices. Should trigger 2 EnumerateDevice() requests. | 
| const int kRequestId = 123; | 
| @@ -113,6 +110,10 @@ | 
| EXPECT_EQ(0u, host_->requested_devices().size()); | 
|  | 
| // After the video device callback is fired, |message| should be populated. | 
| +    EXPECT_CALL(*media_stream_manager_, CancelRequest(kAudioLabel)) | 
| +        .Times(1); | 
| +    EXPECT_CALL(*media_stream_manager_, CancelRequest(kVideoLabel)) | 
| +        .Times(1); | 
| FireVideoDeviceCallback(); | 
| EXPECT_EQ(static_cast<size_t>(number_audio_devices + number_video_devices), | 
| host_->requested_devices().size()); | 
| @@ -120,6 +121,15 @@ | 
| EXPECT_EQ(kRequestId, host_->received_id()); | 
| } | 
|  | 
| +  bool AreLabelsPresent(MediaStreamType type) { | 
| +    const StreamDeviceInfoArray& devices = host_->requested_devices(); | 
| +    for (size_t i = 0; i < devices.size(); i++) { | 
| +      if (devices[i].device.type == type && !devices[i].device.name.empty()) | 
| +        return true; | 
| +    } | 
| +    return false; | 
| +  } | 
| + | 
| protected: | 
| virtual ~DeviceRequestMessageFilterTest() {} | 
|  | 
| @@ -129,7 +139,7 @@ | 
| new TestBrowserThread(BrowserThread::IO, message_loop_.get())); | 
|  | 
| media_stream_manager_.reset(new MockMediaStreamManager()); | 
| -    ON_CALL(*media_stream_manager_, EnumerateDevices(_, _, _, _, _, _, _, _)) | 
| +    ON_CALL(*media_stream_manager_, EnumerateDevices(_, _, _, _, _, _, _)) | 
| .WillByDefault(Invoke(media_stream_manager_.get(), | 
| &MockMediaStreamManager::DoEnumerateDevices)); | 
|  | 
| @@ -210,4 +220,36 @@ | 
| RunTest(0, 0); | 
| } | 
|  | 
| +TEST_F(DeviceRequestMessageFilterTest, TestGetSources_DenyMicDenyCamera) { | 
| +  resource_context_->set_mic_access(false); | 
| +  resource_context_->set_camera_access(false); | 
| +  RunTest(3, 3); | 
| +  EXPECT_FALSE(AreLabelsPresent(MEDIA_DEVICE_AUDIO_CAPTURE)); | 
| +  EXPECT_FALSE(AreLabelsPresent(MEDIA_DEVICE_VIDEO_CAPTURE)); | 
| +} | 
| + | 
| +TEST_F(DeviceRequestMessageFilterTest, TestGetSources_AllowMicDenyCamera) { | 
| +  resource_context_->set_mic_access(true); | 
| +  resource_context_->set_camera_access(false); | 
| +  RunTest(3, 3); | 
| +  EXPECT_TRUE(AreLabelsPresent(MEDIA_DEVICE_AUDIO_CAPTURE)); | 
| +  EXPECT_FALSE(AreLabelsPresent(MEDIA_DEVICE_VIDEO_CAPTURE)); | 
| +} | 
| + | 
| +TEST_F(DeviceRequestMessageFilterTest, TestGetSources_DenyMicAllowCamera) { | 
| +  resource_context_->set_mic_access(false); | 
| +  resource_context_->set_camera_access(true); | 
| +  RunTest(3, 3); | 
| +  EXPECT_FALSE(AreLabelsPresent(MEDIA_DEVICE_AUDIO_CAPTURE)); | 
| +  EXPECT_TRUE(AreLabelsPresent(MEDIA_DEVICE_VIDEO_CAPTURE)); | 
| +} | 
| + | 
| +TEST_F(DeviceRequestMessageFilterTest, TestGetSources_AllowMicAllowCamera) { | 
| +  resource_context_->set_mic_access(true); | 
| +  resource_context_->set_camera_access(true); | 
| +  RunTest(3, 3); | 
| +  EXPECT_TRUE(AreLabelsPresent(MEDIA_DEVICE_AUDIO_CAPTURE)); | 
| +  EXPECT_TRUE(AreLabelsPresent(MEDIA_DEVICE_VIDEO_CAPTURE)); | 
| +} | 
| + | 
| };  // namespace content | 
|  |