| Index: components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
|
| diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
|
| index 32b679cf7c333a3fdf17b7100dbe00feb3ea5ba8..ed04110b2d1740a0ab0b3cf6e50c2b1d91d16b34 100644
|
| --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
|
| +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h"
|
|
|
| +#include <utility>
|
| +
|
| #include "base/bind.h"
|
| #include "base/logging.h"
|
| #include "base/memory/ptr_util.h"
|
| @@ -12,6 +14,7 @@
|
| #include "components/subresource_filter/content/browser/page_load_statistics.h"
|
| #include "components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.h"
|
| #include "components/subresource_filter/content/common/subresource_filter_messages.h"
|
| +#include "components/subresource_filter/core/browser/subresource_filter_features.h"
|
| #include "content/public/browser/navigation_handle.h"
|
| #include "content/public/browser/navigation_throttle.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| @@ -71,13 +74,17 @@ ContentSubresourceFilterThrottleManager::
|
|
|
| void ContentSubresourceFilterThrottleManager::NotifyPageActivationComputed(
|
| content::NavigationHandle* navigation_handle,
|
| - const ActivationState& activation_state) {
|
| + const ActivationState& activation_state,
|
| + ActivationDecision activation_decision) {
|
| DCHECK(navigation_handle->IsInMainFrame());
|
| DCHECK(!navigation_handle->HasCommitted());
|
| auto it = ongoing_activation_throttles_.find(navigation_handle);
|
| if (it != ongoing_activation_throttles_.end()) {
|
| - it->second->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
|
| - activation_state);
|
| + auto* ruleset = activation_decision == ActivationDecision::ACTIVATED
|
| + ? EnsureRulesetHandle()
|
| + : nullptr;
|
| + it->second->NotifyPageActivationWithRuleset(ruleset, activation_state,
|
| + activation_decision);
|
| }
|
| }
|
|
|
| @@ -125,13 +132,17 @@ void ContentSubresourceFilterThrottleManager::DidFinishNavigation(
|
|
|
| auto throttle = ongoing_activation_throttles_.find(navigation_handle);
|
| std::unique_ptr<AsyncDocumentSubresourceFilter> filter;
|
| + ActivationDecision page_activation_decision = ActivationDecision::UNKNOWN;
|
| if (throttle != ongoing_activation_throttles_.end()) {
|
| filter = throttle->second->ReleaseFilter();
|
| + if (navigation_handle->IsInMainFrame())
|
| + page_activation_decision = throttle->second->GetPageActivationDecision();
|
| ongoing_activation_throttles_.erase(throttle);
|
| }
|
|
|
| if (navigation_handle->IsInMainFrame()) {
|
| current_committed_load_has_notified_disallowed_load_ = false;
|
| + activation_decision_ = page_activation_decision;
|
| statistics_.reset();
|
| if (filter) {
|
| statistics_ =
|
| @@ -258,6 +269,10 @@ ContentSubresourceFilterThrottleManager::GetParentFrameFilter(
|
| void ContentSubresourceFilterThrottleManager::MaybeCallFirstDisallowedLoad() {
|
| if (current_committed_load_has_notified_disallowed_load_)
|
| return;
|
| +
|
| + auto configurations = GetActiveConfigurations();
|
| + if (configurations->the_one_and_only().should_suppress_notifications)
|
| + return;
|
| delegate_->OnFirstSubresourceLoadDisallowed();
|
| current_committed_load_has_notified_disallowed_load_ = true;
|
| }
|
|
|