 Chromium Code Reviews
 Chromium Code Reviews Issue 2908133003:
  Split GetPermissionStatus into GetPermissionStatusForFrame/Worker
    
  
    Issue 2908133003:
  Split GetPermissionStatus into GetPermissionStatusForFrame/Worker 
  | OLD | NEW | 
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/permissions/permission_manager.h" | 5 #include "chrome/browser/permissions/permission_manager.h" | 
| 6 | 6 | 
| 7 #include <memory> | 7 #include <memory> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "base/callback.h" | 10 #include "base/callback.h" | 
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 const GURL& requesting_origin, | 312 const GURL& requesting_origin, | 
| 313 const GURL& embedding_origin) { | 313 const GURL& embedding_origin) { | 
| 314 return GetPermissionStatusHelper(permission, nullptr /* render_frame_host */, | 314 return GetPermissionStatusHelper(permission, nullptr /* render_frame_host */, | 
| 315 requesting_origin, embedding_origin); | 315 requesting_origin, embedding_origin); | 
| 316 } | 316 } | 
| 317 | 317 | 
| 318 PermissionResult PermissionManager::GetPermissionStatusForFrame( | 318 PermissionResult PermissionManager::GetPermissionStatusForFrame( | 
| 319 ContentSettingsType permission, | 319 ContentSettingsType permission, | 
| 320 content::RenderFrameHost* render_frame_host, | 320 content::RenderFrameHost* render_frame_host, | 
| 321 const GURL& requesting_origin) { | 321 const GURL& requesting_origin) { | 
| 322 DCHECK(render_frame_host); | |
| 322 content::WebContents* web_contents = | 323 content::WebContents* web_contents = | 
| 323 content::WebContents::FromRenderFrameHost(render_frame_host); | 324 content::WebContents::FromRenderFrameHost(render_frame_host); | 
| 324 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); | 325 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); | 
| 325 return GetPermissionStatusHelper(permission, render_frame_host, | 326 return GetPermissionStatusHelper(permission, render_frame_host, | 
| 326 requesting_origin, embedding_origin); | 327 requesting_origin, embedding_origin); | 
| 327 } | 328 } | 
| 328 | 329 | 
| 329 int PermissionManager::RequestPermission( | 330 int PermissionManager::RequestPermission( | 
| 330 PermissionType permission, | 331 PermissionType permission, | 
| 331 content::RenderFrameHost* render_frame_host, | 332 content::RenderFrameHost* render_frame_host, | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 408 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 409 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 409 PermissionContextBase* context = | 410 PermissionContextBase* context = | 
| 410 GetPermissionContext(PermissionTypeToContentSetting(permission)); | 411 GetPermissionContext(PermissionTypeToContentSetting(permission)); | 
| 411 if (!context) | 412 if (!context) | 
| 412 return; | 413 return; | 
| 413 | 414 | 
| 414 context->ResetPermission(requesting_origin.GetOrigin(), | 415 context->ResetPermission(requesting_origin.GetOrigin(), | 
| 415 embedding_origin.GetOrigin()); | 416 embedding_origin.GetOrigin()); | 
| 416 } | 417 } | 
| 417 | 418 | 
| 418 PermissionStatus PermissionManager::GetPermissionStatus( | 419 PermissionStatus PermissionManager::GetPermissionStatusForFrame( | 
| 419 PermissionType permission, | 420 PermissionType permission, | 
| 420 const GURL& requesting_origin, | 421 content::RenderFrameHost* render_frame_host, | 
| 421 const GURL& embedding_origin) { | 422 const GURL& requesting_origin) { | 
| 422 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 423 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 423 PermissionResult result = | 424 PermissionResult result = | 
| 424 GetPermissionStatus(PermissionTypeToContentSetting(permission), | 425 GetPermissionStatusForFrame(PermissionTypeToContentSetting(permission), | 
| 425 requesting_origin, embedding_origin); | 426 render_frame_host, requesting_origin); | 
| 426 | 427 | 
| 427 // TODO(benwells): split this into two functions, GetPermissionStatus and | 428 // TODO(benwells): split this into two functions, GetPermissionStatus and | 
| 428 // GetPermissionStatusForPermissionsAPI. | 429 // GetPermissionStatusForPermissionsAPI. | 
| 429 PermissionContextBase* context = | 430 PermissionContextBase* context = | 
| 430 GetPermissionContext(PermissionTypeToContentSetting(permission)); | 431 GetPermissionContext(PermissionTypeToContentSetting(permission)); | 
| 431 if (context) { | 432 result = context->UpdatePermissionStatusWithDeviceStatus( | 
| 432 result = context->UpdatePermissionStatusWithDeviceStatus( | 433 result, requesting_origin, | 
| 433 result, requesting_origin, embedding_origin); | 434 content::WebContents::FromRenderFrameHost(render_frame_host) | 
| 434 } | 435 ->GetLastCommittedURL() | 
| 436 .GetOrigin()); | |
| 435 | 437 | 
| 436 return ContentSettingToPermissionStatus(result.content_setting); | 438 return ContentSettingToPermissionStatus(result.content_setting); | 
| 437 } | 439 } | 
| 440 | |
| 441 PermissionStatus PermissionManager::GetPermissionStatusForWorker( | |
| 442 PermissionType permission, | |
| 443 const GURL& requesting_origin) { | |
| 444 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | |
| 445 PermissionContextBase* context = | |
| 446 GetPermissionContext(PermissionTypeToContentSetting(permission)); | |
| 447 | |
| 448 PermissionResult result = | |
| 449 GetPermissionStatus(PermissionTypeToContentSetting(permission), | |
| 450 requesting_origin, requesting_origin); | |
| 451 | |
| 452 result = context->UpdatePermissionStatusWithDeviceStatus( | |
| 453 result, requesting_origin, requesting_origin); | |
| 454 | |
| 455 // 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
 | |
| 456 if (result.content_setting == CONTENT_SETTING_ASK) | |
| 457 return blink::mojom::PermissionStatus::DENIED; | |
| 458 | |
| 459 return ContentSettingToPermissionStatus(result.content_setting); | |
| 460 } | |
| 438 | 461 | 
| 439 int PermissionManager::SubscribePermissionStatusChange( | 462 int PermissionManager::SubscribePermissionStatusChange( | 
| 440 PermissionType permission, | 463 PermissionType permission, | 
| 441 const GURL& requesting_origin, | 464 const GURL& requesting_origin, | 
| 442 const GURL& embedding_origin, | 465 const GURL& embedding_origin, | 
| 443 const base::Callback<void(PermissionStatus)>& callback) { | 466 const base::Callback<void(PermissionStatus)>& callback) { | 
| 444 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 467 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 445 if (subscriptions_.IsEmpty()) | 468 if (subscriptions_.IsEmpty()) | 
| 446 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); | 469 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); | 
| 447 | 470 | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 522 const GURL& embedding_origin) { | 545 const GURL& embedding_origin) { | 
| 523 PermissionContextBase* context = GetPermissionContext(permission); | 546 PermissionContextBase* context = GetPermissionContext(permission); | 
| 524 PermissionResult result = context->GetPermissionStatus( | 547 PermissionResult result = context->GetPermissionStatus( | 
| 525 render_frame_host, requesting_origin.GetOrigin(), | 548 render_frame_host, requesting_origin.GetOrigin(), | 
| 526 embedding_origin.GetOrigin()); | 549 embedding_origin.GetOrigin()); | 
| 527 DCHECK(result.content_setting == CONTENT_SETTING_ALLOW || | 550 DCHECK(result.content_setting == CONTENT_SETTING_ALLOW || | 
| 528 result.content_setting == CONTENT_SETTING_ASK || | 551 result.content_setting == CONTENT_SETTING_ASK || | 
| 529 result.content_setting == CONTENT_SETTING_BLOCK); | 552 result.content_setting == CONTENT_SETTING_BLOCK); | 
| 530 return result; | 553 return result; | 
| 531 } | 554 } | 
| OLD | NEW |