Chromium Code Reviews| 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 753134c38ed571198591505c4034d147b564c26c..57544bc514b917695d80e403f61f7d52a31d00ca 100644 |
| --- a/chrome/browser/permissions/permission_context_base.cc |
| +++ b/chrome/browser/permissions/permission_context_base.cc |
| @@ -13,10 +13,10 @@ |
| #include "base/logging.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/strings/stringprintf.h" |
| +#include "base/time/time.h" |
|
dominickn
2017/01/11 07:52:13
This include isn't used
meredithl
2017/01/11 23:22:28
Done.
|
| #include "build/build_config.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| -#include "chrome/browser/permissions/permission_blacklist_client.h" |
| #include "chrome/browser/permissions/permission_decision_auto_blocker.h" |
| #include "chrome/browser/permissions/permission_request.h" |
| #include "chrome/browser/permissions/permission_request_id.h" |
| @@ -31,6 +31,7 @@ |
| #include "components/content_settings/core/browser/host_content_settings_map.h" |
| #include "components/content_settings/core/browser/website_settings_registry.h" |
| #include "components/prefs/pref_service.h" |
| +#include "components/safe_browsing_db/database_manager.h" |
| #include "components/variations/variations_associated_data.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/render_frame_host.h" |
| @@ -81,7 +82,6 @@ void PermissionContextBase::RequestPermission( |
| bool user_gesture, |
| const BrowserPermissionCallback& callback) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
|
dominickn
2017/01/11 07:52:13
Nit: probably can leave this new line.
meredithl
2017/01/11 23:22:28
Done.
|
| - |
| // First check if this permission has been disabled. |
| if (IsPermissionKillSwitchOn()) { |
| // Log to the developer console. |
| @@ -97,7 +97,6 @@ void PermissionContextBase::RequestPermission( |
| GURL requesting_origin = requesting_frame.GetOrigin(); |
| GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); |
|
dominickn
2017/01/11 07:52:13
Nit: probably can leave this new line.
meredithl
2017/01/11 23:22:28
Done.
|
| - |
| if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) { |
| std::string type_name = |
| content_settings::WebsiteSettingsRegistry::GetInstance() |
| @@ -113,28 +112,34 @@ void PermissionContextBase::RequestPermission( |
| return; |
| } |
| - if (base::FeatureList::IsEnabled(features::kPermissionsBlacklist)) { |
| - if (!db_manager_) { |
| - safe_browsing::SafeBrowsingService* sb_service = |
| - g_browser_process->safe_browsing_service(); |
| - if (sb_service) |
| - db_manager_ = sb_service->database_manager(); |
| - } |
| + // Check the content setting first before autoblocking. |
|
dominickn
2017/01/11 07:52:13
Remove "before autoblocking" - it's a bit misleadi
meredithl
2017/01/11 23:22:28
Done.
|
| + ContentSetting content_setting = |
| + GetPermissionStatus(requesting_origin, embedding_origin); |
| + if (content_setting == CONTENT_SETTING_ALLOW) { |
| + HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage( |
| + requesting_origin, embedding_origin, content_settings_type_); |
| + } |
| - // The client contacts Safe Browsing, and runs the callback with the result. |
| - PermissionBlacklistClient::CheckSafeBrowsingBlacklist( |
| - db_manager_, permission_type_, requesting_origin, web_contents, |
| - safe_browsing_timeout_, |
| - base::Bind(&PermissionContextBase::ContinueRequestPermission, |
| - weak_factory_.GetWeakPtr(), web_contents, id, |
| - requesting_origin, embedding_origin, user_gesture, |
| - callback)); |
| - } else { |
| - // TODO(meredithl): Add UMA metrics here. |
| - ContinueRequestPermission(web_contents, id, requesting_origin, |
| - embedding_origin, user_gesture, callback, |
| - false /* permission blocked */); |
| + if (content_setting == CONTENT_SETTING_ALLOW || |
| + content_setting == CONTENT_SETTING_BLOCK) { |
| + NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
| + false /* persist */, content_setting); |
| + return; |
| + } |
| + |
| + if (!db_manager_) { |
| + safe_browsing::SafeBrowsingService* sb_service = |
| + g_browser_process->safe_browsing_service(); |
| + if (sb_service) |
| + db_manager_ = sb_service->database_manager(); |
| } |
| + |
| + PermissionDecisionAutoBlocker::ShouldAutomaticallyBlock( |
|
dominickn
2017/01/11 07:52:13
db_manager_ could still be null here (e.g. if sb_s
meredithl
2017/01/11 23:22:28
For now should I move this inside an if statement
dominickn
2017/01/12 00:22:33
It should be fine given that this will move soon (
|
| + db_manager_, permission_type_, requesting_origin, web_contents, |
| + safe_browsing_timeout_, profile_, base::Time::Now(), |
| + base::Bind(&PermissionContextBase::ContinueRequestPermission, |
| + weak_factory_.GetWeakPtr(), web_contents, id, |
| + requesting_origin, embedding_origin, user_gesture, callback)); |
| } |
| void PermissionContextBase::ContinueRequestPermission( |
| @@ -159,21 +164,8 @@ void PermissionContextBase::ContinueRequestPermission( |
| callback.Run(CONTENT_SETTING_BLOCK); |
| return; |
| } |
| - // Site is not blacklisted by Safe Browsing for the requested permission. |
| - ContentSetting content_setting = |
| - GetPermissionStatus(requesting_origin, embedding_origin); |
| - if (content_setting == CONTENT_SETTING_ALLOW) { |
| - HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage( |
| - requesting_origin, embedding_origin, content_settings_type_); |
| - } |
| - |
| - if (content_setting == CONTENT_SETTING_ALLOW || |
| - content_setting == CONTENT_SETTING_BLOCK) { |
| - NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
| - false /* persist */, content_setting); |
| - return; |
| - } |
| + // Site is not blacklisted by Safe Browsing for the requested permission. |
| PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin, |
| embedding_origin, profile_); |
| @@ -193,7 +185,15 @@ ContentSetting PermissionContextBase::GetPermissionStatus( |
| return CONTENT_SETTING_BLOCK; |
| } |
| - return GetPermissionStatusInternal(requesting_origin, embedding_origin); |
| + ContentSetting content_setting = |
| + GetPermissionStatusInternal(requesting_origin, embedding_origin); |
| + if (content_setting == CONTENT_SETTING_ASK) { |
|
dominickn
2017/01/11 07:52:13
Nit: combine the two if statements using &&
meredithl
2017/01/11 23:22:28
Done.
|
| + if (PermissionDecisionAutoBlocker::IsUnderEmbargo( |
| + permission_type_, profile_, requesting_origin, base::Time::Now())) { |
| + return CONTENT_SETTING_BLOCK; |
| + } |
| + } |
| + return content_setting; |
| } |
| void PermissionContextBase::ResetPermission( |