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

Unified Diff: chrome/browser/subresource_filter/chrome_subresource_filter_client.cc

Issue 2795053002: [subresource_filter] Implement the "Smart" UI on Android (Closed)
Patch Set: minor tweaks Created 3 years, 7 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/subresource_filter/chrome_subresource_filter_client.cc
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
index fc42142074938b6dfd4c45eb8f84f074c71e3ae0..c8e2adb204f8bafac37ba8bc951a8c86c141640e 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -10,11 +10,12 @@
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
+#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h"
+#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h"
#include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h"
#include "chrome/browser/ui/android/content_settings/subresource_filter_infobar_delegate.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -25,7 +26,9 @@
#include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h"
#include "components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.h"
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
+#include "components/subresource_filter/core/common/activation_level.h"
#include "components/subresource_filter/core/common/activation_scope.h"
+#include "components/subresource_filter/core/common/activation_state.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_handle.h"
@@ -35,9 +38,10 @@ ChromeSubresourceFilterClient::ChromeSubresourceFilterClient(
content::WebContents* web_contents)
: web_contents_(web_contents), did_show_ui_for_navigation_(false) {
DCHECK(web_contents);
- SubresourceFilterProfileContextFactory::EnsureForProfile(
- Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
-
+ SubresourceFilterProfileContext* context =
+ SubresourceFilterProfileContextFactory::GetForProfile(
+ Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
+ settings_manager_ = context->settings_manager();
subresource_filter::ContentSubresourceFilterDriverFactory::
CreateForWebContents(web_contents, this);
}
@@ -85,21 +89,28 @@ void ChromeSubresourceFilterClient::ToggleNotificationVisibility(
bool visibility) {
if (did_show_ui_for_navigation_ && visibility)
return;
-
- did_show_ui_for_navigation_ = visibility;
- TabSpecificContentSettings* content_settings =
- TabSpecificContentSettings::FromWebContents(web_contents_);
+ did_show_ui_for_navigation_ = false;
// |visibility| is false when a new navigation starts.
if (visibility) {
- content_settings->OnContentBlocked(
- CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER);
- LogAction(kActionUIShown);
+ const GURL& top_level_url = web_contents_->GetLastCommittedURL();
+ if (!settings_manager_->ShouldShowUIForSite(top_level_url)) {
+ LogAction(kActionUISuppressed);
+ return;
+ }
#if defined(OS_ANDROID)
InfoBarService* infobar_service =
InfoBarService::FromWebContents(web_contents_);
SubresourceFilterInfobarDelegate::Create(infobar_service);
#endif
+ TabSpecificContentSettings* content_settings =
+ TabSpecificContentSettings::FromWebContents(web_contents_);
+ content_settings->OnContentBlocked(
+ CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER);
+
+ LogAction(kActionUIShown);
+ did_show_ui_for_navigation_ = true;
+ settings_manager_->OnDidShowUI(top_level_url);
} else {
LogAction(kActionNavigationStarted);
}
@@ -110,22 +121,12 @@ bool ChromeSubresourceFilterClient::ShouldSuppressActivation(
const GURL& url(navigation_handle->GetURL());
return navigation_handle->IsInMainFrame() &&
(whitelisted_hosts_.find(url.host()) != whitelisted_hosts_.end() ||
- GetContentSettingForUrl(url) == CONTENT_SETTING_BLOCK);
+ settings_manager_->GetSitePermission(url) == CONTENT_SETTING_BLOCK);
}
void ChromeSubresourceFilterClient::WhitelistByContentSettings(
- const GURL& url) {
- // Whitelist via content settings.
- Profile* profile =
- Profile::FromBrowserContext(web_contents_->GetBrowserContext());
- DCHECK(profile);
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile);
- settings_map->SetContentSettingDefaultScope(
- url, url, ContentSettingsType::CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER,
- std::string(), CONTENT_SETTING_BLOCK);
-
- LogAction(kActionContentSettingsBlockedFromUI);
+ const GURL& top_level_url) {
+ settings_manager_->WhitelistSite(top_level_url);
}
void ChromeSubresourceFilterClient::WhitelistInCurrentWebContents(
@@ -140,18 +141,6 @@ void ChromeSubresourceFilterClient::LogAction(SubresourceFilterAction action) {
kActionLastEntry);
}
-ContentSetting ChromeSubresourceFilterClient::GetContentSettingForUrl(
- const GURL& url) {
- Profile* profile =
- Profile::FromBrowserContext(web_contents_->GetBrowserContext());
- DCHECK(profile);
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile);
- return settings_map->GetContentSetting(
- url, url, ContentSettingsType::CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER,
- std::string());
-}
-
subresource_filter::VerifiedRulesetDealer::Handle*
ChromeSubresourceFilterClient::GetRulesetDealer() {
subresource_filter::ContentRulesetService* ruleset_service =

Powered by Google App Engine
This is Rietveld 408576698