Commit 0144089b authored by Antonio Sartori's avatar Antonio Sartori Committed by Chromium LUCI CQ

CSP: Simplify conversion to WebContentSecurityPolicy

With this CL we store directives names in WebContentSecurityPolicy
using the enum network::mojom::CSPDirectiveName instead of using
strings. This small changes simplifies the type conversion
network::mojom::blink::ContentSecurityPolicy ->
WebContentSecurityPolicy -> network::mojom::ContentSecurityPolicy.

Bug: 1021462,1149272
Change-Id: I1a28f0be010ff054d3259d733e0fdc2651057d77
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2607888Reviewed-by: default avatarArthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: default avatarMike West <mkwst@chromium.org>
Commit-Queue: Antonio Sartori <antoniosartori@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843521}
parent bff28411
......@@ -43,12 +43,11 @@ network::mojom::ContentSecurityPolicyPtr BuildContentSecurityPolicy(
policy->use_reporting_api = policy_in.use_reporting_api;
for (const auto& directive : policy_in.raw_directives) {
auto name = network::ToCSPDirectiveName(directive.name.Utf8());
policy->raw_directives[name] = directive.value.Utf8();
policy->raw_directives[directive.name] = directive.value.Utf8();
}
for (const auto& directive : policy_in.directives) {
auto name = network::ToCSPDirectiveName(directive.name.Utf8());
policy->directives[name] = BuildCSPSourceList(directive.source_list);
policy->directives[directive.name] =
BuildCSPSourceList(directive.source_list);
}
policy->upgrade_insecure_requests = policy_in.upgrade_insecure_requests;
policy->block_all_mixed_content = policy_in.block_all_mixed_content;
......
......@@ -67,14 +67,14 @@ struct WebContentSecurityPolicySourceList {
// TODO(arthursonzogni): Remove this when BeginNavigation will be sent directly
// from blink.
struct WebContentSecurityPolicyDirective {
WebString name;
network::mojom::CSPDirectiveName name;
WebContentSecurityPolicySourceList source_list;
};
// TODO(arthursonzogni): Remove this when BeginNavigation will be sent directly
// from blink.
struct WebContentSecurityPolicyRawDirective {
WebString name;
network::mojom::CSPDirectiveName name;
WebString value;
};
......
......@@ -187,73 +187,6 @@ WebContentSecurityPolicySourceList ConvertToPublic(
source_list->allow_response_redirects, std::move(sources)};
}
// TODO(arthursonzogni): Remove this when BeginNavigation will be sent directly
// from blink.
WebString ConvertToPublic(
network::mojom::blink::CSPDirectiveName directive_name) {
using CSPDirectiveName = network::mojom::blink::CSPDirectiveName;
switch (directive_name) {
case CSPDirectiveName::BaseURI:
return "base-uri";
case CSPDirectiveName::ChildSrc:
return "child-src";
case CSPDirectiveName::ConnectSrc:
return "connect-src";
case CSPDirectiveName::DefaultSrc:
return "default-src";
case CSPDirectiveName::FrameAncestors:
return "frame-ancestors";
case CSPDirectiveName::FrameSrc:
return "frame-src";
case CSPDirectiveName::FontSrc:
return "font-src";
case CSPDirectiveName::FormAction:
return "form-action";
case CSPDirectiveName::ImgSrc:
return "img-src";
case CSPDirectiveName::ManifestSrc:
return "manifest-src";
case CSPDirectiveName::MediaSrc:
return "media-src";
case CSPDirectiveName::ObjectSrc:
return "object-src";
case CSPDirectiveName::PrefetchSrc:
return "prefetch-src";
case CSPDirectiveName::ReportURI:
return "report-uri";
case CSPDirectiveName::Sandbox:
return "sandbox";
case CSPDirectiveName::ScriptSrc:
return "script-src";
case CSPDirectiveName::ScriptSrcAttr:
return "script-src-attr";
case CSPDirectiveName::ScriptSrcElem:
return "script-src-elem";
case CSPDirectiveName::StyleSrc:
return "style-src";
case CSPDirectiveName::StyleSrcAttr:
return "style-src-attr";
case CSPDirectiveName::StyleSrcElem:
return "style-src-elem";
case CSPDirectiveName::UpgradeInsecureRequests:
return "upgrade-insecure-requests";
case CSPDirectiveName::TreatAsPublicAddress:
return "treat-as-public-address";
case CSPDirectiveName::WorkerSrc:
return "worker-src";
case CSPDirectiveName::ReportTo:
return "report-to";
case CSPDirectiveName::NavigateTo:
return "navigate-to";
case CSPDirectiveName::Unknown:
NOTREACHED();
return "";
default:
NOTREACHED();
return "";
};
}
// TODO(arthursonzogni): Remove this when BeginNavigation will be sent directly
// from blink.
base::Optional<WebCSPTrustedTypes> ConvertToPublic(
......@@ -273,7 +206,7 @@ WebContentSecurityPolicy ConvertToPublic(
policy->directives.size());
size_t i = 0;
for (auto& directive : policy->directives) {
directives[i++] = {ConvertToPublic(directive.key),
directives[i++] = {directive.key,
ConvertToPublic(std::move(directive.value))};
}
......@@ -281,8 +214,7 @@ WebContentSecurityPolicy ConvertToPublic(
policy->raw_directives.size());
i = 0;
for (auto& directive : policy->raw_directives) {
raw_directives[i++] = {ConvertToPublic(directive.key),
std::move(directive.value)};
raw_directives[i++] = {directive.key, std::move(directive.value)};
}
return {policy->header->type,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment