| 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());
|
| +}
|
|
|