Chromium Code Reviews| Index: chrome/browser/media/media_permission.cc |
| diff --git a/chrome/browser/media/media_permission.cc b/chrome/browser/media/media_permission.cc |
| index d09f8c80b52693c1cf9ed00e1a760862df785fa3..60c47e3899c6c4081e549663011a33460ad1a572 100644 |
| --- a/chrome/browser/media/media_permission.cc |
| +++ b/chrome/browser/media/media_permission.cc |
| @@ -8,10 +8,46 @@ |
| #include "chrome/browser/media/media_stream_device_permissions.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/pref_names.h" |
| -#include "components/content_settings/core/browser/host_content_settings_map.h" |
| +#include "content/public/browser/permission_manager.h" |
| +#include "content/public/browser/permission_type.h" |
| #include "content/public/common/url_constants.h" |
| #include "extensions/common/constants.h" |
| +namespace { |
|
raymes
2015/08/31 01:51:45
nit: newline below
guoweis_left_chromium
2015/09/01 07:08:51
Done.
|
| +ContentSetting PermissionStatusToContentSetting( |
| + content::PermissionStatus status) { |
| + switch (status) { |
| + case content::PERMISSION_STATUS_GRANTED: |
| + return CONTENT_SETTING_ALLOW; |
| + case content::PERMISSION_STATUS_DENIED: |
| + return CONTENT_SETTING_BLOCK; |
| + case content::PERMISSION_STATUS_ASK: |
| + return CONTENT_SETTING_ASK; |
| + } |
| + |
| + NOTREACHED(); |
| + return CONTENT_SETTING_BLOCK; |
| +} |
| + |
| +content::PermissionType ContentSettingsTypeToPermission( |
| + ContentSettingsType content_setting) { |
| + switch (content_setting) { |
| + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: |
| + return content::PermissionType::AUDIO_RECORDING; |
| + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: |
| + return content::PermissionType::VIDEO_RECORDING; |
| + default: |
| + // This will hit the NOTREACHED below. |
| + break; |
| + } |
| + |
| + NOTREACHED() << "Unexpected content setting for permission " |
| + << static_cast<int>(content_setting); |
| + return content::PermissionType::NUM; |
| +} |
| + |
| +} // namespace |
| + |
| MediaPermission::MediaPermission(ContentSettingsType content_type, |
| content::MediaStreamRequestType request_type, |
| const GURL& origin, |
| @@ -53,39 +89,18 @@ ContentSetting MediaPermission::GetPermissionStatusWithDeviceRequired( |
| } |
| ContentSetting MediaPermission::GetStoredContentSetting() const { |
|
mlamouri (slow - plz ping)
2015/08/28 10:51:35
Could you change MediaPermission::GetStoredContent
raymes
2015/08/29 00:09:02
This unfortunately comes as a result of doing a pa
raymes
2015/08/31 01:51:45
It's probably possible to do some refactoring in M
mlamouri (slow - plz ping)
2015/08/31 13:09:58
Hmmm, my comment was only applying to GetStoredCon
|
| - // TODO(raymes): Merge this policy check into content settings |
| - // crbug.com/244389. |
| - const char* policy_name = nullptr; |
| - const char* urls_policy_name = nullptr; |
| - if (content_type_ == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) { |
| - policy_name = prefs::kAudioCaptureAllowed; |
| - urls_policy_name = prefs::kAudioCaptureAllowedUrls; |
| - } else if (content_type_ == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { |
| - policy_name = prefs::kVideoCaptureAllowed; |
| - urls_policy_name = prefs::kVideoCaptureAllowedUrls; |
| - } else { |
| - NOTREACHED(); |
| + ContentSetting setting = CONTENT_SETTING_BLOCK; |
| + if (profile_) { |
|
mlamouri (slow - plz ping)
2015/08/28 10:51:35
Why are you checking for |profile_| while the prev
guoweis_left_chromium
2015/09/01 07:08:51
Done.
|
| + content::PermissionManager* permission_manager = |
| + profile_->GetPermissionManager(); |
| + if (permission_manager) { |
|
mlamouri (slow - plz ping)
2015/08/28 10:51:35
Maybe:
if (!permission_manager)
return CONTENT_S
guoweis_left_chromium
2015/09/01 07:08:51
Done.
|
| + setting = PermissionStatusToContentSetting( |
| + permission_manager->GetPermissionStatus( |
| + ContentSettingsTypeToPermission(content_type_), origin_, |
| + origin_)); |
|
mlamouri (slow - plz ping)
2015/08/28 10:51:35
Shouldn't you take into account the embedder?
raymes
2015/08/29 00:09:02
Mounir, you should read my replies :) As I mention
mlamouri (slow - plz ping)
2015/08/31 13:09:58
I remember your comment. Though, I would prefer th
raymes
2015/08/31 23:32:49
Ahh, sorry, that makes sense and I agree with you.
guoweis_left_chromium
2015/09/01 07:08:51
Done.
|
| + } |
| } |
| - MediaStreamDevicePolicy policy = |
| - GetDevicePolicy(profile_, origin_, policy_name, urls_policy_name); |
| - |
| - if (policy == ALWAYS_DENY) |
| - return CONTENT_SETTING_BLOCK; |
| - |
| - if (policy == ALWAYS_ALLOW) |
| - return CONTENT_SETTING_ALLOW; |
| - |
| - DCHECK(policy == POLICY_NOT_SET); |
| - // Check the content setting. |
| - ContentSetting setting = |
| - profile_->GetHostContentSettingsMap()->GetContentSetting( |
| - origin_, origin_, content_type_, |
| - content_settings::ResourceIdentifier()); |
| - |
| - if (setting == CONTENT_SETTING_DEFAULT) |
| - return CONTENT_SETTING_ASK; |
| - |
| // TODO(raymes): This is here for safety to ensure that we always ask the user |
| // even if a content setting is set to "allow" if the origin is insecure. In |
| // reality we shouldn't really need to check this here as we should respect |