1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
// Copyright 2022 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_PRELOADING_PRERENDER_PRERENDER_FINAL_STATUS_H_
#define CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_FINAL_STATUS_H_
#include "content/public/browser/preloading.h"
#include "content/common/content_export.h"
namespace content {
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// If you change this, please follow the processes below:
//
// go/preloading-dashboard-updates to update the mapping reflected in
// dashboard, or if you are not a Googler, please file an FYI bug on
// https://crbug.new with component Internals>Preload.
//
// https://docs.google.com/document/d/1PnrfowsZMt62PX1EvvTp2Nqs3ji1zrklrAEe1JYbkTk
// to ensure failure reasons are correctly shown in the DevTools
// frontend.
//
// LINT.IfChange
enum class PrerenderFinalStatus {
kActivated = 0,
kDestroyed = 1,
kLowEndDevice = 2,
// These have been broken down into SameSiteCrossOrigin and CrossSite for
// better understanding of the metrics. kCrossOriginRedirect = 3,
// kCrossOriginNavigation = 4,
kInvalidSchemeRedirect = 5,
kInvalidSchemeNavigation = 6,
// kInProgressNavigation = 7, // No longer used.
// kNavigationRequestFailure = 8, // No longer used.
kNavigationRequestBlockedByCsp = 9,
// kMainFrameNavigation = 10, // No longer used.
kMojoBinderPolicy = 11,
// kPlugin = 12, // No longer used.
kRendererProcessCrashed = 13,
kRendererProcessKilled = 14,
kDownload = 15,
kTriggerDestroyed = 16,
kNavigationNotCommitted = 17,
kNavigationBadHttpStatus = 18,
kClientCertRequested = 19,
kNavigationRequestNetworkError = 20,
// This is split into
// kMaxNumOfRunning(Eager|NonEager|Embedder)PrerendersExceeded
// kMaxNumOfRunningPrerendersExceeded = 21,
kCancelAllHostsForTesting = 22,
kDidFailLoad = 23,
kStop = 24,
kSslCertificateError = 25,
kLoginAuthRequested = 26,
kUaChangeRequiresReload = 27,
kBlockedByClient = 28,
// Deprecate in favor of newly defined behavior to support Web Audio while
// prerendering. See https://github.com/WICG/nav-speculation/issues/165.
// kAudioOutputDeviceRequested = 29,
kMixedContent = 30,
kTriggerBackgrounded = 31,
// Break down into kEmbedderTriggeredAndSameOriginRedirected and
// kEmbedderTriggeredAndCrossOriginRedirected for investigation.
// kEmbedderTriggeredAndRedirected = 32,
// Deprecate since same origin redirection is allowed considering that the
// initial prerender origin is a safe site.
// kEmbedderTriggeredAndSameOriginRedirected = 33,
// Deprecated. Use kCrossSiteRedirectInInitialNavigation instead.
// kEmbedderTriggeredAndCrossOriginRedirected = 34,
// Deprecated. This has the same meaning as kTriggerDestroyed because the
// metric's name includes trigger type.
// kEmbedderTriggeredAndDestroyed = 35,
kMemoryLimitExceeded = 36,
// Deprecated. Failure on query of current memory consumption is ignored.
// kFailToGetMemoryUsage = 37,
kDataSaverEnabled = 38,
kTriggerUrlHasEffectiveUrl = 39,
kActivatedBeforeStarted = 40,
kInactivePageRestriction = 41,
kStartFailed = 42,
kTimeoutBackgrounded = 43,
// Enums for prerender initial navigation. For main frame navigation in
// prerendered pages after prerender initial navigation, use enums suffixed
// with InMainFrameNavigation (e.g., kCrossSiteRedirectInMainFrameNavigation).
kCrossSiteRedirectInInitialNavigation = 44,
kCrossSiteNavigationInInitialNavigation = 45,
// Deprecated. Same-site cross-origin navigation in a prerendered page is
// allowed in crbug.com/1239281.
// kSameSiteCrossOriginRedirectInInitialNavigation = 46,
// kSameSiteCrossOriginNavigationInInitialNavigation = 47,
kSameSiteCrossOriginRedirectNotOptInInInitialNavigation = 48,
kSameSiteCrossOriginNavigationNotOptInInInitialNavigation = 49,
// The prediction is correct, and we are almost ready to activate this
// PrerenderHost, but the activation navigation's parameters are different
// from the initial prerendering navigation so Prerender fails to activate it.
kActivationNavigationParameterMismatch = 50,
kActivatedInBackground = 51,
// kEmbedderHostDisallowed = 52, // No longer used.
// Called when encounter failures during synchronous activation.
// TODO(crbug.com/40238737): Remove this reason if no sample is
// recorded in stable, or look into the reason if there are.
kActivationNavigationDestroyedBeforeSuccess = 53,
// See comments on WebContents::kTabClosedWithoutUserGesture for the
// difference between the two statuses below.
kTabClosedByUserGesture = 54,
kTabClosedWithoutUserGesture = 55,
kPrimaryMainFrameRendererProcessCrashed = 56,
kPrimaryMainFrameRendererProcessKilled = 57,
kActivationFramePolicyNotCompatible = 58,
kPreloadingDisabled = 59,
kBatterySaverEnabled = 60,
kActivatedDuringMainFrameNavigation = 61,
kPreloadingUnsupportedByWebContents = 62,
// Enums for main frame navigation in prerendered pages.
kCrossSiteRedirectInMainFrameNavigation = 63,
kCrossSiteNavigationInMainFrameNavigation = 64,
kSameSiteCrossOriginRedirectNotOptInInMainFrameNavigation = 65,
kSameSiteCrossOriginNavigationNotOptInInMainFrameNavigation = 66,
kMemoryPressureOnTrigger = 67,
kMemoryPressureAfterTriggered = 68,
kPrerenderingDisabledByDevTools = 69,
// Different from kBlockedByClient, which tracks the failure caused by main
// frame navigation, this status indicates that clients block some resource
// loading.
// Eliminated per crrev.com/c/4891929.
// kResourceLoadBlockedByClient = 70,
// A trigger page removed a corresponding prerender rule from
// <script type="speculationrules">.
kSpeculationRuleRemoved = 71,
// A trigger page cannot activate a prerendered page when it has auxiliary
// browsing contexts that should be able to script each other (e.g., pop-up
// windows with openers). For details, see comments on the place where this
// status is specified.
kActivatedWithAuxiliaryBrowsingContexts = 72,
kMaxNumOfRunningEagerPrerendersExceeded = 73,
kMaxNumOfRunningNonEagerPrerendersExceeded = 74,
kMaxNumOfRunningEmbedderPrerendersExceeded = 75,
kPrerenderingUrlHasEffectiveUrl = 76,
kRedirectedPrerenderingUrlHasEffectiveUrl = 77,
kActivationUrlHasEffectiveUrl = 78,
kJavaScriptInterfaceAdded = 79,
kJavaScriptInterfaceRemoved = 80,
kAllPrerenderingCanceled = 81,
// Cancelled by window.close() from renderer side.
kWindowClosed = 82,
kSlowNetwork = 83,
kOtherPrerenderedPageActivated = 84,
// When the V8 optimizer is disabled by the site settings, prerendering a page
// that has the COOP crashes (see https://crbug.com/40076091 for details). To
// avoid it, prerendering is disabled in that case.
// kV8OptimizerDisabled = 85,
// Prefetch ahead of prerender failed. Precise reason is recorded as UMA
// `Prerender.Experimental.PrefetchAheadOfPrerenderFailed.PrefetchStatus{PreloadingTriggerType}`
kPrerenderFailedDuringPrefetch = 86,
// Prerendering canceled by clearing cache from browsing data removal.
kBrowsingDataRemoved = 87,
kMaxValue = kBrowsingDataRemoved,
};
// LINT.ThenChange(//third_party/blink/public/devtools_protocol/browser_protocol.pdl)
// Helper method to convert PrerenderFinalStatus to PreloadingFailureReason.
PreloadingFailureReason CONTENT_EXPORT
ToPreloadingFailureReason(PrerenderFinalStatus);
} // namespace content
#endif // CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_FINAL_STATUS_H_
|