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

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

Issue 2795053002: [subresource_filter] Implement the "Smart" UI on Android (Closed)
Patch Set: rebase on #468985 Created 3 years, 8 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 8326fc3d2f978c81e58371fdfb12e94ae5ed1348..2d56f9d52a43532d927bab80b7aed48e313144b1 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -4,27 +4,28 @@
#include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h"
-#include <string>
-
#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/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"
-#include "components/content_settings/core/common/content_settings_types.h"
#include "components/subresource_filter/content/browser/content_ruleset_service.h"
+#include "components/subresource_filter/core/common/activation_level.h"
+#include "components/subresource_filter/core/common/activation_state.h"
#include "content/public/browser/navigation_handle.h"
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();
}
ChromeSubresourceFilterClient::~ChromeSubresourceFilterClient() {}
@@ -33,21 +34,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);
}
@@ -58,22 +66,15 @@ 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) {
+ // Whitelist via content settings. SetContentSettings has logic to ignore
+ // metrics for these calls, so also log the generic blocked metrics.
+ settings_manager_->SetSitePermission(top_level_url, CONTENT_SETTING_BLOCK,
+ true /* from_ui */);
}
void ChromeSubresourceFilterClient::WhitelistInCurrentWebContents(
@@ -88,18 +89,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