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 461c50db639f4291e7d28446d7d26912f0e22c2c..ae87f938472352f4498e86aaa6e708589b5c9c94 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -599,6 +599,24 @@ void GetGuestViewDefaultContentSettingRules( |
} |
#endif // defined(ENALBE_EXTENSIONS) |
+content::PermissionStatus |
+ContentSettingToPermissionStatus(ContentSetting setting) { |
+ switch (setting) { |
+ case CONTENT_SETTING_ALLOW: |
+ case CONTENT_SETTING_SESSION_ONLY: |
+ return content::PERMISSION_STATUS_GRANTED; |
+ case CONTENT_SETTING_BLOCK: |
+ return content::PERMISSION_STATUS_DENIED; |
+ case CONTENT_SETTING_ASK: |
+ return content::PERMISSION_STATUS_ASK; |
+ case CONTENT_SETTING_DEFAULT: |
+ case CONTENT_SETTING_NUM_SETTINGS: |
+ break; |
+ } |
+ NOTREACHED(); |
+ return content::PERMISSION_STATUS_DENIED; |
+} |
+ |
} // namespace |
namespace chrome { |
@@ -1917,6 +1935,49 @@ void ChromeContentBrowserClient::RequestPermission( |
} |
} |
+content::PermissionStatus ChromeContentBrowserClient::GetPermissionStatus( |
+ content::PermissionType permission, |
+ content::BrowserContext* browser_context, |
+ const GURL& requesting_origin, |
+ const GURL& embedding_origin) { |
+ 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; |
+ |
+ return ContentSettingToPermissionStatus(result); |
+} |
+ |
void ChromeContentBrowserClient::CancelPermissionRequest( |
content::PermissionType permission, |
content::WebContents* web_contents, |