| Index: chrome/browser/permissions/permission_manager.cc
|
| diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
| index dc2d554cc7c4e1c4125c4f9be46452fba9f5d7ab..3554494de2ce3bcee2d67350928704962bec582b 100644
|
| --- a/chrome/browser/permissions/permission_manager.cc
|
| +++ b/chrome/browser/permissions/permission_manager.cc
|
| @@ -334,17 +334,19 @@ PermissionResult PermissionManager::GetPermissionStatus(
|
| ContentSettingsType permission,
|
| const GURL& requesting_origin,
|
| const GURL& embedding_origin) {
|
| - if (IsConstantPermission(permission)) {
|
| - return PermissionResult(GetContentSettingForConstantPermission(permission),
|
| - PermissionStatusSource::UNSPECIFIED);
|
| - }
|
| - PermissionContextBase* context = GetPermissionContext(permission);
|
| - PermissionResult result = context->GetPermissionStatus(
|
| - requesting_origin.GetOrigin(), embedding_origin.GetOrigin());
|
| - DCHECK(result.content_setting == CONTENT_SETTING_ALLOW ||
|
| - result.content_setting == CONTENT_SETTING_ASK ||
|
| - result.content_setting == CONTENT_SETTING_BLOCK);
|
| - return result;
|
| + return GetPermissionStatusHelper(permission, nullptr /* render_frame_host */,
|
| + requesting_origin, embedding_origin);
|
| +}
|
| +
|
| +PermissionResult PermissionManager::GetPermissionStatusForFrame(
|
| + ContentSettingsType permission,
|
| + content::RenderFrameHost* render_frame_host) {
|
| + content::WebContents* web_contents =
|
| + content::WebContents::FromRenderFrameHost(render_frame_host);
|
| + GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
|
| + return GetPermissionStatusHelper(
|
| + permission, render_frame_host,
|
| + render_frame_host->GetLastCommittedURL().GetOrigin(), embedding_origin);
|
| }
|
|
|
| int PermissionManager::RequestPermission(
|
| @@ -524,3 +526,22 @@ void PermissionManager::OnContentSettingChanged(
|
| for (const auto& callback : callbacks)
|
| callback.Run();
|
| }
|
| +
|
| +PermissionResult PermissionManager::GetPermissionStatusHelper(
|
| + ContentSettingsType permission,
|
| + content::RenderFrameHost* render_frame_host,
|
| + const GURL& requesting_origin,
|
| + const GURL& embedding_origin) {
|
| + if (IsConstantPermission(permission)) {
|
| + return PermissionResult(GetContentSettingForConstantPermission(permission),
|
| + PermissionStatusSource::UNSPECIFIED);
|
| + }
|
| + PermissionContextBase* context = GetPermissionContext(permission);
|
| + PermissionResult result = context->GetPermissionStatus(
|
| + nullptr /* render_frame_host */, requesting_origin.GetOrigin(),
|
| + embedding_origin.GetOrigin());
|
| + DCHECK(result.content_setting == CONTENT_SETTING_ALLOW ||
|
| + result.content_setting == CONTENT_SETTING_ASK ||
|
| + result.content_setting == CONTENT_SETTING_BLOCK);
|
| + return result;
|
| +}
|
|
|