blob: b1ec5b0528d0bfbdb1f8519ad8eb88642891a86f [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,
};
// 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;
};