| Index: chrome/browser/permissions/permission_manager.cc
|
| diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
| index bed2a61d7364ea0cbc3ff26275c73e31d4b4447d..13519115e443a0f2552884dc0a35e2034f298cc7 100644
|
| --- a/chrome/browser/permissions/permission_manager.cc
|
| +++ b/chrome/browser/permissions/permission_manager.cc
|
| @@ -319,6 +319,7 @@ PermissionResult PermissionManager::GetPermissionStatusForFrame(
|
| ContentSettingsType permission,
|
| content::RenderFrameHost* render_frame_host,
|
| const GURL& requesting_origin) {
|
| + DCHECK(render_frame_host);
|
| content::WebContents* web_contents =
|
| content::WebContents::FromRenderFrameHost(render_frame_host);
|
| GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
|
| @@ -415,23 +416,45 @@ void PermissionManager::ResetPermission(PermissionType permission,
|
| embedding_origin.GetOrigin());
|
| }
|
|
|
| -PermissionStatus PermissionManager::GetPermissionStatus(
|
| +PermissionStatus PermissionManager::GetPermissionStatusForFrame(
|
| PermissionType permission,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) {
|
| + content::RenderFrameHost* render_frame_host,
|
| + const GURL& requesting_origin) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| PermissionResult result =
|
| - GetPermissionStatus(PermissionTypeToContentSetting(permission),
|
| - requesting_origin, embedding_origin);
|
| + GetPermissionStatusForFrame(PermissionTypeToContentSetting(permission),
|
| + render_frame_host, requesting_origin);
|
|
|
| // TODO(benwells): split this into two functions, GetPermissionStatus and
|
| // GetPermissionStatusForPermissionsAPI.
|
| PermissionContextBase* context =
|
| GetPermissionContext(PermissionTypeToContentSetting(permission));
|
| - if (context) {
|
| - result = context->UpdatePermissionStatusWithDeviceStatus(
|
| - result, requesting_origin, embedding_origin);
|
| - }
|
| + result = context->UpdatePermissionStatusWithDeviceStatus(
|
| + result, requesting_origin,
|
| + content::WebContents::FromRenderFrameHost(render_frame_host)
|
| + ->GetLastCommittedURL()
|
| + .GetOrigin());
|
| +
|
| + return ContentSettingToPermissionStatus(result.content_setting);
|
| +}
|
| +
|
| +PermissionStatus PermissionManager::GetPermissionStatusForWorker(
|
| + PermissionType permission,
|
| + const GURL& requesting_origin) {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| + PermissionContextBase* context =
|
| + GetPermissionContext(PermissionTypeToContentSetting(permission));
|
| +
|
| + PermissionResult result =
|
| + GetPermissionStatus(PermissionTypeToContentSetting(permission),
|
| + requesting_origin, requesting_origin);
|
| +
|
| + result = context->UpdatePermissionStatusWithDeviceStatus(
|
| + result, requesting_origin, requesting_origin);
|
| +
|
| + // Workers can never prompt the user, so we return blocked in that case.
|
| + if (result.content_setting == CONTENT_SETTING_ASK)
|
| + return blink::mojom::PermissionStatus::DENIED;
|
|
|
| return ContentSettingToPermissionStatus(result.content_setting);
|
| }
|
|
|