blob: 777e60829cb8cc84510664f921754e95a34d6ec3 [file] [log] [blame]
// 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,
kSharedArrayBufferIssue,
kTrustedWebActivityIssue,
kHeavyAdIssue,
kLowTextContrastIssue,
};
// 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 AffectedLocation {
string? script_id;
string? url;
uint32 line = 0; // Zero-based as the DevTools front-end expects it.
uint32 column = 0;
};
struct BlockedByResponseIssueDetails {
AffectedRequest request;
AffectedFrame? parentFrame;
AffectedFrame? blockedFrame;
network.mojom.BlockedByResponseReason reason;
};
enum HeavyAdResolutionStatus {
kHeavyAdBlocked,
kHeavyAdWarning,
};
enum HeavyAdReason {
kNetworkTotalLimit,
kCpuTotalLimit,
kCpuPeakLimit,
};
struct HeavyAdIssueDetails {
HeavyAdResolutionStatus resolution;
HeavyAdReason reason;
AffectedFrame frame;
};
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;
bool is_report_only;
ContentSecurityPolicyViolationType content_security_policy_violation_type;
AffectedFrame? frame_ancestor;
AffectedLocation? affected_location;
// 0 is not a valid node id and is used to indicate absence.
int32 violating_node_id = 0;
};
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;
};
enum SharedArrayBufferIssueType {
kTransferIssue,
kCreationIssue,
};
struct SharedArrayBufferIssueDetails {
AffectedLocation? affected_location;
bool is_warning;
SharedArrayBufferIssueType type;
};
enum TwaQualityEnforcementViolationType {
kHttpError,
kUnavailableOffline,
kDigitalAssetLinks,
};
struct TrustedWebActivityIssueDetails {
url.mojom.Url url;
TwaQualityEnforcementViolationType violation_type;
// 0 is not a valid code and is used to indicate absence.
int32 http_error_code = 0;
string? package_name;
string? signature;
};
struct LowTextContrastIssue {
int32 violating_node_id;
string violating_node_selector;
float contrast_ratio;
float threshold_aa;
float threshold_aaa;
string font_size;
string font_weight;
};
// 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;
SharedArrayBufferIssueDetails? sab_issue_details;
TrustedWebActivityIssueDetails? twa_issue_details;
HeavyAdIssueDetails? heavy_ad_issue_details;
LowTextContrastIssue? low_text_contrast_details;
};
struct InspectorIssueInfo {
InspectorIssueCode code;
InspectorIssueDetails details;
};