2024-11-25 17:22:08 +00:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2025, Luke Wilde <luke@ladybird.org>
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <AK/StringView.h>
|
|
|
|
|
#include <LibGC/Ptr.h>
|
2024-11-26 11:24:11 +00:00
|
|
|
#include <LibURL/Forward.h>
|
2024-11-25 17:50:37 +00:00
|
|
|
#include <LibWeb/ContentSecurityPolicy/Directives/Directive.h>
|
2024-11-25 17:22:08 +00:00
|
|
|
#include <LibWeb/Forward.h>
|
|
|
|
|
|
|
|
|
|
namespace Web::ContentSecurityPolicy::Directives {
|
|
|
|
|
|
2025-07-05 11:52:34 +01:00
|
|
|
enum class [[nodiscard]] ShouldExecute {
|
2024-11-25 17:22:08 +00:00
|
|
|
No,
|
|
|
|
|
Yes,
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-05 11:52:34 +01:00
|
|
|
enum class [[nodiscard]] MatchResult {
|
2024-11-26 11:24:11 +00:00
|
|
|
DoesNotMatch,
|
|
|
|
|
Matches,
|
|
|
|
|
};
|
|
|
|
|
|
2024-11-25 17:22:08 +00:00
|
|
|
[[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);
|
2025-07-05 11:52:34 +01:00
|
|
|
ShouldExecute should_fetch_directive_execute(Optional<FlyString> effective_directive_name, FlyString const& directive_name, GC::Ref<Policy const> policy);
|
2024-11-25 17:22:08 +00:00
|
|
|
|
2024-11-25 17:50:37 +00:00
|
|
|
[[nodiscard]] FlyString get_the_effective_directive_for_inline_checks(Directive::InlineType type);
|
|
|
|
|
|
2025-07-05 11:52:34 +01:00
|
|
|
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);
|
2024-11-26 11:24:11 +00:00
|
|
|
|
2025-07-05 11:52:34 +01:00
|
|
|
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);
|
2024-12-02 16:01:19 +00:00
|
|
|
MatchResult does_nonce_match_source_list(String const& nonce, Vector<String> const& source_list);
|
|
|
|
|
|
|
|
|
|
Directive::Result script_directives_pre_request_check(GC::Ref<Fetch::Infrastructure::Request const> request, GC::Ref<Directive const> directive, GC::Ref<Policy const> policy);
|
|
|
|
|
Directive::Result script_directives_post_request_check(GC::Ref<Fetch::Infrastructure::Request const> request, GC::Ref<Fetch::Infrastructure::Response const> response, GC::Ref<Directive const> directive, GC::Ref<Policy const> policy);
|
|
|
|
|
|
|
|
|
|
MatchResult does_element_match_source_list_for_type_and_source(GC::Ptr<DOM::Element const> element, Vector<String> const& source_list, Directive::InlineType type, String const& source);
|
2024-11-28 16:35:12 +00:00
|
|
|
|
2024-11-25 17:22:08 +00:00
|
|
|
}
|