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

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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698