| Index: chrome/browser/permissions/permission_manager.cc
|
| diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
| index 0b7473b46ee6e71e1db2c03619832ff42160e798..691f176d6fa7a5215c2b9c245b6fb15b047dadda 100644
|
| --- a/chrome/browser/permissions/permission_manager.cc
|
| +++ b/chrome/browser/permissions/permission_manager.cc
|
| @@ -19,6 +19,7 @@
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "url/origin.h"
|
|
|
| #if !defined(OS_ANDROID)
|
| #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
|
| @@ -189,8 +190,8 @@ class PermissionManager::PendingRequest {
|
|
|
| struct PermissionManager::Subscription {
|
| PermissionType permission;
|
| - GURL requesting_origin;
|
| - GURL embedding_origin;
|
| + url::Origin requesting_origin;
|
| + url::Origin embedding_origin;
|
| base::Callback<void(PermissionStatus)> callback;
|
| ContentSetting current_value;
|
| };
|
| @@ -209,7 +210,7 @@ PermissionManager::~PermissionManager() {
|
| int PermissionManager::RequestPermission(
|
| PermissionType permission,
|
| content::RenderFrameHost* render_frame_host,
|
| - const GURL& requesting_origin,
|
| + const url::Origin& requesting_origin,
|
| const base::Callback<void(PermissionStatus)>& callback) {
|
| return RequestPermissions(
|
| std::vector<PermissionType>(1, permission),
|
| @@ -221,9 +222,9 @@ int PermissionManager::RequestPermission(
|
| int PermissionManager::RequestPermissions(
|
| const std::vector<PermissionType>& permissions,
|
| content::RenderFrameHost* render_frame_host,
|
| - const GURL& requesting_origin,
|
| - const base::Callback<void(
|
| - const std::vector<PermissionStatus>&)>& callback) {
|
| + const url::Origin& requesting_origin,
|
| + const base::Callback<void(const std::vector<PermissionStatus>&)>&
|
| + callback) {
|
| if (permissions.empty()) {
|
| callback.Run(std::vector<PermissionStatus>());
|
| return kNoPendingOperation;
|
| @@ -231,7 +232,7 @@ int PermissionManager::RequestPermissions(
|
|
|
| content::WebContents* web_contents =
|
| content::WebContents::FromRenderFrameHost(render_frame_host);
|
| - GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
|
| + const url::Origin embedding_origin(web_contents->GetLastCommittedURL());
|
|
|
| PendingRequest* pending_request = new PendingRequest(
|
| render_frame_host, permissions, callback);
|
| @@ -307,20 +308,19 @@ void PermissionManager::CancelPermissionRequest(int request_id) {
|
| }
|
|
|
| void PermissionManager::ResetPermission(PermissionType permission,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) {
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin) {
|
| PermissionContextBase* context = PermissionContext::Get(profile_, permission);
|
| if (!context)
|
| return;
|
|
|
| - context->ResetPermission(requesting_origin.GetOrigin(),
|
| - embedding_origin.GetOrigin());
|
| + context->ResetPermission(requesting_origin, embedding_origin);
|
| }
|
|
|
| PermissionStatus PermissionManager::GetPermissionStatus(
|
| PermissionType permission,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) {
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin) {
|
| if (IsConstantPermission(permission))
|
| return GetPermissionStatusForConstantPermission(permission);
|
|
|
| @@ -328,28 +328,28 @@ PermissionStatus PermissionManager::GetPermissionStatus(
|
| if (!context)
|
| return content::mojom::PermissionStatus::DENIED;
|
|
|
| - return ContentSettingToPermissionStatus(context->GetPermissionStatus(
|
| - requesting_origin.GetOrigin(), embedding_origin.GetOrigin()));
|
| + return ContentSettingToPermissionStatus(
|
| + context->GetPermissionStatus(requesting_origin, embedding_origin));
|
| }
|
|
|
| -void PermissionManager::RegisterPermissionUsage(PermissionType permission,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) {
|
| +void PermissionManager::RegisterPermissionUsage(
|
| + PermissionType permission,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin) {
|
| // This is required because constant permissions don't have a
|
| // ContentSettingsType.
|
| if (IsConstantPermission(permission))
|
| return;
|
|
|
| HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage(
|
| - requesting_origin,
|
| - embedding_origin,
|
| + GURL(requesting_origin.Serialize()), GURL(embedding_origin.Serialize()),
|
| PermissionTypeToContentSetting(permission));
|
| }
|
|
|
| int PermissionManager::SubscribePermissionStatusChange(
|
| PermissionType permission,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin,
|
| const base::Callback<void(PermissionStatus)>& callback) {
|
| if (subscriptions_.IsEmpty())
|
| HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this);
|
| @@ -404,11 +404,15 @@ void PermissionManager::OnContentSettingChanged(
|
| }
|
|
|
| if (primary_pattern.IsValid() &&
|
| - !primary_pattern.Matches(subscription->requesting_origin))
|
| + !primary_pattern.Matches(
|
| + GURL(subscription->requesting_origin.Serialize()))) {
|
| continue;
|
| + }
|
| if (secondary_pattern.IsValid() &&
|
| - !secondary_pattern.Matches(subscription->embedding_origin))
|
| + !secondary_pattern.Matches(
|
| + GURL(subscription->embedding_origin.Serialize()))) {
|
| continue;
|
| + }
|
|
|
| ContentSetting new_value =
|
| PermissionContext::Get(profile_, subscription->permission)
|
|
|