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

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

Issue 2844063002: Add support for multiple simultaneous subresource_filter::Configurations. (Closed)
Patch Set: Rebase. 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: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
index 17967d31f7763aa4336aee91b8d3adf9fc154dfd..7ec65f93f9355857b2cf746d423bc7f24369cd60 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
@@ -16,6 +16,7 @@
#include "base/time/time.h"
#include "components/safe_browsing_db/util.h"
#include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h"
+#include "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "ui/base/page_transition_types.h"
@@ -55,19 +56,21 @@ class ContentSubresourceFilterDriverFactory
// Subresource filtering was activated.
ACTIVATED,
- // Did not activate because subresource filtering was disabled.
+ // Did not activate because subresource filtering was disabled by the
+ // highest priority configuration whose activation conditions were met.
ACTIVATION_DISABLED,
// Did not activate because the main frame document URL had an unsupported
// scheme.
UNSUPPORTED_SCHEME,
- // Did not activate because the main frame document URL was whitelisted.
+ // Did not activate because although there was a configuration whose
+ // activation conditions were met, the main frame URL was whitelisted.
URL_WHITELISTED,
// Did not activate because the main frame document URL did not match the
- // activation list.
- ACTIVATION_LIST_NOT_MATCHED,
+ // activation conditions of any of enabled configurations.
+ ACTIVATION_CONDITIONS_NOT_MET,
// Max value for enum.
ACTIVATION_DECISION_MAX
@@ -123,18 +126,24 @@ class ContentSubresourceFilterDriverFactory
friend class ContentSubresourceFilterDriverFactoryTest;
friend class safe_browsing::SafeBrowsingServiceTest;
- void ResetActivationState();
-
// content::WebContentsObserver:
void DidStartNavigation(
content::NavigationHandle* navigation_handle) override;
void DidRedirectNavigation(
content::NavigationHandle* navigation_handle) override;
+ void DidFinishNavigation(
+ content::NavigationHandle* navigation_handle) override;
// Checks base on the value of |url| and current activation scope if
// activation signal should be sent.
- ActivationDecision ComputeActivationDecisionForMainFrameNavigation(
- content::NavigationHandle* navigation_handle) const;
+ void ComputeActivationForMainFrameNavigation(
+ content::NavigationHandle* navigation_handle);
+
+ // Returns whether a main-frame navigation to the given |url| satisfies the
+ // activation |conditions| of a given configuration, except for |priority|.
+ bool DoesMainFrameURLSatisfyActivationConditions(
+ const GURL& url,
+ const Configuration::ActivationConditions& conditions) const;
bool DidURLMatchActivationList(const GURL& url,
ActivationList activation_list) const;
@@ -152,9 +161,25 @@ class ContentSubresourceFilterDriverFactory
std::unique_ptr<ContentSubresourceFilterThrottleManager> throttle_manager_;
- ActivationLevel activation_level_;
- ActivationDecision activation_decision_;
- bool measure_performance_;
+ // The activation decision corresponding to the most recently _started_
+ // non-same-document navigation in the main frame.
+ //
+ // The value is reset to ActivationDecision::UNKNOWN at the start of each such
+ // navigation, and will not be assigned until the navigation successfully
+ // reaches the WillProcessResponse stage (or successfully finishes if
+ // throttles are not invoked). This means that after a cancelled or otherwise
+ // unsuccessful navigation, the value will be left at UNKNOWN indefinitely.
+ ActivationDecision activation_decision_ =
+ ActivationDecision::ACTIVATION_DISABLED;
+
+ // The activation options corresponding to the most recently _committed_
+ // non-same-document navigation in the main frame.
+ //
+ // The value corresponding to the previous such navigation will be retained,
+ // and the new value not assigned until a subsequent navigation successfully
+ // reaches the WillProcessResponse stage (or successfully finishes if
+ // throttles are not invoked).
+ Configuration::ActivationOptions activation_options_;
// The URLs in the navigation chain.
std::vector<GURL> navigation_chain_;

Powered by Google App Engine
This is Rietveld 408576698