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

Side by Side 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 unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698