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

Unified Diff: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc

Issue 2243863002: Send activation signal to subframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 4 years, 4 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: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
index 51c16196644fcc8df560a968130a2a873e6d7530..13d6ddba1dbe69c0e0ce7944890dd12a17eced6b 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
@@ -120,13 +120,28 @@ void ContentSubresourceFilterDriverFactory::AddHostOfURLToActivationSet(
void ContentSubresourceFilterDriverFactory::ReadyToCommitMainFrameNavigation(
content::RenderFrameHost* render_frame_host,
const GURL& url) {
- if (GetCurrentActivationScope() != ActivationScope::ACTIVATION_LIST ||
- !ShouldActivateForURL(url)) {
- return;
+ if (ShouldActivateForMainFrameURL(url)) {
+ set_activation_state(GetMaximumActivationState());
+ ActivateForFrameHostIfNeeded(render_frame_host, url);
+ }
+}
+
+bool ContentSubresourceFilterDriverFactory::ShouldActivateForMainFrameURL(
+ const GURL& url) const {
+ if (GetCurrentActivationScope() == ActivationScope::ALL_SITES)
+ return !IsWhitelisted(url);
+ else if (GetCurrentActivationScope() == ActivationScope::ACTIVATION_LIST)
+ return ShouldActivateForURL(url);
+ return false;
+}
+
+void ContentSubresourceFilterDriverFactory::ActivateForFrameHostIfNeeded(
+ content::RenderFrameHost* render_frame_host,
+ const GURL& url) {
+ if (activation_state_ != ActivationState::DISABLED) {
+ DriverFromFrameHost(render_frame_host)
+ ->ActivateForProvisionalLoad(GetMaximumActivationState());
}
- activation_state_ = GetMaximumActivationState();
- DriverFromFrameHost(render_frame_host)
- ->ActivateForProvisionalLoad(activation_state());
}
void ContentSubresourceFilterDriverFactory::OnReloadRequested() {
@@ -166,14 +181,10 @@ void ContentSubresourceFilterDriverFactory::DidStartProvisionalLoadForFrame(
const GURL& validated_url,
bool is_error_page,
bool is_iframe_srcdoc) {
- if (GetCurrentActivationScope() == ActivationScope::ALL_SITES &&
- !IsWhitelisted(validated_url)) {
- activation_state_ = GetMaximumActivationState();
- DriverFromFrameHost(render_frame_host)
- ->ActivateForProvisionalLoad(GetMaximumActivationState());
- } else {
- activation_state_ = ActivationState::DISABLED;
- }
+ if (!render_frame_host->GetParent())
+ set_activation_state(ActivationState::DISABLED);
+ else
+ ActivateForFrameHostIfNeeded(render_frame_host, validated_url);
}
bool ContentSubresourceFilterDriverFactory::OnMessageReceived(
@@ -203,4 +214,9 @@ void ContentSubresourceFilterDriverFactory::PromptUserIfNeeded(
ActivationState::ENABLED);
}
+void ContentSubresourceFilterDriverFactory::set_activation_state(
+ const ActivationState& new_activation_state) {
+ activation_state_ = new_activation_state;
+}
+
} // namespace subresource_filter

Powered by Google App Engine
This is Rietveld 408576698