1use serde::{Serialize, Deserialize};
3use serde_json::Value as JsonValue;
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct AffectedCookie {
10 pub name: String,
13
14 pub path: String,
15
16 pub domain: String,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, Default)]
22#[serde(rename_all = "camelCase")]
23pub struct AffectedRequest {
24 #[serde(skip_serializing_if = "Option::is_none")]
27 pub requestId: Option<crate::network::RequestId>,
28
29 pub url: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, Default)]
35#[serde(rename_all = "camelCase")]
36pub struct AffectedFrame {
37
38 pub frameId: crate::page::FrameId,
39}
40
41
42#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
43pub enum CookieExclusionReason {
44 #[default]
45 ExcludeSameSiteUnspecifiedTreatedAsLax,
46 ExcludeSameSiteNoneInsecure,
47 ExcludeSameSiteLax,
48 ExcludeSameSiteStrict,
49 ExcludeDomainNonASCII,
50 ExcludeThirdPartyCookieBlockedInFirstPartySet,
51 ExcludeThirdPartyPhaseout,
52 ExcludePortMismatch,
53 ExcludeSchemeMismatch,
54}
55
56
57#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
58pub enum CookieWarningReason {
59 #[default]
60 WarnSameSiteUnspecifiedCrossSiteContext,
61 WarnSameSiteNoneInsecure,
62 WarnSameSiteUnspecifiedLaxAllowUnsafe,
63 WarnSameSiteStrictLaxDowngradeStrict,
64 WarnSameSiteStrictCrossDowngradeStrict,
65 WarnSameSiteStrictCrossDowngradeLax,
66 WarnSameSiteLaxCrossDowngradeStrict,
67 WarnSameSiteLaxCrossDowngradeLax,
68 WarnAttributeValueExceedsMaxSize,
69 WarnDomainNonASCII,
70 WarnThirdPartyPhaseout,
71 WarnCrossSiteRedirectDowngradeChangesInclusion,
72 WarnDeprecationTrialMetadata,
73 WarnThirdPartyCookieHeuristic,
74}
75
76
77#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
78pub enum CookieOperation {
79 #[default]
80 SetCookie,
81 ReadCookie,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
87pub enum InsightType {
88 #[default]
89 GitHubResource,
90 GracePeriod,
91 Heuristics,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize, Default)]
97#[serde(rename_all = "camelCase")]
98pub struct CookieIssueInsight {
99
100 #[serde(rename = "type")]
101 pub type_: InsightType,
102 #[serde(skip_serializing_if = "Option::is_none")]
105 pub tableEntryUrl: Option<String>,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize, Default)]
113#[serde(rename_all = "camelCase")]
114pub struct CookieIssueDetails {
115 #[serde(skip_serializing_if = "Option::is_none")]
121 pub cookie: Option<AffectedCookie>,
122
123 #[serde(skip_serializing_if = "Option::is_none")]
124 pub rawCookieLine: Option<String>,
125
126 pub cookieWarningReasons: Vec<CookieWarningReason>,
127
128 pub cookieExclusionReasons: Vec<CookieExclusionReason>,
129 pub operation: CookieOperation,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub siteForCookies: Option<String>,
136
137 #[serde(skip_serializing_if = "Option::is_none")]
138 pub cookieUrl: Option<String>,
139
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub request: Option<AffectedRequest>,
142 #[serde(skip_serializing_if = "Option::is_none")]
145 pub insight: Option<CookieIssueInsight>,
146}
147
148
149#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
150pub enum PerformanceIssueType {
151 #[default]
152 DocumentCookie,
153}
154
155#[derive(Debug, Clone, Serialize, Deserialize, Default)]
158#[serde(rename_all = "camelCase")]
159pub struct PerformanceIssueDetails {
160
161 pub performanceIssueType: PerformanceIssueType,
162
163 #[serde(skip_serializing_if = "Option::is_none")]
164 pub sourceCodeLocation: Option<SourceCodeLocation>,
165}
166
167
168#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
169pub enum MixedContentResolutionStatus {
170 #[default]
171 MixedContentBlocked,
172 MixedContentAutomaticallyUpgraded,
173 MixedContentWarning,
174}
175
176
177#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
178pub enum MixedContentResourceType {
179 #[default]
180 AttributionSrc,
181 Audio,
182 Beacon,
183 CSPReport,
184 Download,
185 EventSource,
186 Favicon,
187 Font,
188 Form,
189 Frame,
190 Image,
191 Import,
192 JSON,
193 Manifest,
194 Ping,
195 PluginData,
196 PluginResource,
197 Prefetch,
198 Resource,
199 Script,
200 ServiceWorker,
201 SharedWorker,
202 SpeculationRules,
203 Stylesheet,
204 Track,
205 Video,
206 Worker,
207 XMLHttpRequest,
208 XSLT,
209}
210
211
212#[derive(Debug, Clone, Serialize, Deserialize, Default)]
213#[serde(rename_all = "camelCase")]
214pub struct MixedContentIssueDetails {
215 #[serde(skip_serializing_if = "Option::is_none")]
221 pub resourceType: Option<MixedContentResourceType>,
222 pub resolutionStatus: MixedContentResolutionStatus,
225 pub insecureURL: String,
228 pub mainResourceURL: String,
231 #[serde(skip_serializing_if = "Option::is_none")]
235 pub request: Option<AffectedRequest>,
236 #[serde(skip_serializing_if = "Option::is_none")]
239 pub frame: Option<AffectedFrame>,
240}
241
242#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
246pub enum BlockedByResponseReason {
247 #[default]
248 CoepFrameResourceNeedsCoepHeader,
249 CoopSandboxedIFrameCannotNavigateToCoopPage,
250 CorpNotSameOrigin,
251 CorpNotSameOriginAfterDefaultedToSameOriginByCoep,
252 CorpNotSameOriginAfterDefaultedToSameOriginByDip,
253 CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip,
254 CorpNotSameSite,
255 SRIMessageSignatureMismatch,
256}
257
258#[derive(Debug, Clone, Serialize, Deserialize, Default)]
263#[serde(rename_all = "camelCase")]
264pub struct BlockedByResponseIssueDetails {
265
266 pub request: AffectedRequest,
267
268 #[serde(skip_serializing_if = "Option::is_none")]
269 pub parentFrame: Option<AffectedFrame>,
270
271 #[serde(skip_serializing_if = "Option::is_none")]
272 pub blockedFrame: Option<AffectedFrame>,
273
274 pub reason: BlockedByResponseReason,
275}
276
277
278#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
279pub enum HeavyAdResolutionStatus {
280 #[default]
281 HeavyAdBlocked,
282 HeavyAdWarning,
283}
284
285
286#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
287pub enum HeavyAdReason {
288 #[default]
289 NetworkTotalLimit,
290 CpuTotalLimit,
291 CpuPeakLimit,
292}
293
294
295#[derive(Debug, Clone, Serialize, Deserialize, Default)]
296#[serde(rename_all = "camelCase")]
297pub struct HeavyAdIssueDetails {
298 pub resolution: HeavyAdResolutionStatus,
301 pub reason: HeavyAdReason,
304 pub frame: AffectedFrame,
307}
308
309
310#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
311pub enum ContentSecurityPolicyViolationType {
312 #[default]
313 KInlineViolation,
314 KEvalViolation,
315 KURLViolation,
316 KSRIViolation,
317 KTrustedTypesSinkViolation,
318 KTrustedTypesPolicyViolation,
319 KWasmEvalViolation,
320}
321
322
323#[derive(Debug, Clone, Serialize, Deserialize, Default)]
324#[serde(rename_all = "camelCase")]
325pub struct SourceCodeLocation {
326
327 #[serde(skip_serializing_if = "Option::is_none")]
328 pub scriptId: Option<crate::runtime::ScriptId>,
329
330 pub url: String,
331
332 pub lineNumber: i64,
333
334 pub columnNumber: i64,
335}
336
337
338#[derive(Debug, Clone, Serialize, Deserialize, Default)]
339#[serde(rename_all = "camelCase")]
340pub struct ContentSecurityPolicyIssueDetails {
341 #[serde(skip_serializing_if = "Option::is_none")]
344 pub blockedURL: Option<String>,
345 pub violatedDirective: String,
348
349 pub isReportOnly: bool,
350
351 pub contentSecurityPolicyViolationType: ContentSecurityPolicyViolationType,
352
353 #[serde(skip_serializing_if = "Option::is_none")]
354 pub frameAncestor: Option<AffectedFrame>,
355
356 #[serde(skip_serializing_if = "Option::is_none")]
357 pub sourceCodeLocation: Option<SourceCodeLocation>,
358
359 #[serde(skip_serializing_if = "Option::is_none")]
360 pub violatingNodeId: Option<crate::dom::BackendNodeId>,
361}
362
363
364#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
365pub enum SharedArrayBufferIssueType {
366 #[default]
367 TransferIssue,
368 CreationIssue,
369}
370
371#[derive(Debug, Clone, Serialize, Deserialize, Default)]
375#[serde(rename_all = "camelCase")]
376pub struct SharedArrayBufferIssueDetails {
377
378 pub sourceCodeLocation: SourceCodeLocation,
379
380 pub isWarning: bool,
381
382 #[serde(rename = "type")]
383 pub type_: SharedArrayBufferIssueType,
384}
385
386#[derive(Debug, Clone, Serialize, Deserialize, Default)]
390#[serde(rename_all = "camelCase")]
391pub struct CorsIssueDetails {
392
393 pub corsErrorStatus: crate::network::CorsErrorStatus,
394
395 pub isWarning: bool,
396
397 pub request: AffectedRequest,
398
399 #[serde(skip_serializing_if = "Option::is_none")]
400 pub location: Option<SourceCodeLocation>,
401
402 #[serde(skip_serializing_if = "Option::is_none")]
403 pub initiatorOrigin: Option<String>,
404
405 #[serde(skip_serializing_if = "Option::is_none")]
406 pub resourceIPAddressSpace: Option<crate::network::IPAddressSpace>,
407
408 #[serde(skip_serializing_if = "Option::is_none")]
409 pub clientSecurityState: Option<crate::network::ClientSecurityState>,
410}
411
412
413#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
414pub enum AttributionReportingIssueType {
415 #[default]
416 PermissionPolicyDisabled,
417 UntrustworthyReportingOrigin,
418 InsecureContext,
419 InvalidHeader,
420 InvalidRegisterTriggerHeader,
421 SourceAndTriggerHeaders,
422 SourceIgnored,
423 TriggerIgnored,
424 OsSourceIgnored,
425 OsTriggerIgnored,
426 InvalidRegisterOsSourceHeader,
427 InvalidRegisterOsTriggerHeader,
428 WebAndOsHeaders,
429 NoWebOrOsSupport,
430 NavigationRegistrationWithoutTransientUserActivation,
431 InvalidInfoHeader,
432 NoRegisterSourceHeader,
433 NoRegisterTriggerHeader,
434 NoRegisterOsSourceHeader,
435 NoRegisterOsTriggerHeader,
436 NavigationRegistrationUniqueScopeAlreadySet,
437}
438
439
440#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
441pub enum SharedDictionaryError {
442 #[default]
443 UseErrorCrossOriginNoCorsRequest,
444 UseErrorDictionaryLoadFailure,
445 UseErrorMatchingDictionaryNotUsed,
446 UseErrorUnexpectedContentDictionaryHeader,
447 WriteErrorCossOriginNoCorsRequest,
448 WriteErrorDisallowedBySettings,
449 WriteErrorExpiredResponse,
450 WriteErrorFeatureDisabled,
451 WriteErrorInsufficientResources,
452 WriteErrorInvalidMatchField,
453 WriteErrorInvalidStructuredHeader,
454 WriteErrorInvalidTTLField,
455 WriteErrorNavigationRequest,
456 WriteErrorNoMatchField,
457 WriteErrorNonIntegerTTLField,
458 WriteErrorNonListMatchDestField,
459 WriteErrorNonSecureContext,
460 WriteErrorNonStringIdField,
461 WriteErrorNonStringInMatchDestList,
462 WriteErrorNonStringMatchField,
463 WriteErrorNonTokenTypeField,
464 WriteErrorRequestAborted,
465 WriteErrorShuttingDown,
466 WriteErrorTooLongIdField,
467 WriteErrorUnsupportedType,
468}
469
470
471#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
472pub enum SRIMessageSignatureError {
473 #[default]
474 MissingSignatureHeader,
475 MissingSignatureInputHeader,
476 InvalidSignatureHeader,
477 InvalidSignatureInputHeader,
478 SignatureHeaderValueIsNotByteSequence,
479 SignatureHeaderValueIsParameterized,
480 SignatureHeaderValueIsIncorrectLength,
481 SignatureInputHeaderMissingLabel,
482 SignatureInputHeaderValueNotInnerList,
483 SignatureInputHeaderValueMissingComponents,
484 SignatureInputHeaderInvalidComponentType,
485 SignatureInputHeaderInvalidComponentName,
486 SignatureInputHeaderInvalidHeaderComponentParameter,
487 SignatureInputHeaderInvalidDerivedComponentParameter,
488 SignatureInputHeaderKeyIdLength,
489 SignatureInputHeaderInvalidParameter,
490 SignatureInputHeaderMissingRequiredParameters,
491 ValidationFailedSignatureExpired,
492 ValidationFailedInvalidLength,
493 ValidationFailedSignatureMismatch,
494 ValidationFailedIntegrityMismatch,
495}
496
497
498#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
499pub enum UnencodedDigestError {
500 #[default]
501 MalformedDictionary,
502 UnknownAlgorithm,
503 IncorrectDigestType,
504 IncorrectDigestLength,
505}
506
507
508#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
509pub enum ConnectionAllowlistError {
510 #[default]
511 InvalidHeader,
512 MoreThanOneList,
513 ItemNotInnerList,
514 InvalidAllowlistItemType,
515 ReportingEndpointNotToken,
516 InvalidUrlPattern,
517}
518
519#[derive(Debug, Clone, Serialize, Deserialize, Default)]
523#[serde(rename_all = "camelCase")]
524pub struct AttributionReportingIssueDetails {
525
526 pub violationType: AttributionReportingIssueType,
527
528 #[serde(skip_serializing_if = "Option::is_none")]
529 pub request: Option<AffectedRequest>,
530
531 #[serde(skip_serializing_if = "Option::is_none")]
532 pub violatingNodeId: Option<crate::dom::BackendNodeId>,
533
534 #[serde(skip_serializing_if = "Option::is_none")]
535 pub invalidParameter: Option<String>,
536}
537
538#[derive(Debug, Clone, Serialize, Deserialize, Default)]
542#[serde(rename_all = "camelCase")]
543pub struct QuirksModeIssueDetails {
544 pub isLimitedQuirksMode: bool,
548
549 pub documentNodeId: crate::dom::BackendNodeId,
550
551 pub url: String,
552
553 pub frameId: crate::page::FrameId,
554
555 pub loaderId: crate::network::LoaderId,
556}
557
558
559#[derive(Debug, Clone, Serialize, Deserialize, Default)]
560#[serde(rename_all = "camelCase")]
561pub struct NavigatorUserAgentIssueDetails {
562
563 pub url: String,
564
565 #[serde(skip_serializing_if = "Option::is_none")]
566 pub location: Option<SourceCodeLocation>,
567}
568
569
570#[derive(Debug, Clone, Serialize, Deserialize, Default)]
571#[serde(rename_all = "camelCase")]
572pub struct SharedDictionaryIssueDetails {
573
574 pub sharedDictionaryError: SharedDictionaryError,
575
576 pub request: AffectedRequest,
577}
578
579
580#[derive(Debug, Clone, Serialize, Deserialize, Default)]
581#[serde(rename_all = "camelCase")]
582pub struct SRIMessageSignatureIssueDetails {
583
584 pub error: SRIMessageSignatureError,
585
586 pub signatureBase: String,
587
588 pub integrityAssertions: Vec<String>,
589
590 pub request: AffectedRequest,
591}
592
593
594#[derive(Debug, Clone, Serialize, Deserialize, Default)]
595#[serde(rename_all = "camelCase")]
596pub struct UnencodedDigestIssueDetails {
597
598 pub error: UnencodedDigestError,
599
600 pub request: AffectedRequest,
601}
602
603
604#[derive(Debug, Clone, Serialize, Deserialize, Default)]
605#[serde(rename_all = "camelCase")]
606pub struct ConnectionAllowlistIssueDetails {
607
608 pub error: ConnectionAllowlistError,
609
610 pub request: AffectedRequest,
611}
612
613
614#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
615pub enum GenericIssueErrorType {
616 #[default]
617 FormLabelForNameError,
618 FormDuplicateIdForInputError,
619 FormInputWithNoLabelError,
620 FormAutocompleteAttributeEmptyError,
621 FormEmptyIdAndNameAttributesForInputError,
622 FormAriaLabelledByToNonExistingIdError,
623 FormInputAssignedAutocompleteValueToIdOrNameAttributeError,
624 FormLabelHasNeitherForNorNestedInputError,
625 FormLabelForMatchesNonExistingIdError,
626 FormInputHasWrongButWellIntendedAutocompleteValueError,
627 ResponseWasBlockedByORB,
628 NavigationEntryMarkedSkippable,
629 AutofillAndManualTextPolicyControlledFeaturesInfo,
630 AutofillPolicyControlledFeatureInfo,
631 ManualTextPolicyControlledFeatureInfo,
632 FormModelContextParameterMissingTitleAndDescription,
633 FormModelContextMissingToolName,
634 FormModelContextMissingToolDescription,
635 FormModelContextRequiredParameterMissingName,
636 FormModelContextParameterMissingName,
637}
638
639#[derive(Debug, Clone, Serialize, Deserialize, Default)]
642#[serde(rename_all = "camelCase")]
643pub struct GenericIssueDetails {
644 pub errorType: GenericIssueErrorType,
647
648 #[serde(skip_serializing_if = "Option::is_none")]
649 pub frameId: Option<crate::page::FrameId>,
650
651 #[serde(skip_serializing_if = "Option::is_none")]
652 pub violatingNodeId: Option<crate::dom::BackendNodeId>,
653
654 #[serde(skip_serializing_if = "Option::is_none")]
655 pub violatingNodeAttribute: Option<String>,
656
657 #[serde(skip_serializing_if = "Option::is_none")]
658 pub request: Option<AffectedRequest>,
659}
660
661#[derive(Debug, Clone, Serialize, Deserialize, Default)]
665#[serde(rename_all = "camelCase")]
666pub struct DeprecationIssueDetails {
667
668 #[serde(skip_serializing_if = "Option::is_none")]
669 pub affectedFrame: Option<AffectedFrame>,
670
671 pub sourceCodeLocation: SourceCodeLocation,
672 #[serde(rename = "type")]
675 pub type_: String,
676}
677
678#[derive(Debug, Clone, Serialize, Deserialize, Default)]
685#[serde(rename_all = "camelCase")]
686pub struct BounceTrackingIssueDetails {
687
688 pub trackingSites: Vec<String>,
689}
690
691#[derive(Debug, Clone, Serialize, Deserialize, Default)]
698#[serde(rename_all = "camelCase")]
699pub struct CookieDeprecationMetadataIssueDetails {
700
701 pub allowedSites: Vec<String>,
702
703 pub optOutPercentage: f64,
704
705 pub isOptOutTopLevel: bool,
706
707 pub operation: CookieOperation,
708}
709
710
711#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
712pub enum ClientHintIssueReason {
713 #[default]
714 MetaTagAllowListInvalidOrigin,
715 MetaTagModifiedHTML,
716}
717
718
719#[derive(Debug, Clone, Serialize, Deserialize, Default)]
720#[serde(rename_all = "camelCase")]
721pub struct FederatedAuthRequestIssueDetails {
722
723 pub federatedAuthRequestIssueReason: FederatedAuthRequestIssueReason,
724}
725
726#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
732pub enum FederatedAuthRequestIssueReason {
733 #[default]
734 ShouldEmbargo,
735 TooManyRequests,
736 WellKnownHttpNotFound,
737 WellKnownNoResponse,
738 WellKnownInvalidResponse,
739 WellKnownListEmpty,
740 WellKnownInvalidContentType,
741 ConfigNotInWellKnown,
742 WellKnownTooBig,
743 ConfigHttpNotFound,
744 ConfigNoResponse,
745 ConfigInvalidResponse,
746 ConfigInvalidContentType,
747 IdpNotPotentiallyTrustworthy,
748 DisabledInSettings,
749 DisabledInFlags,
750 ErrorFetchingSignin,
751 InvalidSigninResponse,
752 AccountsHttpNotFound,
753 AccountsNoResponse,
754 AccountsInvalidResponse,
755 AccountsListEmpty,
756 AccountsInvalidContentType,
757 IdTokenHttpNotFound,
758 IdTokenNoResponse,
759 IdTokenInvalidResponse,
760 IdTokenIdpErrorResponse,
761 IdTokenCrossSiteIdpErrorResponse,
762 IdTokenInvalidRequest,
763 IdTokenInvalidContentType,
764 ErrorIdToken,
765 Canceled,
766 RpPageNotVisible,
767 SilentMediationFailure,
768 NotSignedInWithIdp,
769 MissingTransientUserActivation,
770 ReplacedByActiveMode,
771 RelyingPartyOriginIsOpaque,
772 TypeNotMatching,
773 UiDismissedNoEmbargo,
774 CorsError,
775 SuppressedBySegmentationPlatform,
776}
777
778
779#[derive(Debug, Clone, Serialize, Deserialize, Default)]
780#[serde(rename_all = "camelCase")]
781pub struct FederatedAuthUserInfoRequestIssueDetails {
782
783 pub federatedAuthUserInfoRequestIssueReason: FederatedAuthUserInfoRequestIssueReason,
784}
785
786#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
791pub enum FederatedAuthUserInfoRequestIssueReason {
792 #[default]
793 NotSameOrigin,
794 NotIframe,
795 NotPotentiallyTrustworthy,
796 NoApiPermission,
797 NotSignedInWithIdp,
798 NoAccountSharingPermission,
799 InvalidConfigOrWellKnown,
800 InvalidAccountsResponse,
801 NoReturningUserFromFetchedAccounts,
802}
803
804#[derive(Debug, Clone, Serialize, Deserialize, Default)]
808#[serde(rename_all = "camelCase")]
809pub struct ClientHintIssueDetails {
810
811 pub sourceCodeLocation: SourceCodeLocation,
812
813 pub clientHintIssueReason: ClientHintIssueReason,
814}
815
816
817#[derive(Debug, Clone, Serialize, Deserialize, Default)]
818#[serde(rename_all = "camelCase")]
819pub struct FailedRequestInfo {
820 pub url: String,
823 pub failureMessage: String,
826
827 #[serde(skip_serializing_if = "Option::is_none")]
828 pub requestId: Option<crate::network::RequestId>,
829}
830
831
832#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
833pub enum PartitioningBlobURLInfo {
834 #[default]
835 BlockedCrossPartitionFetching,
836 EnforceNoopenerForNavigation,
837}
838
839
840#[derive(Debug, Clone, Serialize, Deserialize, Default)]
841#[serde(rename_all = "camelCase")]
842pub struct PartitioningBlobURLIssueDetails {
843 pub url: String,
846 pub partitioningBlobURLInfo: PartitioningBlobURLInfo,
849}
850
851
852#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
853pub enum ElementAccessibilityIssueReason {
854 #[default]
855 DisallowedSelectChild,
856 DisallowedOptGroupChild,
857 NonPhrasingContentOptionChild,
858 InteractiveContentOptionChild,
859 InteractiveContentLegendChild,
860 InteractiveContentSummaryDescendant,
861}
862
863#[derive(Debug, Clone, Serialize, Deserialize, Default)]
866#[serde(rename_all = "camelCase")]
867pub struct ElementAccessibilityIssueDetails {
868
869 pub nodeId: crate::dom::BackendNodeId,
870
871 pub elementAccessibilityIssueReason: ElementAccessibilityIssueReason,
872
873 pub hasDisallowedAttributes: bool,
874}
875
876
877#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
878pub enum StyleSheetLoadingIssueReason {
879 #[default]
880 LateImportRule,
881 RequestFailed,
882}
883
884#[derive(Debug, Clone, Serialize, Deserialize, Default)]
887#[serde(rename_all = "camelCase")]
888pub struct StylesheetLoadingIssueDetails {
889 pub sourceCodeLocation: SourceCodeLocation,
892 pub styleSheetLoadingIssueReason: StyleSheetLoadingIssueReason,
895 #[serde(skip_serializing_if = "Option::is_none")]
898 pub failedRequestInfo: Option<FailedRequestInfo>,
899}
900
901
902#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
903pub enum PropertyRuleIssueReason {
904 #[default]
905 InvalidSyntax,
906 InvalidInitialValue,
907 InvalidInherits,
908 InvalidName,
909}
910
911#[derive(Debug, Clone, Serialize, Deserialize, Default)]
915#[serde(rename_all = "camelCase")]
916pub struct PropertyRuleIssueDetails {
917 pub sourceCodeLocation: SourceCodeLocation,
920 pub propertyRuleIssueReason: PropertyRuleIssueReason,
923 #[serde(skip_serializing_if = "Option::is_none")]
926 pub propertyValue: Option<String>,
927}
928
929
930#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
931pub enum UserReidentificationIssueType {
932 #[default]
933 BlockedFrameNavigation,
934 BlockedSubresource,
935 NoisedCanvasReadback,
936}
937
938#[derive(Debug, Clone, Serialize, Deserialize, Default)]
942#[serde(rename_all = "camelCase")]
943pub struct UserReidentificationIssueDetails {
944
945 #[serde(rename = "type")]
946 pub type_: UserReidentificationIssueType,
947 #[serde(skip_serializing_if = "Option::is_none")]
950 pub request: Option<AffectedRequest>,
951 #[serde(skip_serializing_if = "Option::is_none")]
954 pub sourceCodeLocation: Option<SourceCodeLocation>,
955}
956
957
958#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
959pub enum PermissionElementIssueType {
960 #[default]
961 InvalidType,
962 FencedFrameDisallowed,
963 CspFrameAncestorsMissing,
964 PermissionsPolicyBlocked,
965 PaddingRightUnsupported,
966 PaddingBottomUnsupported,
967 InsetBoxShadowUnsupported,
968 RequestInProgress,
969 UntrustedEvent,
970 RegistrationFailed,
971 TypeNotSupported,
972 InvalidTypeActivation,
973 SecurityChecksFailed,
974 ActivationDisabled,
975 GeolocationDeprecated,
976 InvalidDisplayStyle,
977 NonOpaqueColor,
978 LowContrast,
979 FontSizeTooSmall,
980 FontSizeTooLarge,
981 InvalidSizeValue,
982}
983
984#[derive(Debug, Clone, Serialize, Deserialize, Default)]
987#[serde(rename_all = "camelCase")]
988pub struct PermissionElementIssueDetails {
989
990 pub issueType: PermissionElementIssueType,
991 #[serde(skip_serializing_if = "Option::is_none")]
994 #[serde(rename = "type")]
995 pub type_: Option<String>,
996 #[serde(skip_serializing_if = "Option::is_none")]
999 pub nodeId: Option<crate::dom::BackendNodeId>,
1000 #[serde(skip_serializing_if = "Option::is_none")]
1003 pub isWarning: Option<bool>,
1004 #[serde(skip_serializing_if = "Option::is_none")]
1008 pub permissionName: Option<String>,
1009 #[serde(skip_serializing_if = "Option::is_none")]
1012 pub occluderNodeInfo: Option<String>,
1013 #[serde(skip_serializing_if = "Option::is_none")]
1016 pub occluderParentNodeInfo: Option<String>,
1017 #[serde(skip_serializing_if = "Option::is_none")]
1020 pub disableReason: Option<String>,
1021}
1022
1023#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1027#[serde(rename_all = "camelCase")]
1028pub struct SelectivePermissionsInterventionIssueDetails {
1029 pub apiName: String,
1032 pub adAncestry: crate::network::AdAncestry,
1035 #[serde(skip_serializing_if = "Option::is_none")]
1038 pub stackTrace: Option<crate::runtime::StackTrace>,
1039}
1040
1041#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
1046pub enum InspectorIssueCode {
1047 #[default]
1048 CookieIssue,
1049 MixedContentIssue,
1050 BlockedByResponseIssue,
1051 HeavyAdIssue,
1052 ContentSecurityPolicyIssue,
1053 SharedArrayBufferIssue,
1054 CorsIssue,
1055 AttributionReportingIssue,
1056 QuirksModeIssue,
1057 PartitioningBlobURLIssue,
1058 NavigatorUserAgentIssue,
1059 GenericIssue,
1060 DeprecationIssue,
1061 ClientHintIssue,
1062 FederatedAuthRequestIssue,
1063 BounceTrackingIssue,
1064 CookieDeprecationMetadataIssue,
1065 StylesheetLoadingIssue,
1066 FederatedAuthUserInfoRequestIssue,
1067 PropertyRuleIssue,
1068 SharedDictionaryIssue,
1069 ElementAccessibilityIssue,
1070 SRIMessageSignatureIssue,
1071 UnencodedDigestIssue,
1072 ConnectionAllowlistIssue,
1073 UserReidentificationIssue,
1074 PermissionElementIssue,
1075 PerformanceIssue,
1076 SelectivePermissionsInterventionIssue,
1077}
1078
1079#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1084#[serde(rename_all = "camelCase")]
1085pub struct InspectorIssueDetails {
1086
1087 #[serde(skip_serializing_if = "Option::is_none")]
1088 pub cookieIssueDetails: Option<CookieIssueDetails>,
1089
1090 #[serde(skip_serializing_if = "Option::is_none")]
1091 pub mixedContentIssueDetails: Option<MixedContentIssueDetails>,
1092
1093 #[serde(skip_serializing_if = "Option::is_none")]
1094 pub blockedByResponseIssueDetails: Option<BlockedByResponseIssueDetails>,
1095
1096 #[serde(skip_serializing_if = "Option::is_none")]
1097 pub heavyAdIssueDetails: Option<HeavyAdIssueDetails>,
1098
1099 #[serde(skip_serializing_if = "Option::is_none")]
1100 pub contentSecurityPolicyIssueDetails: Option<ContentSecurityPolicyIssueDetails>,
1101
1102 #[serde(skip_serializing_if = "Option::is_none")]
1103 pub sharedArrayBufferIssueDetails: Option<SharedArrayBufferIssueDetails>,
1104
1105 #[serde(skip_serializing_if = "Option::is_none")]
1106 pub corsIssueDetails: Option<CorsIssueDetails>,
1107
1108 #[serde(skip_serializing_if = "Option::is_none")]
1109 pub attributionReportingIssueDetails: Option<AttributionReportingIssueDetails>,
1110
1111 #[serde(skip_serializing_if = "Option::is_none")]
1112 pub quirksModeIssueDetails: Option<QuirksModeIssueDetails>,
1113
1114 #[serde(skip_serializing_if = "Option::is_none")]
1115 pub partitioningBlobURLIssueDetails: Option<PartitioningBlobURLIssueDetails>,
1116
1117 #[serde(skip_serializing_if = "Option::is_none")]
1118 pub navigatorUserAgentIssueDetails: Option<NavigatorUserAgentIssueDetails>,
1119
1120 #[serde(skip_serializing_if = "Option::is_none")]
1121 pub genericIssueDetails: Option<GenericIssueDetails>,
1122
1123 #[serde(skip_serializing_if = "Option::is_none")]
1124 pub deprecationIssueDetails: Option<DeprecationIssueDetails>,
1125
1126 #[serde(skip_serializing_if = "Option::is_none")]
1127 pub clientHintIssueDetails: Option<ClientHintIssueDetails>,
1128
1129 #[serde(skip_serializing_if = "Option::is_none")]
1130 pub federatedAuthRequestIssueDetails: Option<FederatedAuthRequestIssueDetails>,
1131
1132 #[serde(skip_serializing_if = "Option::is_none")]
1133 pub bounceTrackingIssueDetails: Option<BounceTrackingIssueDetails>,
1134
1135 #[serde(skip_serializing_if = "Option::is_none")]
1136 pub cookieDeprecationMetadataIssueDetails: Option<CookieDeprecationMetadataIssueDetails>,
1137
1138 #[serde(skip_serializing_if = "Option::is_none")]
1139 pub stylesheetLoadingIssueDetails: Option<StylesheetLoadingIssueDetails>,
1140
1141 #[serde(skip_serializing_if = "Option::is_none")]
1142 pub propertyRuleIssueDetails: Option<PropertyRuleIssueDetails>,
1143
1144 #[serde(skip_serializing_if = "Option::is_none")]
1145 pub federatedAuthUserInfoRequestIssueDetails: Option<FederatedAuthUserInfoRequestIssueDetails>,
1146
1147 #[serde(skip_serializing_if = "Option::is_none")]
1148 pub sharedDictionaryIssueDetails: Option<SharedDictionaryIssueDetails>,
1149
1150 #[serde(skip_serializing_if = "Option::is_none")]
1151 pub elementAccessibilityIssueDetails: Option<ElementAccessibilityIssueDetails>,
1152
1153 #[serde(skip_serializing_if = "Option::is_none")]
1154 pub sriMessageSignatureIssueDetails: Option<SRIMessageSignatureIssueDetails>,
1155
1156 #[serde(skip_serializing_if = "Option::is_none")]
1157 pub unencodedDigestIssueDetails: Option<UnencodedDigestIssueDetails>,
1158
1159 #[serde(skip_serializing_if = "Option::is_none")]
1160 pub connectionAllowlistIssueDetails: Option<ConnectionAllowlistIssueDetails>,
1161
1162 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub userReidentificationIssueDetails: Option<UserReidentificationIssueDetails>,
1164
1165 #[serde(skip_serializing_if = "Option::is_none")]
1166 pub permissionElementIssueDetails: Option<PermissionElementIssueDetails>,
1167
1168 #[serde(skip_serializing_if = "Option::is_none")]
1169 pub performanceIssueDetails: Option<PerformanceIssueDetails>,
1170
1171 #[serde(skip_serializing_if = "Option::is_none")]
1172 pub selectivePermissionsInterventionIssueDetails: Option<SelectivePermissionsInterventionIssueDetails>,
1173}
1174
1175pub type IssueId = String;
1179
1180#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1183#[serde(rename_all = "camelCase")]
1184pub struct InspectorIssue {
1185
1186 pub code: InspectorIssueCode,
1187
1188 pub details: InspectorIssueDetails,
1189 #[serde(skip_serializing_if = "Option::is_none")]
1193 pub issueId: Option<IssueId>,
1194}
1195
1196#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1200#[serde(rename_all = "camelCase")]
1201pub struct GetEncodedResponseParams {
1202 pub requestId: crate::network::RequestId,
1205 pub encoding: String,
1208 #[serde(skip_serializing_if = "Option::is_none")]
1211 pub quality: Option<f64>,
1212 #[serde(skip_serializing_if = "Option::is_none")]
1215 pub sizeOnly: Option<bool>,
1216}
1217
1218#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1222#[serde(rename_all = "camelCase")]
1223pub struct GetEncodedResponseReturns {
1224 #[serde(skip_serializing_if = "Option::is_none")]
1227 pub body: Option<String>,
1228 pub originalSize: u64,
1231 pub encodedSize: u64,
1234}
1235
1236impl GetEncodedResponseParams { pub const METHOD: &'static str = "Audits.getEncodedResponse"; }
1237
1238impl crate::CdpCommand for GetEncodedResponseParams {
1239 const METHOD: &'static str = "Audits.getEncodedResponse";
1240 type Response = GetEncodedResponseReturns;
1241}
1242
1243#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1244pub struct DisableParams {}
1245
1246impl DisableParams { pub const METHOD: &'static str = "Audits.disable"; }
1247
1248impl crate::CdpCommand for DisableParams {
1249 const METHOD: &'static str = "Audits.disable";
1250 type Response = crate::EmptyReturns;
1251}
1252
1253#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1254pub struct EnableParams {}
1255
1256impl EnableParams { pub const METHOD: &'static str = "Audits.enable"; }
1257
1258impl crate::CdpCommand for EnableParams {
1259 const METHOD: &'static str = "Audits.enable";
1260 type Response = crate::EmptyReturns;
1261}
1262
1263#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1267#[serde(rename_all = "camelCase")]
1268pub struct CheckFormsIssuesReturns {
1269
1270 pub formIssues: Vec<GenericIssueDetails>,
1271}
1272
1273#[derive(Debug, Clone, Serialize, Deserialize, Default)]
1274pub struct CheckFormsIssuesParams {}
1275
1276impl CheckFormsIssuesParams { pub const METHOD: &'static str = "Audits.checkFormsIssues"; }
1277
1278impl crate::CdpCommand for CheckFormsIssuesParams {
1279 const METHOD: &'static str = "Audits.checkFormsIssues";
1280 type Response = CheckFormsIssuesReturns;
1281}