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 if (!context->IsAllowedInWorkers()) | |
448 return blink::mojom::PermissionStatus::DENIED; | |
449 | |
450 PermissionResult result = | |
451 GetPermissionStatus(PermissionTypeToContentSetting(permission), | |
452 requesting_origin, requesting_origin); | |
453 | |
454 result = context->UpdatePermissionStatusWithDeviceStatus( | |
455 result, requesting_origin, requesting_origin); | |
456 | |
457 // Workers can never prompt the user, so we return blocked in that case. | |
benwells
2017/05/30 06:49:12
Did this mapping of ASK -> DENIED happen for worke
benwells
2017/05/31 01:48:10
^^^ still valid.
| |
458 if (result.content_setting == CONTENT_SETTING_ASK) | |
459 return blink::mojom::PermissionStatus::DENIED; | |
460 | |
461 return ContentSettingToPermissionStatus(result.content_setting); | |
462 } | |
438 | 463 |
439 int PermissionManager::SubscribePermissionStatusChange( | 464 int PermissionManager::SubscribePermissionStatusChange( |
440 PermissionType permission, | 465 PermissionType permission, |
441 const GURL& requesting_origin, | 466 const GURL& requesting_origin, |
442 const GURL& embedding_origin, | 467 const GURL& embedding_origin, |
443 const base::Callback<void(PermissionStatus)>& callback) { | 468 const base::Callback<void(PermissionStatus)>& callback) { |
444 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 469 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
445 if (subscriptions_.IsEmpty()) | 470 if (subscriptions_.IsEmpty()) |
446 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); | 471 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); |
447 | 472 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
522 const GURL& embedding_origin) { | 547 const GURL& embedding_origin) { |
523 PermissionContextBase* context = GetPermissionContext(permission); | 548 PermissionContextBase* context = GetPermissionContext(permission); |
524 PermissionResult result = context->GetPermissionStatus( | 549 PermissionResult result = context->GetPermissionStatus( |
525 render_frame_host, requesting_origin.GetOrigin(), | 550 render_frame_host, requesting_origin.GetOrigin(), |
526 embedding_origin.GetOrigin()); | 551 embedding_origin.GetOrigin()); |
527 DCHECK(result.content_setting == CONTENT_SETTING_ALLOW || | 552 DCHECK(result.content_setting == CONTENT_SETTING_ALLOW || |
528 result.content_setting == CONTENT_SETTING_ASK || | 553 result.content_setting == CONTENT_SETTING_ASK || |
529 result.content_setting == CONTENT_SETTING_BLOCK); | 554 result.content_setting == CONTENT_SETTING_BLOCK); |
530 return result; | 555 return result; |
531 } | 556 } |
OLD | NEW |