Index: chrome/browser/media/webrtc/media_stream_devices_controller.cc |
diff --git a/chrome/browser/media/webrtc/media_stream_devices_controller.cc b/chrome/browser/media/webrtc/media_stream_devices_controller.cc |
index 8c210a42b21548ff33bb6faf8272fa5897aa0c1c..52b81f13b06cd32f7229eb05deff2af6422d7c2c 100644 |
--- a/chrome/browser/media/webrtc/media_stream_devices_controller.cc |
+++ b/chrome/browser/media/webrtc/media_stream_devices_controller.cc |
@@ -206,51 +206,6 @@ bool HasAvailableDevices(ContentSettingsType content_type, |
} // namespace |
-// Stores whether a permission has been requested or blocked during the course |
-// of a permission request, as well as the denial reason |
-class MediaStreamDevicesController::MediaPermissionStatus { |
- public: |
- explicit MediaPermissionStatus(const content::MediaStreamRequest& request) |
- : audio_requested_( |
- ContentTypeIsRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
- request)), |
- video_requested_( |
- ContentTypeIsRequested(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
- request)) {} |
- |
- ~MediaPermissionStatus() {} |
- |
- bool audio_requested() const { return audio_requested_; } |
- bool video_requested() const { return video_requested_; } |
- |
- bool audio_blocked() const { return audio_blocked_; } |
- bool video_blocked() const { return video_blocked_; } |
- |
- content::MediaStreamRequestResult denial_reason() const { |
- return denial_reason_; |
- } |
- |
- void SetAudioBlocked(content::MediaStreamRequestResult denial_reason) { |
- DCHECK(audio_requested_); |
- audio_blocked_ = true; |
- denial_reason_ = denial_reason; |
- } |
- |
- void SetVideoBlocked(content::MediaStreamRequestResult denial_reason) { |
- DCHECK(video_requested_); |
- video_blocked_ = true; |
- denial_reason_ = denial_reason; |
- } |
- |
- private: |
- bool audio_requested_ = false; |
- bool video_requested_ = false; |
- bool audio_blocked_ = false; |
- bool video_blocked_ = false; |
- |
- content::MediaStreamRequestResult denial_reason_ = content::MEDIA_DEVICE_OK; |
-}; |
- |
// Implementation of PermissionPromptDelegate which actually shows a permission |
// prompt. |
class MediaStreamDevicesController::PermissionPromptDelegateImpl |
@@ -414,22 +369,8 @@ void MediaStreamDevicesController::RequestPermissionsWithDelegate( |
content::IsOriginSecure(request.security_origin)); |
} |
- MediaPermissionStatus initial_permission(request); |
- if (initial_permission.audio_requested() && |
- !HasAvailableDevices(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
- request.requested_audio_device_id)) { |
- initial_permission.SetAudioBlocked(content::MEDIA_DEVICE_NO_HARDWARE); |
- } |
- |
- if (initial_permission.video_requested() && |
- !HasAvailableDevices(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
- request.requested_video_device_id)) { |
- initial_permission.SetVideoBlocked(content::MEDIA_DEVICE_NO_HARDWARE); |
- } |
- |
std::unique_ptr<MediaStreamDevicesController> controller( |
- new MediaStreamDevicesController(web_contents, request, callback, |
- initial_permission)); |
+ new MediaStreamDevicesController(web_contents, request, callback)); |
if (!controller->IsAskingForAudio() && !controller->IsAskingForVideo()) { |
#if defined(OS_ANDROID) |
// If either audio or video was previously allowed and Chrome no longer has |
@@ -461,22 +402,16 @@ void MediaStreamDevicesController::RequestPermissionsWithDelegate( |
MediaStreamDevicesController::MediaStreamDevicesController( |
content::WebContents* web_contents, |
const content::MediaStreamRequest& request, |
- const content::MediaResponseCallback& callback, |
- const MediaPermissionStatus& initial_permission) |
+ const content::MediaResponseCallback& callback) |
: web_contents_(web_contents), request_(request), callback_(callback) { |
profile_ = Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
content_settings_ = TabSpecificContentSettings::FromWebContents(web_contents); |
- content::MediaStreamRequestResult denial_reason = |
- initial_permission.denial_reason(); |
- old_audio_setting_ = |
- GetContentSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, request, |
- initial_permission.audio_requested(), |
- initial_permission.audio_blocked(), &denial_reason); |
- old_video_setting_ = |
- GetContentSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, request, |
- initial_permission.video_requested(), |
- initial_permission.video_blocked(), &denial_reason); |
+ content::MediaStreamRequestResult denial_reason = content::MEDIA_DEVICE_OK; |
+ old_audio_setting_ = GetContentSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
+ request, &denial_reason); |
+ old_video_setting_ = GetContentSetting( |
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, request, &denial_reason); |
// If either setting is ask, we show the infobar. |
if (old_audio_setting_ == CONTENT_SETTING_ASK || |
@@ -714,21 +649,24 @@ void MediaStreamDevicesController::UpdateTabSpecificContentSettings( |
ContentSetting MediaStreamDevicesController::GetContentSetting( |
ContentSettingsType content_type, |
const content::MediaStreamRequest& request, |
- bool was_requested, |
- bool was_initially_blocked, |
content::MediaStreamRequestResult* denial_reason) const { |
DCHECK(content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || |
content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); |
DCHECK(!request_.security_origin.is_empty()); |
DCHECK(content::IsOriginSecure(request_.security_origin) || |
request_.request_type == content::MEDIA_OPEN_DEVICE_PEPPER_ONLY); |
- if (!was_requested) { |
+ if (!ContentTypeIsRequested(content_type, request)) { |
// No denial reason set as it will have been previously set. |
return CONTENT_SETTING_DEFAULT; |
} |
- if (was_initially_blocked) { |
- // No denial reason set as it will have been previously set. |
+ std::string device_id; |
+ if (content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) |
+ device_id = request.requested_audio_device_id; |
+ else |
+ device_id = request.requested_video_device_id; |
+ if (!HasAvailableDevices(content_type, device_id)) { |
+ *denial_reason = content::MEDIA_DEVICE_NO_HARDWARE; |
return CONTENT_SETTING_BLOCK; |
} |