| Index: chrome/browser/content_settings/tab_specific_content_settings.cc
|
| diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc
|
| index 013db89cffb495a2205bdaf71dbd0c99ab66db47..49f07e96e0bcbf65a7221543b398e1b90ac8e7ff 100644
|
| --- a/chrome/browser/content_settings/tab_specific_content_settings.cc
|
| +++ b/chrome/browser/content_settings/tab_specific_content_settings.cc
|
| @@ -530,49 +530,31 @@ bool TabSpecificContentSettings::IsMicrophoneCameraStateChanged() const {
|
|
|
| void TabSpecificContentSettings::OnMediaStreamPermissionSet(
|
| const GURL& request_origin,
|
| - const MediaStreamDevicesController::MediaStreamTypeSettingsMap&
|
| - request_permissions) {
|
| + MicrophoneCameraState new_microphone_camera_state,
|
| + const std::string& media_stream_selected_audio_device,
|
| + const std::string& media_stream_selected_video_device,
|
| + const std::string& media_stream_requested_audio_device,
|
| + const std::string& media_stream_requested_video_device) {
|
| media_stream_access_origin_ = request_origin;
|
| - MicrophoneCameraState prev_microphone_camera_state = microphone_camera_state_;
|
| - microphone_camera_state_ = MICROPHONE_CAMERA_NOT_ACCESSED;
|
|
|
| - PrefService* prefs =
|
| - Profile::FromBrowserContext(web_contents()->GetBrowserContext())->
|
| - GetPrefs();
|
| - MediaStreamDevicesController::MediaStreamTypeSettingsMap::const_iterator it =
|
| - request_permissions.find(content::MEDIA_DEVICE_AUDIO_CAPTURE);
|
| - if (it != request_permissions.end()) {
|
| - media_stream_requested_audio_device_ = it->second.requested_device_id;
|
| - media_stream_selected_audio_device_ =
|
| - media_stream_requested_audio_device_.empty() ?
|
| - prefs->GetString(prefs::kDefaultAudioCaptureDevice) :
|
| - media_stream_requested_audio_device_;
|
| - DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
|
| - bool mic_allowed =
|
| - it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
|
| - content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = mic_allowed;
|
| - content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = !mic_allowed;
|
| - microphone_camera_state_ |=
|
| - MICROPHONE_ACCESSED | (mic_allowed ? 0 : MICROPHONE_BLOCKED);
|
| + if (new_microphone_camera_state & MICROPHONE_ACCESSED) {
|
| + media_stream_requested_audio_device_ = media_stream_requested_audio_device;
|
| + media_stream_selected_audio_device_ = media_stream_selected_audio_device;
|
| + bool mic_blocked = (new_microphone_camera_state & MICROPHONE_BLOCKED) != 0;
|
| + content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = !mic_blocked;
|
| + content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] = mic_blocked;
|
| }
|
|
|
| - it = request_permissions.find(content::MEDIA_DEVICE_VIDEO_CAPTURE);
|
| - if (it != request_permissions.end()) {
|
| - media_stream_requested_video_device_ = it->second.requested_device_id;
|
| - media_stream_selected_video_device_ =
|
| - media_stream_requested_video_device_.empty() ?
|
| - prefs->GetString(prefs::kDefaultVideoCaptureDevice) :
|
| - media_stream_requested_video_device_;
|
| - DCHECK_NE(MediaStreamDevicesController::MEDIA_NONE, it->second.permission);
|
| - bool cam_allowed =
|
| - it->second.permission == MediaStreamDevicesController::MEDIA_ALLOWED;
|
| - content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = cam_allowed;
|
| - content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = !cam_allowed;
|
| - microphone_camera_state_ |=
|
| - CAMERA_ACCESSED | (cam_allowed ? 0 : CAMERA_BLOCKED);
|
| + if (new_microphone_camera_state & CAMERA_ACCESSED) {
|
| + media_stream_requested_video_device_ = media_stream_requested_video_device;
|
| + media_stream_selected_video_device_ = media_stream_selected_video_device;
|
| + bool cam_blocked = (new_microphone_camera_state & CAMERA_BLOCKED) != 0;
|
| + content_allowed_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = !cam_blocked;
|
| + content_blocked_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] = cam_blocked;
|
| }
|
|
|
| - if (microphone_camera_state_ != prev_microphone_camera_state) {
|
| + if (microphone_camera_state_ != new_microphone_camera_state) {
|
| + microphone_camera_state_ = new_microphone_camera_state;
|
| content::NotificationService::current()->Notify(
|
| chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED,
|
| content::Source<WebContents>(web_contents()),
|
|
|