Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3935)

Unified Diff: chrome/browser/permissions/permission_manager.cc

Issue 2908133003: Split GetPermissionStatus into GetPermissionStatusForFrame/Worker
Patch Set: Split GetPermissionStatus into GetPermissionStatusForFrame/Worker Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
johnme 2017/06/12 10:18:20 The web Permissions API returns "prompt" even when
+ if (result.content_setting == CONTENT_SETTING_ASK)
+ return blink::mojom::PermissionStatus::DENIED;
return ContentSettingToPermissionStatus(result.content_setting);
}

Powered by Google App Engine
This is Rietveld 408576698