| 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,
|
|
|