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

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

Issue 1478433002: Permissions: Move common logic from DecidePermission to RequestPermission (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@innoinherit
Patch Set: Rebase / git cl format Created 5 years 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 fd6d549da8cbd454de0e397a34518a790dc8360a..acbf9085a80e8f54b74cc52b11809112d444192f 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -71,12 +71,49 @@ void PermissionContextBase::RequestPermission(
return;
}
- DecidePermission(web_contents,
- id,
- requesting_frame.GetOrigin(),
- web_contents->GetLastCommittedURL().GetOrigin(),
- user_gesture,
- callback);
+ GURL requesting_origin = requesting_frame.GetOrigin();
+ GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
+
+ if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
+ std::string type_name =
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->Get(permission_type_)
+ ->name();
+
+ DVLOG(1) << "Attempt to use " << type_name
+ << " from an invalid URL: " << requesting_origin << ","
+ << embedding_origin << " (" << type_name
+ << " is not supported in popups)";
+ NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
+ false /* persist */, CONTENT_SETTING_BLOCK);
+ return;
+ }
+
+ if (IsRestrictedToSecureOrigins() &&
+ !content::IsOriginSecure(requesting_origin)) {
+ NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
+ false /* persist */, CONTENT_SETTING_BLOCK);
+ return;
+ }
+
+ ContentSetting content_setting =
+ HostContentSettingsMapFactory::GetForProfile(profile_)
+ ->GetContentSettingAndMaybeUpdateLastUsage(
+ requesting_origin, embedding_origin, permission_type_,
+ std::string());
+
+ if (content_setting == CONTENT_SETTING_ALLOW ||
+ content_setting == CONTENT_SETTING_BLOCK) {
+ NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
+ false /* persist */, content_setting);
+ return;
+ }
+
+ PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin,
+ embedding_origin, profile_);
+
+ DecidePermission(web_contents, id, requesting_origin, embedding_origin,
+ user_gesture, callback);
}
ContentSetting PermissionContextBase::GetPermissionStatus(
@@ -134,44 +171,6 @@ void PermissionContextBase::DecidePermission(
const BrowserPermissionCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
- std::string type_name =
- content_settings::WebsiteSettingsRegistry::GetInstance()
- ->Get(permission_type_)
- ->name();
-
- DVLOG(1) << "Attempt to use " << type_name
- << " from an invalid URL: " << requesting_origin << ","
- << embedding_origin << " (" << type_name
- << " is not supported in popups)";
- NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
- false /* persist */, CONTENT_SETTING_BLOCK);
- return;
- }
-
- if (IsRestrictedToSecureOrigins() &&
- !content::IsOriginSecure(requesting_origin)) {
- NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
- false /* persist */, CONTENT_SETTING_BLOCK);
- return;
- }
-
- ContentSetting content_setting =
- HostContentSettingsMapFactory::GetForProfile(profile_)
- ->GetContentSettingAndMaybeUpdateLastUsage(
- requesting_origin, embedding_origin, permission_type_,
- std::string());
-
- if (content_setting == CONTENT_SETTING_ALLOW ||
- content_setting == CONTENT_SETTING_BLOCK) {
- NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
- false /* persist */, content_setting);
- return;
- }
-
- PermissionUmaUtil::PermissionRequested(
- permission_type_, requesting_origin, embedding_origin, profile_);
-
#if !defined(OS_ANDROID)
PermissionBubbleManager* bubble_manager =
PermissionBubbleManager::FromWebContents(web_contents);

Powered by Google App Engine
This is Rietveld 408576698