blob: 784a8582d876d190633b965b437dc16fedd0c8b3 [file] [log] [blame]
// Copyright 2025 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_PUBLIC_BROWSER_ERROR_NAVIGATION_TRIGGER_H_
#define CONTENT_PUBLIC_BROWSER_ERROR_NAVIGATION_TRIGGER_H_
namespace content {
// A detailed reason on why errors in navigation happened. Mostly focusing on
// `net::ERR_ABORTED` failures.
// Note that despite the name, this might not be accompanied by `net::Errors` in
// the navigation, see also `NavigationHandle::GetErrorNavigationTrigger()`.
//
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// LINT.IfChange(ErrorNavigationTrigger)
enum class ErrorNavigationTrigger {
// An unknown trigger caused navigation abort.
kUnknown = 0,
// Caused by the cancelation from the navigation throttle.
kNavigationThrottleCancel,
// Caused by being blocked by the navigation throtle.
kNavigationThrottleBlock,
// Caused by the redirect not allowed due to the security policy.
kRedirectNotAllowed,
// Caused by the Credentialed subresource check blocked.
kCredentialedSubresourceBlocked,
// Caused by the embedder-initiated navigation of FencedFrame being blocked.
kFencedFrameEmbedderInitiatedNavigation,
// Caused by the permission policy of fenced frames being blocked.
kFencedFramesPermissionPolicyBlocked,
// Caused by the content decoder data pipe creation failing.
kContentDecoderDataPipeCreationFailed,
// The response should not be rendered (e.g. a download).
kShouldNotRenderResponse,
// The embedder overrides/blocks the URL load.
kShouldOverrideUrlLoading,
// The render initiated cross process navigation is not allowed, and blocked
// the navigation.
kRenderInitiatedCrossProcessNavigationNotAllowed,
// The render initiated navigation could not request the URL.
kRendererInitiatedCanNotRequestURL,
// The response rendered fallback content, due to e.g. Http errors.
kShouldRenderFallbackContent,
// The navigation client was disconnected.
kNavigationClientDisconnected,
// The navigation failed due to silent errors caused by `net::ERR_ABORTED`.
kFailedWithSilentErrorOnNetAborted,
// The navigation failed due to silent errors caused by the error page being
// suppressed due to custom handling of the error.
kFailedWithSilentErrorOnIgnore,
// The navigation failed due to silent errors caused by <webview> guests
// suppressing the `net::ERR_BLOCKED_BY_CLIENT` error.
kFailedWithSilentErrorOnBlockedByClient,
// The navigation of kObject failed.
kNavigationOfObjectFailed,
// The navigation was same-document commit aborted by the renderer.
kSameDocumentCommitAborted,
// The navigation was aborted because the `RenderFrameHost` was deleted
// before the navigation finished.
kCommittedOnPendingDeletion,
kMaxValue = kCommittedOnPendingDeletion,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/navigation/enums.xml:ErrorNavigationTrigger)
} // namespace content
#endif // CONTENT_PUBLIC_BROWSER_ERROR_NAVIGATION_TRIGGER_H_