diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc | 225 |
1 files changed, 177 insertions, 48 deletions
diff --git a/chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc b/chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc index 7dfae515abc..de81a8e3df5 100644 --- a/chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc +++ b/chromium/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc @@ -153,31 +153,43 @@ void InspectorAuditsAgent::InnerEnable() { } namespace { -std::unique_ptr<protocol::Array<protocol::Audits::AffectedCookie>> BuildCookies( - const WTF::Vector<mojom::blink::AffectedCookiePtr>& cookies) { - auto result = - std::make_unique<protocol::Array<protocol::Audits::AffectedCookie>>(); - for (const auto& cookie : cookies) { - auto protocol_cookie = std::move(protocol::Audits::AffectedCookie::create() - .setName(cookie->name) - .setPath(cookie->path) - .setDomain(cookie->domain)); - if (cookie->site_for_cookies) { - protocol_cookie.setSiteForCookies(*cookie->site_for_cookies); - } - result->push_back(protocol_cookie.build()); +std::unique_ptr<protocol::Audits::AffectedCookie> BuildAffectedCookie( + const mojom::blink::AffectedCookiePtr& cookie) { + auto protocol_cookie = std::move(protocol::Audits::AffectedCookie::create() + .setName(cookie->name) + .setPath(cookie->path) + .setDomain(cookie->domain)); + return protocol_cookie.build(); +} + +std::unique_ptr<protocol::Audits::AffectedRequest> BuildAffectedRequest( + const mojom::blink::AffectedRequestPtr& request) { + auto protocol_request = protocol::Audits::AffectedRequest::create() + .setRequestId(request->request_id) + .build(); + if (!request->url.IsEmpty()) { + protocol_request->setUrl(request->url); } - return result; + return protocol_request; +} + +std::unique_ptr<protocol::Audits::AffectedFrame> BuildAffectedFrame( + const mojom::blink::AffectedFramePtr& frame) { + return protocol::Audits::AffectedFrame::create() + .setFrameId(frame->frame_id) + .build(); } + blink::protocol::String InspectorIssueCodeValue( mojom::blink::InspectorIssueCode code) { switch (code) { case mojom::blink::InspectorIssueCode::kSameSiteCookieIssue: return protocol::Audits::InspectorIssueCodeEnum::SameSiteCookieIssue; + case mojom::blink::InspectorIssueCode::kMixedContentIssue: + return protocol::Audits::InspectorIssueCodeEnum::MixedContentIssue; } - NOTREACHED(); - return "unknown"; } + protocol::String BuildCookieExclusionReason( mojom::blink::SameSiteCookieExclusionReason exclusion_reason) { switch (exclusion_reason) { @@ -190,9 +202,8 @@ protocol::String BuildCookieExclusionReason( return protocol::Audits::SameSiteCookieExclusionReasonEnum:: ExcludeSameSiteNoneInsecure; } - NOTREACHED(); - return "unknown"; } + std::unique_ptr<std::vector<blink::protocol::String>> BuildCookieExclusionReasons( const WTF::Vector<mojom::blink::SameSiteCookieExclusionReason>& @@ -204,6 +215,7 @@ BuildCookieExclusionReasons( } return protocol_exclusion_reasons; } + protocol::String BuildCookieWarningReason( mojom::blink::SameSiteCookieWarningReason warning_reason) { switch (warning_reason) { @@ -220,33 +232,28 @@ protocol::String BuildCookieWarningReason( return protocol::Audits::SameSiteCookieWarningReasonEnum:: WarnSameSiteUnspecifiedLaxAllowUnsafe; case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeSecureUrlMethodUnsafe: - return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeSecureUrlMethodUnsafe; - case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeSecureUrlLax: + WarnSameSiteStrictLaxDowngradeStrict: return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeSecureUrlLax; + WarnSameSiteStrictLaxDowngradeStrict; case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeSecureUrlStrict: + WarnSameSiteStrictCrossDowngradeStrict: return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeSecureUrlStrict; + WarnSameSiteStrictCrossDowngradeStrict; case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeInsecureUrlMethodUnsafe: + WarnSameSiteStrictCrossDowngradeLax: return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeInsecureUrlMethodUnsafe; + WarnSameSiteStrictCrossDowngradeLax; case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeInsecureUrlLax: + WarnSameSiteLaxCrossDowngradeStrict: return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeInsecureUrlLax; + WarnSameSiteLaxCrossDowngradeStrict; case blink::mojom::blink::SameSiteCookieWarningReason:: - WarnSameSiteCrossSchemeInsecureUrlStrict: + WarnSameSiteLaxCrossDowngradeLax: return protocol::Audits::SameSiteCookieWarningReasonEnum:: - WarnSameSiteCrossSchemeInsecureUrlStrict; + WarnSameSiteLaxCrossDowngradeLax; } - NOTREACHED(); - return "unknown"; } + std::unique_ptr<std::vector<blink::protocol::String>> BuildCookieWarningReasons( const WTF::Vector<mojom::blink::SameSiteCookieWarningReason>& warning_reasons) { @@ -257,32 +264,154 @@ std::unique_ptr<std::vector<blink::protocol::String>> BuildCookieWarningReasons( } return protocol_warning_reasons; } +protocol::String BuildCookieOperation( + mojom::blink::SameSiteCookieOperation operation) { + switch (operation) { + case blink::mojom::blink::SameSiteCookieOperation::SetCookie: + return protocol::Audits::SameSiteCookieOperationEnum::SetCookie; + case blink::mojom::blink::SameSiteCookieOperation::ReadCookie: + return protocol::Audits::SameSiteCookieOperationEnum::ReadCookie; + } +} + +protocol::String BuildMixedContentResolutionStatus( + mojom::blink::MixedContentResolutionStatus resolution_type) { + switch (resolution_type) { + case blink::mojom::blink::MixedContentResolutionStatus::MixedContentBlocked: + return protocol::Audits::MixedContentResolutionStatusEnum:: + MixedContentBlocked; + case blink::mojom::blink::MixedContentResolutionStatus:: + MixedContentAutomaticallyUpgraded: + return protocol::Audits::MixedContentResolutionStatusEnum:: + MixedContentAutomaticallyUpgraded; + case blink::mojom::blink::MixedContentResolutionStatus::MixedContentWarning: + return protocol::Audits::MixedContentResolutionStatusEnum:: + MixedContentWarning; + } +} + +protocol::String BuildMixedContentResourceType( + mojom::blink::RequestContextType request_context) { + switch (request_context) { + case blink::mojom::blink::RequestContextType::AUDIO: + return protocol::Audits::MixedContentResourceTypeEnum::Audio; + case blink::mojom::blink::RequestContextType::BEACON: + return protocol::Audits::MixedContentResourceTypeEnum::Beacon; + case blink::mojom::blink::RequestContextType::CSP_REPORT: + return protocol::Audits::MixedContentResourceTypeEnum::CSPReport; + case blink::mojom::blink::RequestContextType::DOWNLOAD: + return protocol::Audits::MixedContentResourceTypeEnum::Download; + case blink::mojom::blink::RequestContextType::EMBED: + return protocol::Audits::MixedContentResourceTypeEnum::PluginResource; + case blink::mojom::blink::RequestContextType::EVENT_SOURCE: + return protocol::Audits::MixedContentResourceTypeEnum::EventSource; + case blink::mojom::blink::RequestContextType::FAVICON: + return protocol::Audits::MixedContentResourceTypeEnum::Favicon; + case blink::mojom::blink::RequestContextType::FETCH: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::FONT: + return protocol::Audits::MixedContentResourceTypeEnum::Font; + case blink::mojom::blink::RequestContextType::FORM: + return protocol::Audits::MixedContentResourceTypeEnum::Form; + case blink::mojom::blink::RequestContextType::FRAME: + return protocol::Audits::MixedContentResourceTypeEnum::Frame; + case blink::mojom::blink::RequestContextType::HYPERLINK: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::IFRAME: + return protocol::Audits::MixedContentResourceTypeEnum::Frame; + case blink::mojom::blink::RequestContextType::IMAGE: + return protocol::Audits::MixedContentResourceTypeEnum::Image; + case blink::mojom::blink::RequestContextType::IMAGE_SET: + return protocol::Audits::MixedContentResourceTypeEnum::Image; + case blink::mojom::blink::RequestContextType::IMPORT: + return protocol::Audits::MixedContentResourceTypeEnum::Import; + case blink::mojom::blink::RequestContextType::INTERNAL: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::LOCATION: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::MANIFEST: + return protocol::Audits::MixedContentResourceTypeEnum::Manifest; + case blink::mojom::blink::RequestContextType::OBJECT: + return protocol::Audits::MixedContentResourceTypeEnum::PluginResource; + case blink::mojom::blink::RequestContextType::PING: + return protocol::Audits::MixedContentResourceTypeEnum::Ping; + case blink::mojom::blink::RequestContextType::PLUGIN: + return protocol::Audits::MixedContentResourceTypeEnum::PluginData; + case blink::mojom::blink::RequestContextType::PREFETCH: + return protocol::Audits::MixedContentResourceTypeEnum::Prefetch; + case blink::mojom::blink::RequestContextType::SCRIPT: + return protocol::Audits::MixedContentResourceTypeEnum::Script; + case blink::mojom::blink::RequestContextType::SERVICE_WORKER: + return protocol::Audits::MixedContentResourceTypeEnum::ServiceWorker; + case blink::mojom::blink::RequestContextType::SHARED_WORKER: + return protocol::Audits::MixedContentResourceTypeEnum::SharedWorker; + case blink::mojom::blink::RequestContextType::STYLE: + return protocol::Audits::MixedContentResourceTypeEnum::Stylesheet; + case blink::mojom::blink::RequestContextType::SUBRESOURCE: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::TRACK: + return protocol::Audits::MixedContentResourceTypeEnum::Track; + case blink::mojom::blink::RequestContextType::UNSPECIFIED: + return protocol::Audits::MixedContentResourceTypeEnum::Resource; + case blink::mojom::blink::RequestContextType::VIDEO: + return protocol::Audits::MixedContentResourceTypeEnum::Video; + case blink::mojom::blink::RequestContextType::WORKER: + return protocol::Audits::MixedContentResourceTypeEnum::Worker; + case blink::mojom::blink::RequestContextType::XML_HTTP_REQUEST: + return protocol::Audits::MixedContentResourceTypeEnum::XMLHttpRequest; + case blink::mojom::blink::RequestContextType::XSLT: + return protocol::Audits::MixedContentResourceTypeEnum::XSLT; + } +} + } // namespace void InspectorAuditsAgent::InspectorIssueAdded(InspectorIssue* issue) { auto issueDetails = protocol::Audits::InspectorIssueDetails::create(); - if (issue->Details()->sameSiteCookieIssueDetails) { + if (const auto* d = issue->Details()->sameSiteCookieIssueDetails.get()) { auto sameSiteCookieDetails = - protocol::Audits::SameSiteCookieIssueDetails::create() - .setCookieExclusionReasons(BuildCookieExclusionReasons( - issue->Details()->sameSiteCookieIssueDetails->exclusionReason)) - .setCookieWarningReasons(BuildCookieWarningReasons( - issue->Details()->sameSiteCookieIssueDetails->warningReason)) - .build(); - issueDetails.setSameSiteCookieIssueDetails( - std::move(sameSiteCookieDetails)); + std::move(protocol::Audits::SameSiteCookieIssueDetails::create() + .setCookie(BuildAffectedCookie(d->cookie)) + .setCookieExclusionReasons( + BuildCookieExclusionReasons(d->exclusionReason)) + .setCookieWarningReasons( + BuildCookieWarningReasons(d->warningReason)) + .setOperation(BuildCookieOperation(d->operation))); + + if (d->site_for_cookies) { + sameSiteCookieDetails.setSiteForCookies(*d->site_for_cookies); + } + if (d->cookie_url) { + sameSiteCookieDetails.setCookieUrl(*d->cookie_url); + } + if (d->request) { + sameSiteCookieDetails.setRequest(BuildAffectedRequest(d->request)); + } + issueDetails.setSameSiteCookieIssueDetails(sameSiteCookieDetails.build()); } - auto affectedResources = - protocol::Audits::AffectedResources::create() - .setCookies(BuildCookies(issue->Resources()->cookies)) - .build(); + if (const auto* d = issue->Details()->mixed_content_issue_details.get()) { + auto mixedContentDetails = + protocol::Audits::MixedContentIssueDetails::create() + .setResourceType(BuildMixedContentResourceType(d->request_context)) + .setResolutionStatus( + BuildMixedContentResolutionStatus(d->resolution_status)) + .setInsecureURL(d->insecure_url) + .setMainResourceURL(d->main_resource_url) + .build(); + if (d->request) { + mixedContentDetails->setRequest(BuildAffectedRequest(d->request)); + } + if (d->frame) { + mixedContentDetails->setFrame(BuildAffectedFrame(d->frame)); + } + issueDetails.setMixedContentIssueDetails(std::move(mixedContentDetails)); + } auto inspector_issue = protocol::Audits::InspectorIssue::create() .setCode(InspectorIssueCodeValue(issue->Code())) .setDetails(issueDetails.build()) - .setResources(std::move(affectedResources)) .build(); GetFrontend()->issueAdded(std::move(inspector_issue)); |