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_; |