LibWeb/CSP: Add Keyword Sources FlyStrings

This commit is contained in:
Luke Wilde 2024-11-26 11:58:12 +00:00
parent 493213db18
commit adb8afede2
4 changed files with 45 additions and 2 deletions

View file

@ -39,6 +39,7 @@ set(SOURCES
ContentSecurityPolicy/Directives/Directive.cpp
ContentSecurityPolicy/Directives/DirectiveFactory.cpp
ContentSecurityPolicy/Directives/DirectiveOperations.cpp
ContentSecurityPolicy/Directives/KeywordSources.cpp
ContentSecurityPolicy/Directives/Names.cpp
ContentSecurityPolicy/Directives/SerializedDirective.cpp
ContentSecurityPolicy/BlockingAlgorithms.cpp

View file

@ -0,0 +1,16 @@
/*
* Copyright (c) 2025, Luke Wilde <luke@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/ContentSecurityPolicy/Directives/KeywordSources.h>
namespace Web::ContentSecurityPolicy::Directives::KeywordSources {
#define __ENUMERATE_KEYWORD_SOURCE(name, value) \
FlyString name = value##_fly_string;
ENUMERATE_KEYWORD_SOURCES
#undef __ENUMERATE_KEYWORD_SOURCE
}

View file

@ -0,0 +1,28 @@
/*
* Copyright (c) 2025, Luke Wilde <luke@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/FlyString.h>
namespace Web::ContentSecurityPolicy::Directives::KeywordSources {
// https://w3c.github.io/webappsec-csp/#grammardef-keyword-source
#define ENUMERATE_KEYWORD_SOURCES \
__ENUMERATE_KEYWORD_SOURCE(Self, "'self'") \
__ENUMERATE_KEYWORD_SOURCE(UnsafeInline, "'unsafe-inline'") \
__ENUMERATE_KEYWORD_SOURCE(UnsafeEval, "'unsafe-eval'") \
__ENUMERATE_KEYWORD_SOURCE(StrictDynamic, "'strict-dynamic'") \
__ENUMERATE_KEYWORD_SOURCE(UnsafeHashes, "'unsafe-hashes'") \
__ENUMERATE_KEYWORD_SOURCE(ReportSample, "'report-sample'") \
__ENUMERATE_KEYWORD_SOURCE(UnsafeAllowRedirects, "'unsafe-allow-redirects'") \
__ENUMERATE_KEYWORD_SOURCE(WasmUnsafeEval, "'wasm-unsafe-eval'")
#define __ENUMERATE_KEYWORD_SOURCE(name, value) extern FlyString name;
ENUMERATE_KEYWORD_SOURCES
#undef __ENUMERATE_KEYWORD_SOURCE
}

View file

@ -39,6 +39,4 @@ namespace Web::ContentSecurityPolicy::Directives::Names {
ENUMERATE_DIRECTIVE_NAMES
#undef __ENUMERATE_DIRECTIVE_NAME
void initialize_strings();
}