// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SUBRESOURCE_FILTER_CONTENT_SHARED_BROWSER_ACTIVATION_STATE_COMPUTING_NAVIGATION_THROTTLE_H_ #define COMPONENTS_SUBRESOURCE_FILTER_CONTENT_SHARED_BROWSER_ACTIVATION_STATE_COMPUTING_NAVIGATION_THROTTLE_H_ #include <memory> #include <optional> #include "base/memory/weak_ptr.h" #include "components/subresource_filter/core/browser/verified_ruleset_dealer.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" #include "content/public/browser/navigation_throttle.h" namespace subresource_filter { class AsyncDocumentSubresourceFilter; // NavigationThrottle responsible for determining the activation state of // subresource filtering for a given navigation (either in the root frame or in // a child frame); and for deferring that navigation at WillProcessResponse // until the activation state computation on the ruleset's task runner is // complete. // // Interested parties can retrieve the activation state after this point (most // likely in ReadyToCommitNavigation). // // Note: for performance, activation computation for child frames is done // speculatively at navigation start and at every redirect. This is to reduce // the wait time (most likely to 0) by WillProcessResponse time. For main // frames, speculation will be done at the next navigation stage after // NotifyPageActivationWithRuleset is called. class ActivationStateComputingNavigationThrottle : public content::NavigationThrottle { … }; } // namespace subresource_filter #endif // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_SHARED_BROWSER_ACTIVATION_STATE_COMPUTING_NAVIGATION_THROTTLE_H_