mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-13 21:12:26 +00:00
LibWeb/CSP: Add [[nodiscard]] to result enums
This makes it so we don't have to remember to specify [[nodiscard]] on functions that return them.
This commit is contained in:
parent
d7deb6d58f
commit
002e993f68
Notes:
github-actions[bot]
2025-07-06 12:17:27 +00:00
Author: https://github.com/Lubrsi
Commit: 002e993f68
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5308
Reviewed-by: https://github.com/shannonbooth
8 changed files with 31 additions and 31 deletions
|
@ -11,11 +11,11 @@
|
|||
namespace Web::ContentSecurityPolicy {
|
||||
|
||||
void report_content_security_policy_violations_for_request(JS::Realm&, GC::Ref<Fetch::Infrastructure::Request>);
|
||||
[[nodiscard]] Directives::Directive::Result should_request_be_blocked_by_content_security_policy(JS::Realm&, GC::Ref<Fetch::Infrastructure::Request>);
|
||||
[[nodiscard]] Directives::Directive::Result should_response_to_request_be_blocked_by_content_security_policy(JS::Realm&, GC::Ref<Fetch::Infrastructure::Response>, GC::Ref<Fetch::Infrastructure::Request>);
|
||||
Directives::Directive::Result should_request_be_blocked_by_content_security_policy(JS::Realm&, GC::Ref<Fetch::Infrastructure::Request>);
|
||||
Directives::Directive::Result should_response_to_request_be_blocked_by_content_security_policy(JS::Realm&, GC::Ref<Fetch::Infrastructure::Response>, GC::Ref<Fetch::Infrastructure::Request>);
|
||||
|
||||
[[nodiscard]] Directives::Directive::Result should_navigation_request_of_type_be_blocked_by_content_security_policy(GC::Ref<Fetch::Infrastructure::Request> navigation_request, Directives::Directive::NavigationType navigation_type);
|
||||
[[nodiscard]] Directives::Directive::Result should_navigation_response_to_navigation_request_of_type_in_target_be_blocked_by_content_security_policy(
|
||||
Directives::Directive::Result should_navigation_request_of_type_be_blocked_by_content_security_policy(GC::Ref<Fetch::Infrastructure::Request> navigation_request, Directives::Directive::NavigationType navigation_type);
|
||||
Directives::Directive::Result should_navigation_response_to_navigation_request_of_type_in_target_be_blocked_by_content_security_policy(
|
||||
GC::Ptr<Fetch::Infrastructure::Request> navigation_request,
|
||||
GC::Ref<Fetch::Infrastructure::Response> navigation_response,
|
||||
GC::Ref<PolicyList> response_csp_list,
|
||||
|
|
|
@ -18,8 +18,8 @@ class ConnectSourceDirective final : public Directive {
|
|||
public:
|
||||
virtual ~ConnectSourceDirective() = default;
|
||||
|
||||
[[nodiscard]] virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
[[nodiscard]] virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
|
||||
private:
|
||||
ConnectSourceDirective(String name, Vector<String> value);
|
||||
|
|
|
@ -22,7 +22,7 @@ class Directive : public GC::Cell {
|
|||
GC_DECLARE_ALLOCATOR(Directive);
|
||||
|
||||
public:
|
||||
enum class Result {
|
||||
enum class [[nodiscard]] Result {
|
||||
Blocked,
|
||||
Allowed,
|
||||
};
|
||||
|
@ -52,44 +52,44 @@ public:
|
|||
// 1. A pre-request check, which takes a request and a policy as an argument, and is executed during
|
||||
// § 4.1.2 Should request be blocked by Content Security Policy?. This algorithm returns "Allowed"
|
||||
// unless otherwise specified.
|
||||
[[nodiscard]] virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-post-request-check
|
||||
// 2. A post-request check, which takes a request, a response, and a policy as arguments, and is executed during
|
||||
// § 4.1.3 Should response to request be blocked by Content Security Policy?. This algorithm returns "Allowed"
|
||||
// unless otherwise specified.
|
||||
[[nodiscard]] virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-inline-check
|
||||
// 3. An inline check, which takes an Element, a type string, a policy, and a source string as arguments, and is
|
||||
// executed during § 4.2.3 Should element’s inline type behavior be blocked by Content Security Policy? and
|
||||
// during § 4.2.4 Should navigation request of type be blocked by Content Security Policy? for javascript:
|
||||
// requests. This algorithm returns "Allowed" unless otherwise specified.
|
||||
[[nodiscard]] virtual Result inline_check(GC::Heap&, GC::Ptr<DOM::Element const>, InlineType, GC::Ref<Policy const>, String const&) const { return Result::Allowed; }
|
||||
virtual Result inline_check(GC::Heap&, GC::Ptr<DOM::Element const>, InlineType, GC::Ref<Policy const>, String const&) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-initialization
|
||||
// 4. An initialization, which takes a Document or global object and a policy as arguments. This algorithm is
|
||||
// executed during § 4.2.1 Run CSP initialization for a Document and § 4.2.6 Run CSP initialization for
|
||||
// a global object. Unless otherwise specified, it has no effect and it returns "Allowed".
|
||||
[[nodiscard]] virtual Result initialization(Variant<GC::Ref<DOM::Document const>, GC::Ref<HTML::WorkerGlobalScope const>>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result initialization(Variant<GC::Ref<DOM::Document const>, GC::Ref<HTML::WorkerGlobalScope const>>, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-pre-navigation-check
|
||||
// 5. A pre-navigation check, which takes a request, a navigation type string ("form-submission" or "other")
|
||||
// and a policy as arguments, and is executed during § 4.2.4 Should navigation request of type be blocked by
|
||||
// Content Security Policy?. It returns "Allowed" unless otherwise specified.
|
||||
[[nodiscard]] virtual Result pre_navigation_check(GC::Ref<Fetch::Infrastructure::Request const>, NavigationType, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result pre_navigation_check(GC::Ref<Fetch::Infrastructure::Request const>, NavigationType, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-navigation-response-check
|
||||
// 6. A navigation response check, which takes a request, a navigation type string ("form-submission" or "other"),
|
||||
// a response, a navigable, a check type string ("source" or "response"), and a policy as arguments, and is
|
||||
// executed during § 4.2.5 Should navigation response to navigation request of type in target be blocked by
|
||||
// Content Security Policy?. It returns "Allowed" unless otherwise specified.
|
||||
[[nodiscard]] virtual Result navigation_response_check(GC::Ref<Fetch::Infrastructure::Request const>, NavigationType, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<HTML::Navigable const>, CheckType, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result navigation_response_check(GC::Ref<Fetch::Infrastructure::Request const>, NavigationType, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<HTML::Navigable const>, CheckType, GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
// https://w3c.github.io/webappsec-csp/#directive-webrtc-pre-connect-check
|
||||
// 7. A webrtc pre-connect check, which takes a policy, and is executed during § 4.3.1 Should RTC connections be
|
||||
// blocked for global?. It returns "Allowed" unless otherwise specified.
|
||||
[[nodiscard]] virtual Result webrtc_pre_connect_check(GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
virtual Result webrtc_pre_connect_check(GC::Ref<Policy const>) const { return Result::Allowed; }
|
||||
|
||||
[[nodiscard]] String const& name() const { return m_name; }
|
||||
[[nodiscard]] Vector<String> const& value() const { return m_value; }
|
||||
|
|
|
@ -240,7 +240,7 @@ FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType ty
|
|||
// expression. script-src http: is treated as equivalent to script-src http: https:,
|
||||
// script-src http://example.com to script-src http://example.com https://example.com,
|
||||
// and connect-src ws: to connect-src ws: wss:.
|
||||
[[nodiscard]] static MatchResult scheme_part_matches(StringView a, StringView b)
|
||||
static MatchResult scheme_part_matches(StringView a, StringView b)
|
||||
{
|
||||
// 1. If one of the following is true, return "Matches":
|
||||
// 1. A is an ASCII case-insensitive match for B.
|
||||
|
@ -273,7 +273,7 @@ FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType ty
|
|||
// More formally, ASCII string pattern and host host are said to host-part match if the following algorithm returns "Matches":
|
||||
// Spec Note: The matching relation is asymmetric. That is, pattern matching host does not mean that host will match pattern.
|
||||
// For example, *.example.com host-part matches www.example.com, but www.example.com does not host-part match *.example.com.
|
||||
[[nodiscard]] static MatchResult host_part_matches(StringView pattern, Optional<URL::Host> const& maybe_host)
|
||||
static MatchResult host_part_matches(StringView pattern, Optional<URL::Host> const& maybe_host)
|
||||
{
|
||||
// 1. If host is not a domain, return "Does Not Match".
|
||||
// Spec Note: A future version of this specification may allow literal IPv6 and IPv4 addresses, depending on usage and demand.
|
||||
|
@ -321,7 +321,7 @@ FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType ty
|
|||
// An ASCII string input port-part matches URL url if a CSP source expression that contained the first as a port-part
|
||||
// could potentially match a URL containing the latter’s port and scheme. For example, "80" port-part matches
|
||||
// matches http://example.com.
|
||||
[[nodiscard]] static MatchResult port_part_matches(Optional<StringView> input, URL::URL const& url)
|
||||
static MatchResult port_part_matches(Optional<StringView> input, URL::URL const& url)
|
||||
{
|
||||
// FIXME: 1. Assert: input is the empty string, "*", or a sequence of ASCII digits.
|
||||
|
||||
|
@ -367,7 +367,7 @@ FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType ty
|
|||
// "/subdirectory/" path-part matches "/subdirectory/file".
|
||||
// Spec Note: The matching relation is asymmetric. That is, path A matching path B does not mean that path B will
|
||||
// match path A.
|
||||
[[nodiscard]] static MatchResult path_part_matches(StringView a, StringView b)
|
||||
static MatchResult path_part_matches(StringView a, StringView b)
|
||||
{
|
||||
// 1. If path A is the empty string, return "Matches".
|
||||
if (a.is_empty())
|
||||
|
|
|
@ -14,26 +14,26 @@
|
|||
|
||||
namespace Web::ContentSecurityPolicy::Directives {
|
||||
|
||||
enum class ShouldExecute {
|
||||
enum class [[nodiscard]] ShouldExecute {
|
||||
No,
|
||||
Yes,
|
||||
};
|
||||
|
||||
enum class MatchResult {
|
||||
enum class [[nodiscard]] MatchResult {
|
||||
DoesNotMatch,
|
||||
Matches,
|
||||
};
|
||||
|
||||
[[nodiscard]] Optional<FlyString> get_the_effective_directive_for_request(GC::Ref<Fetch::Infrastructure::Request const> request);
|
||||
[[nodiscard]] Vector<StringView> get_fetch_directive_fallback_list(Optional<FlyString> directive_name);
|
||||
[[nodiscard]] ShouldExecute should_fetch_directive_execute(Optional<FlyString> effective_directive_name, FlyString const& directive_name, GC::Ref<Policy const> policy);
|
||||
ShouldExecute should_fetch_directive_execute(Optional<FlyString> effective_directive_name, FlyString const& directive_name, GC::Ref<Policy const> policy);
|
||||
|
||||
[[nodiscard]] FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType type);
|
||||
|
||||
[[nodiscard]] MatchResult does_url_match_expression_in_origin_with_redirect_count(URL::URL const& url, String const& expression, URL::Origin const& origin, u8 redirect_count);
|
||||
[[nodiscard]] MatchResult does_url_match_source_list_in_origin_with_redirect_count(URL::URL const& url, Vector<String> const& source_list, URL::Origin const& origin, u8 redirect_count);
|
||||
MatchResult does_url_match_expression_in_origin_with_redirect_count(URL::URL const& url, String const& expression, URL::Origin const& origin, u8 redirect_count);
|
||||
MatchResult does_url_match_source_list_in_origin_with_redirect_count(URL::URL const& url, Vector<String> const& source_list, URL::Origin const& origin, u8 redirect_count);
|
||||
|
||||
[[nodiscard]] MatchResult does_request_match_source_list(GC::Ref<Fetch::Infrastructure::Request const> request, Vector<String> const& source_list, GC::Ref<Policy const> policy);
|
||||
[[nodiscard]] MatchResult does_response_match_source_list(GC::Ref<Fetch::Infrastructure::Response const> response, GC::Ref<Fetch::Infrastructure::Request const> request, Vector<String> const& source_list, GC::Ref<Policy const> policy);
|
||||
MatchResult does_request_match_source_list(GC::Ref<Fetch::Infrastructure::Request const> request, Vector<String> const& source_list, GC::Ref<Policy const> policy);
|
||||
MatchResult does_response_match_source_list(GC::Ref<Fetch::Infrastructure::Response const> response, GC::Ref<Fetch::Infrastructure::Request const> request, Vector<String> const& source_list, GC::Ref<Policy const> policy);
|
||||
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ class FontSourceDirective final : public Directive {
|
|||
public:
|
||||
virtual ~FontSourceDirective() = default;
|
||||
|
||||
[[nodiscard]] virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
[[nodiscard]] virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
|
||||
private:
|
||||
FontSourceDirective(String name, Vector<String> value);
|
||||
|
|
|
@ -18,8 +18,8 @@ class FrameSourceDirective final : public Directive {
|
|||
public:
|
||||
virtual ~FrameSourceDirective() = default;
|
||||
|
||||
[[nodiscard]] virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
[[nodiscard]] virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
|
||||
private:
|
||||
FrameSourceDirective(String name, Vector<String> value);
|
||||
|
|
|
@ -18,8 +18,8 @@ class ImageSourceDirective final : public Directive {
|
|||
public:
|
||||
virtual ~ImageSourceDirective() = default;
|
||||
|
||||
[[nodiscard]] virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
[[nodiscard]] virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result pre_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Policy const>) const override;
|
||||
virtual Result post_request_check(GC::Heap&, GC::Ref<Fetch::Infrastructure::Request const>, GC::Ref<Fetch::Infrastructure::Response const>, GC::Ref<Policy const>) const override;
|
||||
|
||||
private:
|
||||
ImageSourceDirective(String name, Vector<String> value);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue