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

Unified Diff: chrome/browser/permissions/permission_context_base.cc

Issue 1726323002: Have Permission{Manager,Service} use Origin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarify and test Origin.empty_. Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_context_base.cc
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
index 390265a58b2dfcd17474c6713e46e675a0a42882..59af7712f68062207eddf878891600c222f02fd0 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -60,7 +60,7 @@ PermissionContextBase::~PermissionContextBase() {
void PermissionContextBase::RequestPermission(
content::WebContents* web_contents,
const PermissionRequestID& id,
- const GURL& requesting_frame,
+ const url::Origin& requesting_frame,
mlamouri (slow - plz ping) 2016/03/05 22:20:18 ditto
palmer 2016/03/08 01:20:00 Done.
const BrowserPermissionCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -77,68 +77,72 @@ void PermissionContextBase::RequestPermission(
return;
}
- GURL requesting_origin = requesting_frame.GetOrigin();
- GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
+ const GURL& embedding_url = web_contents->GetLastCommittedURL();
+ const url::Origin embedding_origin(embedding_url);
+ const GURL requesting_url(requesting_frame.Serialize());
- if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
+ if (!requesting_frame.empty() || !embedding_origin.empty()) {
std::string type_name =
content_settings::WebsiteSettingsRegistry::GetInstance()
->Get(content_settings_type_)
->name();
DVLOG(1) << "Attempt to use " << type_name
- << " from an invalid URL: " << requesting_origin << ","
+ << " from an invalid origin: " << requesting_frame << ","
<< embedding_origin << " (" << type_name
<< " is not supported in popups)";
- NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
+ NotifyPermissionSet(id, requesting_frame, embedding_origin, callback,
false /* persist */, CONTENT_SETTING_BLOCK);
return;
}
ContentSetting content_setting =
- GetPermissionStatus(requesting_origin, embedding_origin);
+ GetPermissionStatus(requesting_frame, embedding_origin);
if (content_setting == CONTENT_SETTING_ALLOW) {
HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage(
- requesting_origin, embedding_origin, content_settings_type_);
+ requesting_url, embedding_url, content_settings_type_);
}
if (content_setting == CONTENT_SETTING_ALLOW ||
content_setting == CONTENT_SETTING_BLOCK) {
- NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
+ NotifyPermissionSet(id, requesting_frame, embedding_origin, callback,
false /* persist */, content_setting);
return;
}
- PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin,
- embedding_origin, profile_);
+ PermissionUmaUtil::PermissionRequested(permission_type_, requesting_url,
+ embedding_url, profile_);
- DecidePermission(web_contents, id, requesting_origin, embedding_origin,
+ DecidePermission(web_contents, id, requesting_frame, embedding_origin,
callback);
}
ContentSetting PermissionContextBase::GetPermissionStatus(
- const GURL& requesting_origin,
- const GURL& embedding_origin) const {
-
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin) const {
// If the permission has been disabled through Finch, block all requests.
if (IsPermissionKillSwitchOn())
return CONTENT_SETTING_BLOCK;
+ const GURL requesting_url(requesting_origin.Serialize());
+
if (IsRestrictedToSecureOrigins() &&
- !content::IsOriginSecure(requesting_origin)) {
+ !content::IsOriginSecure(requesting_url)) {
return CONTENT_SETTING_BLOCK;
}
return HostContentSettingsMapFactory::GetForProfile(profile_)
- ->GetContentSetting(requesting_origin, embedding_origin,
+ ->GetContentSetting(requesting_url, GURL(embedding_origin.Serialize()),
content_settings_type_, std::string());
}
void PermissionContextBase::ResetPermission(
- const GURL& requesting_origin,
- const GURL& embedding_origin) {
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin) {
HostContentSettingsMapFactory::GetForProfile(profile_)->SetContentSetting(
- ContentSettingsPattern::FromURLNoWildcard(requesting_origin),
- ContentSettingsPattern::FromURLNoWildcard(embedding_origin),
+ ContentSettingsPattern::FromURLNoWildcard(
+ GURL(requesting_origin.Serialize())),
+ ContentSettingsPattern::FromURLNoWildcard(
+ GURL(embedding_origin.Serialize())),
content_settings_type_, std::string(), CONTENT_SETTING_DEFAULT);
}
@@ -162,8 +166,8 @@ void PermissionContextBase::CancelPermissionRequest(
void PermissionContextBase::DecidePermission(
content::WebContents* web_contents,
const PermissionRequestID& id,
- const GURL& requesting_origin,
- const GURL& embedding_origin,
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin,
const BrowserPermissionCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -174,9 +178,12 @@ void PermissionContextBase::DecidePermission(
// prevent crashes. See crbug.com/457091.
if (!bubble_manager)
return;
+
+ const GURL requesting_url(requesting_origin.Serialize());
+ const GURL embedding_url(embedding_origin.Serialize());
scoped_ptr<PermissionBubbleRequest> request_ptr(
new PermissionBubbleRequestImpl(
- requesting_origin, permission_type_,
+ requesting_url, permission_type_,
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
base::Bind(&PermissionContextBase::PermissionDecided,
weak_factory_.GetWeakPtr(), id, requesting_origin,
@@ -191,7 +198,7 @@ void PermissionContextBase::DecidePermission(
bubble_manager->AddRequest(request);
#else
GetQueueController()->CreateInfoBarRequest(
- id, requesting_origin, embedding_origin,
+ id, requesting_url, embedding_url,
base::Bind(&PermissionContextBase::PermissionDecided,
weak_factory_.GetWeakPtr(), id, requesting_origin,
embedding_origin, callback,
@@ -203,24 +210,25 @@ void PermissionContextBase::DecidePermission(
void PermissionContextBase::PermissionDecided(
const PermissionRequestID& id,
- const GURL& requesting_origin,
- const GURL& embedding_origin,
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin,
const BrowserPermissionCallback& callback,
bool persist,
ContentSetting content_setting) {
#if !defined(OS_ANDROID)
// Infobar persistence and its related UMA is tracked on the infobar
// controller directly.
+ const GURL requesting_url(requesting_origin.Serialize());
if (persist) {
DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
content_setting == CONTENT_SETTING_BLOCK);
if (content_setting == CONTENT_SETTING_ALLOW)
- PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin);
+ PermissionUmaUtil::PermissionGranted(permission_type_, requesting_url);
else
- PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin);
+ PermissionUmaUtil::PermissionDenied(permission_type_, requesting_url);
} else {
DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
- PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin);
+ PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_url);
mlamouri (slow - plz ping) 2016/03/05 22:20:18 Should you open a bug for PermissionUmaUtil to use
palmer 2016/03/08 01:20:00 https://bugs.chromium.org/p/chromium/issues/detail
}
#endif
@@ -240,8 +248,8 @@ Profile* PermissionContextBase::profile() const {
void PermissionContextBase::NotifyPermissionSet(
const PermissionRequestID& id,
- const GURL& requesting_origin,
- const GURL& embedding_origin,
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin,
const BrowserPermissionCallback& callback,
bool persist,
ContentSetting content_setting) {
@@ -269,17 +277,19 @@ void PermissionContextBase::CleanUpBubble(const PermissionRequestID& id) {
}
void PermissionContextBase::UpdateContentSetting(
- const GURL& requesting_origin,
- const GURL& embedding_origin,
+ const url::Origin& requesting_origin,
+ const url::Origin& embedding_origin,
ContentSetting content_setting) {
- DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin());
- DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin());
+ const GURL requesting_url(requesting_origin.Serialize());
+ const GURL embedding_url(embedding_origin.Serialize());
+ DCHECK_EQ(requesting_origin, url::Origin(requesting_url));
+ DCHECK_EQ(embedding_origin, url::Origin(embedding_url));
DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
content_setting == CONTENT_SETTING_BLOCK);
HostContentSettingsMapFactory::GetForProfile(profile_)->SetContentSetting(
- ContentSettingsPattern::FromURLNoWildcard(requesting_origin),
- ContentSettingsPattern::FromURLNoWildcard(embedding_origin),
+ ContentSettingsPattern::FromURLNoWildcard(requesting_url),
+ ContentSettingsPattern::FromURLNoWildcard(embedding_url),
content_settings_type_, std::string(), content_setting);
}

Powered by Google App Engine
This is Rietveld 408576698