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

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

Issue 2838063002: [on-hold][subresource_filter] Add ActivationTracker to track all activated contents (Closed)
Patch Set: fix incognito 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..2c1620d18ab684b844d69f9988da0efa2d07feac 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -12,19 +12,24 @@
#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_activation_tracker.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()));
+ : content::WebContentsObserver(web_contents),
+ profile_context_(SubresourceFilterProfileContextFactory::GetForProfile(
+ Profile::FromBrowserContext(web_contents->GetBrowserContext()))),
+ did_show_ui_for_navigation_(false) {
+ DCHECK(profile_context_);
}
ChromeSubresourceFilterClient::~ChromeSubresourceFilterClient() {}
@@ -36,7 +41,7 @@ void ChromeSubresourceFilterClient::ToggleNotificationVisibility(
did_show_ui_for_navigation_ = visibility;
TabSpecificContentSettings* content_settings =
- TabSpecificContentSettings::FromWebContents(web_contents_);
+ TabSpecificContentSettings::FromWebContents(web_contents());
// |visibility| is false when a new navigation starts.
if (visibility) {
@@ -45,7 +50,7 @@ void ChromeSubresourceFilterClient::ToggleNotificationVisibility(
LogAction(kActionUIShown);
#if defined(OS_ANDROID)
InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents_);
+ InfoBarService::FromWebContents(web_contents());
SubresourceFilterInfobarDelegate::Create(infobar_service);
#endif
} else {
@@ -65,7 +70,7 @@ void ChromeSubresourceFilterClient::WhitelistByContentSettings(
const GURL& url) {
// Whitelist via content settings.
Profile* profile =
- Profile::FromBrowserContext(web_contents_->GetBrowserContext());
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext());
DCHECK(profile);
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile);
@@ -82,6 +87,18 @@ void ChromeSubresourceFilterClient::WhitelistInCurrentWebContents(
whitelisted_hosts_.insert(url.host());
}
+void ChromeSubresourceFilterClient::OnPageActivated(
+ const subresource_filter::ActivationState& state) {
+ DCHECK_NE(state.activation_level,
+ subresource_filter::ActivationLevel::DISABLED);
+
+ // Do not care about DRYRUN mode.
+ bool activated =
+ state.activation_level == subresource_filter::ActivationLevel::ENABLED;
+ profile_context_->activation_tracker()->OnWebContentsActivated(web_contents(),
+ activated);
+}
+
// static
void ChromeSubresourceFilterClient::LogAction(SubresourceFilterAction action) {
UMA_HISTOGRAM_ENUMERATION("SubresourceFilter.Actions", action,
@@ -91,7 +108,7 @@ void ChromeSubresourceFilterClient::LogAction(SubresourceFilterAction action) {
ContentSetting ChromeSubresourceFilterClient::GetContentSettingForUrl(
const GURL& url) {
Profile* profile =
- Profile::FromBrowserContext(web_contents_->GetBrowserContext());
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext());
DCHECK(profile);
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile);
@@ -106,3 +123,16 @@ ChromeSubresourceFilterClient::GetRulesetDealer() {
g_browser_process->subresource_filter_ruleset_service();
return ruleset_service ? ruleset_service->ruleset_dealer() : nullptr;
}
+
+void ChromeSubresourceFilterClient::DidStartNavigation(
+ content::NavigationHandle* navigation_handle) {
+ if (navigation_handle->IsInMainFrame()) {
+ profile_context_->activation_tracker()->OnWebContentsActivated(
+ web_contents(), false /* activated */);
+ }
+}
+
+void ChromeSubresourceFilterClient::WebContentsDestroyed() {
+ profile_context_->activation_tracker()->OnWebContentsDestroyed(
+ web_contents());
+}

Powered by Google App Engine
This is Rietveld 408576698