#include "content/browser/preloading/prerender/prerender_navigation_throttle.h"
#include "base/memory/ptr_util.h"
#include "base/no_destructor.h"
#include "base/strings/string_split.h"
#include "content/browser/preloading/prerender/prerender_features.h"
#include "content/browser/preloading/prerender/prerender_final_status.h"
#include "content/browser/preloading/prerender/prerender_host.h"
#include "content/browser/preloading/prerender/prerender_host_registry.h"
#include "content/browser/preloading/prerender/prerender_metrics.h"
#include "content/browser/preloading/prerender/prerender_navigation_utils.h"
#include "content/browser/renderer_host/frame_tree.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/renderer_host/navigation_request.h"
#include "content/browser/renderer_host/render_frame_host_delegate.h"
#include "content/public/browser/preloading_trigger_type.h"
#include "content/public/common/content_features.h"
#include "services/network/public/mojom/parsed_headers.mojom.h"
#include "third_party/blink/public/common/features.h"
#include "url/origin.h"
#include "url/url_constants.h"
namespace content {
namespace {
void AnalyzeCrossOriginRedirection(const url::Origin& current_origin,
const url::Origin& initial_origin,
const std::string& histogram_suffix) { … }
bool ShouldSkipHostInBlockList(const GURL& url) { … }
}
PrerenderNavigationThrottle::~PrerenderNavigationThrottle() = default;
std::unique_ptr<PrerenderNavigationThrottle>
PrerenderNavigationThrottle::MaybeCreateThrottleFor(
NavigationHandle* navigation_handle) { … }
const char* PrerenderNavigationThrottle::GetNameForLogging() { … }
NavigationThrottle::ThrottleCheckResult
PrerenderNavigationThrottle::WillStartRequest() { … }
NavigationThrottle::ThrottleCheckResult
PrerenderNavigationThrottle::WillRedirectRequest() { … }
PrerenderNavigationThrottle::PrerenderNavigationThrottle(
NavigationRequest* navigation_request)
: … { … }
NavigationThrottle::ThrottleCheckResult
PrerenderNavigationThrottle::WillStartOrRedirectRequest(bool is_redirection) { … }
NavigationThrottle::ThrottleCheckResult
PrerenderNavigationThrottle::WillProcessResponse() { … }
bool PrerenderNavigationThrottle::IsInitialNavigation() const { … }
void PrerenderNavigationThrottle::CancelPrerendering(
PrerenderFinalStatus final_status) { … }
}