Chromium Code Reviews| Index: chrome/browser/chrome_content_browser_client.cc |
| diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
| index a872ec6c9b027869d158c6dc1934f05be88253a9..00267bdcd22ad09bf5a0b2a11df99ed5f6bcfce8 100644 |
| --- a/chrome/browser/chrome_content_browser_client.cc |
| +++ b/chrome/browser/chrome_content_browser_client.cc |
| @@ -594,6 +594,20 @@ void GetGuestViewDefaultContentSettingRules( |
| } |
| #endif // defined(ENALBE_EXTENSIONS) |
| +content::PermissionStatus |
| +ContentSettingToPermissionStatus(ContentSetting setting) { |
| + switch (setting) { |
| + case CONTENT_SETTING_ALLOW: |
| + return content::PERMISSION_STATUS_GRANTED; |
|
mlamouri (slow - plz ping)
2014/11/24 19:06:01
nit: CONTENT_SETTING_SESSION_ONLY should also link
timvolodine
2014/11/27 17:53:42
Done.
|
| + case CONTENT_SETTING_BLOCK: |
| + return content::PERMISSION_STATUS_DENIED; |
| + case CONTENT_SETTING_ASK: |
| + return content::PERMISSION_STATUS_ASK; |
| + default: |
| + return content::PERMISSION_STATUS_ASK; |
|
mlamouri (slow - plz ping)
2014/11/24 19:06:01
I think it would be better to not have a |default|
timvolodine
2014/11/27 17:53:42
Done.
|
| + } |
| +} |
| + |
| } // namespace |
| namespace chrome { |
| @@ -1971,6 +1985,50 @@ void ChromeContentBrowserClient::RequestPermission( |
| } |
| } |
| +void ChromeContentBrowserClient::HasPermission( |
| + content::PermissionType permission, |
| + content::BrowserContext* browser_context, |
| + const GURL& requesting_origin, |
| + const GURL& embedding_origin, |
| + const content::PermissionStatusCallback& result_callback) { |
| + DCHECK(browser_context); |
| + Profile* profile = Profile::FromBrowserContext(browser_context); |
| + |
| + PermissionContextBase* context = nullptr; |
| + switch (permission) { |
| + case content::PERMISSION_MIDI_SYSEX: |
| + context = MidiPermissionContextFactory::GetForProfile(profile); |
| + break; |
| + case content::PERMISSION_NOTIFICATIONS: |
| +#if defined(ENABLE_NOTIFICATIONS) |
| + context = DesktopNotificationServiceFactory::GetForProfile(profile); |
| +#else |
| + NOTIMPLEMENTED(); |
| +#endif |
| + break; |
| + case content::PERMISSION_GEOLOCATION: |
| + context = GeolocationPermissionContextFactory::GetForProfile(profile); |
| + break; |
| + case content::PERMISSION_PROTECTED_MEDIA: |
| + NOTIMPLEMENTED(); |
| + break; |
| + case content::PERMISSION_PUSH_MESSAGING: |
| + context = gcm::PushMessagingPermissionContextFactory::GetForProfile( |
| + profile); |
| + break; |
| + case content::PERMISSION_NUM: |
| + NOTREACHED() << "Invalid RequestPermission for " << permission; |
| + break; |
| + } |
| + |
| + ContentSetting result = context |
| + ? context->GetPermissionStatus(requesting_origin.GetOrigin(), |
| + embedding_origin.GetOrigin()) |
| + : CONTENT_SETTING_DEFAULT; |
| + |
| + result_callback.Run(ContentSettingToPermissionStatus(result)); |
|
mlamouri (slow - plz ping)
2014/11/24 19:06:01
Why do you use a callback instead of returning dir
timvolodine
2014/11/27 17:53:42
Done.
|
| +} |
| + |
| void ChromeContentBrowserClient::CancelPermissionRequest( |
| content::PermissionType permission, |
| content::WebContents* web_contents, |