chromium/components/subresource_filter/content/shared/browser/child_frame_navigation_filtering_throttle.h

// 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_CHILD_FRAME_NAVIGATION_FILTERING_THROTTLE_H_
#define COMPONENTS_SUBRESOURCE_FILTER_CONTENT_SHARED_BROWSER_CHILD_FRAME_NAVIGATION_FILTERING_THROTTLE_H_

#include <optional>
#include <string>

#include "base/feature_list.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "components/subresource_filter/core/browser/async_document_subresource_filter.h"
#include "components/subresource_filter/core/common/load_policy.h"
#include "content/public/browser/navigation_throttle.h"

class GURL;

features  // namespace features

namespace content {
class NavigationHandle;
}  // namespace content

namespace subresource_filter {

class AsyncDocumentSubresourceFilter;

// Interface for a NavigationThrottle responsible for filtering document loads
// within child frames (subframes and fenced frame main frames), which are
// considered subresource loads of their parent frame and hence are subject to
// subresource filtering using the parent frame's
// AsyncDocumentSubresourceFilter.
//
// The throttle should only be instantiated for navigations occuring in child
// frames owned by documents which already have filtering activated, and
// therefore an associated (Async)DocumentSubresourceFilter.
class ChildFrameNavigationFilteringThrottle
    : public content::NavigationThrottle {};

}  // namespace subresource_filter

#endif  // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_SHARED_BROWSER_CHILD_FRAME_NAVIGATION_FILTERING_THROTTLE_H_