chromium/content/browser/renderer_host/back_forward_cache_subframe_navigation_throttle.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_RENDERER_HOST_BACK_FORWARD_CACHE_SUBFRAME_NAVIGATION_THROTTLE_H_
#define CONTENT_BROWSER_RENDERER_HOST_BACK_FORWARD_CACHE_SUBFRAME_NAVIGATION_THROTTLE_H_

#include "content/public/browser/navigation_throttle.h"
#include "content/public/browser/web_contents_observer.h"

namespace content {

// BackForwardCacheSubframeNavigationThrottle defers subframe navigation before
// commit when the page that the subframe is in is BFCached. For now, this is
// only for WillCommitWithoutUrlLoader and WillStartRequest since currently, we
// allow no-URLLoader navigations that haven't yet reached the "pending commit"
// stage and navigations that use URLLoader that haven't sent network requests.
// We disallow any navigations in all other stages when the frame is in
// BFCache. This throttle resumes the deferred navigation when a page which
// contains the subframe is restored from the BFCache. Find more details in
// https://crbug.com/1511153.
class BackForwardCacheSubframeNavigationThrottle : public NavigationThrottle,
                                                   public WebContentsObserver {};

}  // namespace content

#endif  // CONTENT_BROWSER_RENDERER_HOST_BACK_FORWARD_CACHE_SUBFRAME_NAVIGATION_THROTTLE_H_