ladybird/Libraries/LibWeb/ContentSecurityPolicy/Directives/SourceExpression.h
Luke Wilde 38f80913a4 LibWeb: Implement Content Security Policy directive expression parser
This follows the implementation method that was used for the
implementation of ISO8601 parsing for Temporal in LibJS. Doing it this
way allows us to have state transactions, and thus pick out individual
parse nodes that the specification steps want to use.
2025-07-01 10:24:24 +12:00

35 lines
760 B
C++

/*
* Copyright (c) 2025, Luke Wilde <luke@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Optional.h>
#include <AK/StringView.h>
#include <AK/Vector.h>
namespace Web::ContentSecurityPolicy::Directives {
struct SourceExpressionParseResult {
Optional<StringView> scheme_part;
Optional<StringView> host_part;
Optional<StringView> port_part;
Optional<StringView> path_part;
Optional<StringView> keyword_source;
Optional<StringView> base64_value;
Optional<StringView> hash_algorithm;
};
enum class Production {
SchemeSource,
HostSource,
KeywordSource,
NonceSource,
HashSource,
};
Optional<SourceExpressionParseResult> parse_source_expression(Production, StringView);
}