| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| import "url/mojom/url.mojom"; |
| import "services/network/public/mojom/cookie_manager.mojom"; |
| import "services/network/public/mojom/blocked_by_response_reason.mojom"; |
| import "third_party/blink/public/mojom/fetch/fetch_api_request.mojom"; |
| |
| // A code that uniquely identifies an issue. This type should be descriptive |
| // enough for the front-end to provide a clear description of the issue. |
| enum InspectorIssueCode { |
| kSameSiteCookieIssue, |
| kMixedContentIssue, |
| kBlockedByResponseIssue, |
| kContentSecurityPolicyIssue, |
| }; |
| |
| // Information about a cookie that is affected by an issue. |
| struct AffectedCookie { |
| string name; |
| string path; |
| string domain; |
| }; |
| |
| struct AffectedRequest { |
| string request_id; |
| string? url; |
| }; |
| |
| struct AffectedFrame { |
| string frame_id; |
| }; |
| |
| struct BlockedByResponseIssueDetails { |
| AffectedRequest request; |
| AffectedFrame? parentFrame; |
| AffectedFrame? blockedFrame; |
| network.mojom.BlockedByResponseReason reason; |
| }; |
| |
| enum HeavyAdResolutionStatus { |
| kHeavyAdBlocked, |
| kHeavyAdWarning, |
| }; |
| |
| enum HeavyAdReason { |
| kNetworkTotalLimit, |
| kCpuTotalLimit, |
| kCpuPeakLimit, |
| }; |
| |
| enum MixedContentResolutionStatus { |
| kMixedContentBlocked, |
| kMixedContentAutomaticallyUpgraded, |
| kMixedContentWarning, |
| }; |
| |
| struct MixedContentIssueDetails { |
| RequestContextType request_context; |
| MixedContentResolutionStatus resolution_status; |
| string insecure_url; |
| string main_resource_url; |
| AffectedRequest? request; |
| AffectedFrame? frame; |
| }; |
| |
| enum ContentSecurityPolicyViolationType { |
| kInlineViolation, |
| kEvalViolation, |
| kURLViolation, |
| kTrustedTypesSinkViolation, |
| kTrustedTypesPolicyViolation, |
| }; |
| |
| struct ContentSecurityPolicyIssueDetails { |
| url.mojom.Url? blocked_url; |
| string violated_directive; |
| ContentSecurityPolicyViolationType content_security_policy_violation_type; |
| AffectedFrame? frame_ancestor; |
| SourceCodeLocation? source_code_location; |
| }; |
| |
| struct SourceCodeLocation { |
| string url; |
| uint32 line_number; |
| uint32 column_number; |
| }; |
| |
| enum SameSiteCookieOperation { |
| kSetCookie, kReadCookie |
| }; |
| |
| enum SameSiteCookieExclusionReason { |
| kExcludeSameSiteUnspecifiedTreatedAsLax, |
| kExcludeSameSiteNoneInsecure, |
| kExcludeSameSiteLax, |
| kExcludeSameSiteStrict, |
| }; |
| |
| enum SameSiteCookieWarningReason { |
| kWarnSameSiteUnspecifiedCrossSiteContext, |
| kWarnSameSiteNoneInsecure, |
| kWarnSameSiteUnspecifiedLaxAllowUnsafe, |
| kWarnSameSiteStrictLaxDowngradeStrict, |
| kWarnSameSiteStrictCrossDowngradeStrict, |
| kWarnSameSiteStrictCrossDowngradeLax, |
| kWarnSameSiteLaxCrossDowngradeStrict, |
| kWarnSameSiteLaxCrossDowngradeLax, |
| }; |
| |
| // Specific information about |kSameSiteCookieIssue| type issues. |
| struct SameSiteCookieIssueDetails { |
| AffectedCookie cookie; |
| array<SameSiteCookieExclusionReason> exclusion_reason; |
| array<SameSiteCookieWarningReason> warning_reason; |
| SameSiteCookieOperation operation; |
| url.mojom.Url? site_for_cookies; |
| url.mojom.Url? cookie_url; |
| AffectedRequest? request; |
| }; |
| |
| // A collection of optional fields that may store additional data depending |
| // on the issue code. |
| struct InspectorIssueDetails { |
| SameSiteCookieIssueDetails? samesite_cookie_issue_details; |
| MixedContentIssueDetails? mixed_content_issue_details; |
| BlockedByResponseIssueDetails? blocked_by_response_issue_details; |
| ContentSecurityPolicyIssueDetails? csp_issue_details; |
| }; |
| |
| struct InspectorIssueInfo { |
| InspectorIssueCode code; |
| InspectorIssueDetails details; |
| }; |