use serde::{Serialize, Deserialize};
pub type RuleSetId = String;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RuleSet {
pub id: RuleSetId,
pub loaderId: crate::network::LoaderId,
pub sourceText: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendNodeId: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub requestId: Option<crate::network::RequestId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorType: Option<RuleSetErrorType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorMessage: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum RuleSetErrorType {
#[default]
SourceIsNotJsonObject,
InvalidRulesSkipped,
InvalidRulesetLevelTag,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum SpeculationAction {
#[default]
Prefetch,
Prerender,
PrerenderUntilScript,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum SpeculationTargetHint {
#[default]
Blank,
SelfValue,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PreloadingAttemptKey {
pub loaderId: crate::network::LoaderId,
pub action: SpeculationAction,
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub formSubmission: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub targetHint: Option<SpeculationTargetHint>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PreloadingAttemptSource {
pub key: PreloadingAttemptKey,
pub ruleSetIds: Vec<RuleSetId>,
pub nodeIds: Vec<crate::dom::BackendNodeId>,
}
pub type PreloadPipelineId = String;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PrerenderFinalStatus {
#[default]
Activated,
Destroyed,
LowEndDevice,
InvalidSchemeRedirect,
InvalidSchemeNavigation,
NavigationRequestBlockedByCsp,
MojoBinderPolicy,
RendererProcessCrashed,
RendererProcessKilled,
Download,
TriggerDestroyed,
NavigationNotCommitted,
NavigationBadHttpStatus,
ClientCertRequested,
NavigationRequestNetworkError,
CancelAllHostsForTesting,
DidFailLoad,
Stop,
SslCertificateError,
LoginAuthRequested,
UaChangeRequiresReload,
BlockedByClient,
AudioOutputDeviceRequested,
MixedContent,
TriggerBackgrounded,
MemoryLimitExceeded,
DataSaverEnabled,
TriggerUrlHasEffectiveUrl,
ActivatedBeforeStarted,
InactivePageRestriction,
StartFailed,
TimeoutBackgrounded,
CrossSiteRedirectInInitialNavigation,
CrossSiteNavigationInInitialNavigation,
SameSiteCrossOriginRedirectNotOptInInInitialNavigation,
SameSiteCrossOriginNavigationNotOptInInInitialNavigation,
ActivationNavigationParameterMismatch,
ActivatedInBackground,
EmbedderHostDisallowed,
ActivationNavigationDestroyedBeforeSuccess,
TabClosedByUserGesture,
TabClosedWithoutUserGesture,
PrimaryMainFrameRendererProcessCrashed,
PrimaryMainFrameRendererProcessKilled,
ActivationFramePolicyNotCompatible,
PreloadingDisabled,
BatterySaverEnabled,
ActivatedDuringMainFrameNavigation,
PreloadingUnsupportedByWebContents,
CrossSiteRedirectInMainFrameNavigation,
CrossSiteNavigationInMainFrameNavigation,
SameSiteCrossOriginRedirectNotOptInInMainFrameNavigation,
SameSiteCrossOriginNavigationNotOptInInMainFrameNavigation,
MemoryPressureOnTrigger,
MemoryPressureAfterTriggered,
PrerenderingDisabledByDevTools,
SpeculationRuleRemoved,
ActivatedWithAuxiliaryBrowsingContexts,
MaxNumOfRunningEagerPrerendersExceeded,
MaxNumOfRunningNonEagerPrerendersExceeded,
MaxNumOfRunningEmbedderPrerendersExceeded,
PrerenderingUrlHasEffectiveUrl,
RedirectedPrerenderingUrlHasEffectiveUrl,
ActivationUrlHasEffectiveUrl,
JavaScriptInterfaceAdded,
JavaScriptInterfaceRemoved,
AllPrerenderingCanceled,
WindowClosed,
SlowNetwork,
OtherPrerenderedPageActivated,
V8OptimizerDisabled,
PrerenderFailedDuringPrefetch,
BrowsingDataRemoved,
PrerenderHostReused,
FormSubmitWhenPrerendering,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PreloadingStatus {
#[default]
Pending,
Running,
Ready,
Success,
Failure,
NotSupported,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PrefetchStatus {
#[default]
PrefetchAllowed,
PrefetchFailedIneligibleRedirect,
PrefetchFailedInvalidRedirect,
PrefetchFailedMIMENotSupported,
PrefetchFailedNetError,
PrefetchFailedNon2XX,
PrefetchEvictedAfterBrowsingDataRemoved,
PrefetchEvictedAfterCandidateRemoved,
PrefetchEvictedForNewerPrefetch,
PrefetchHeldback,
PrefetchIneligibleRetryAfter,
PrefetchIsPrivacyDecoy,
PrefetchIsStale,
PrefetchNotEligibleBrowserContextOffTheRecord,
PrefetchNotEligibleDataSaverEnabled,
PrefetchNotEligibleExistingProxy,
PrefetchNotEligibleHostIsNonUnique,
PrefetchNotEligibleNonDefaultStoragePartition,
PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy,
PrefetchNotEligibleSchemeIsNotHttps,
PrefetchNotEligibleUserHasCookies,
PrefetchNotEligibleUserHasServiceWorker,
PrefetchNotEligibleUserHasServiceWorkerNoFetchHandler,
PrefetchNotEligibleRedirectFromServiceWorker,
PrefetchNotEligibleRedirectToServiceWorker,
PrefetchNotEligibleBatterySaverEnabled,
PrefetchNotEligiblePreloadingDisabled,
PrefetchNotFinishedInTime,
PrefetchNotStarted,
PrefetchNotUsedCookiesChanged,
PrefetchProxyNotAvailable,
PrefetchResponseUsed,
PrefetchSuccessfulButNotUsed,
PrefetchNotUsedProbeFailed,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PrerenderMismatchedHeaders {
pub headerName: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub initialValue: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub activationValue: Option<String>,
}