1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:37:35 +00:00

LibWeb: Consistently use the EmptyString state of ReferrerPolicy

We previously used an empty optional to denote that a ReferrerPolicy is
in the default empty string state. However, later additions added an
explicit EmptyString state. This patch moves all users to the explicit
state, and stops using `Optional<ReferrerPolicy>` everywhere except for
when an option not being passed from JavaScript has meaning.
This commit is contained in:
Andrew Kaster 2024-03-05 09:35:25 -07:00 committed by Andreas Kling
parent 637f2f2ed6
commit c79bac70f4
12 changed files with 23 additions and 24 deletions

View file

@ -23,11 +23,11 @@ namespace Web::Fetch {
// - Fetch has use-cases beyond its JS interface, so having to refer to the 'Bindings' namespace
// constantly is irritating.
Optional<ReferrerPolicy::ReferrerPolicy> from_bindings_enum(Bindings::ReferrerPolicy referrer_policy)
ReferrerPolicy::ReferrerPolicy from_bindings_enum(Bindings::ReferrerPolicy referrer_policy)
{
switch (referrer_policy) {
case Bindings::ReferrerPolicy::Empty:
return {};
return ReferrerPolicy::ReferrerPolicy::EmptyString;
case Bindings::ReferrerPolicy::NoReferrer:
return ReferrerPolicy::ReferrerPolicy::NoReferrer;
case Bindings::ReferrerPolicy::NoReferrerWhenDowngrade:
@ -113,11 +113,11 @@ Infrastructure::Request::RedirectMode from_bindings_enum(Bindings::RequestRedire
}
}
Bindings::ReferrerPolicy to_bindings_enum(Optional<ReferrerPolicy::ReferrerPolicy> const& referrer_policy)
Bindings::ReferrerPolicy to_bindings_enum(ReferrerPolicy::ReferrerPolicy referrer_policy)
{
if (!referrer_policy.has_value())
switch (referrer_policy) {
case ReferrerPolicy::ReferrerPolicy::EmptyString:
return Bindings::ReferrerPolicy::Empty;
switch (*referrer_policy) {
case ReferrerPolicy::ReferrerPolicy::NoReferrer:
return Bindings::ReferrerPolicy::NoReferrer;
case ReferrerPolicy::ReferrerPolicy::NoReferrerWhenDowngrade:

View file

@ -13,13 +13,13 @@
namespace Web::Fetch {
[[nodiscard]] Optional<ReferrerPolicy::ReferrerPolicy> from_bindings_enum(Bindings::ReferrerPolicy);
[[nodiscard]] ReferrerPolicy::ReferrerPolicy from_bindings_enum(Bindings::ReferrerPolicy);
[[nodiscard]] Infrastructure::Request::Mode from_bindings_enum(Bindings::RequestMode);
[[nodiscard]] Infrastructure::Request::CredentialsMode from_bindings_enum(Bindings::RequestCredentials);
[[nodiscard]] Infrastructure::Request::CacheMode from_bindings_enum(Bindings::RequestCache);
[[nodiscard]] Infrastructure::Request::RedirectMode from_bindings_enum(Bindings::RequestRedirect);
[[nodiscard]] Bindings::ReferrerPolicy to_bindings_enum(Optional<ReferrerPolicy::ReferrerPolicy> const&);
[[nodiscard]] Bindings::ReferrerPolicy to_bindings_enum(ReferrerPolicy::ReferrerPolicy);
[[nodiscard]] Bindings::RequestDestination to_bindings_enum(Optional<Infrastructure::Request::Destination> const&);
[[nodiscard]] Bindings::RequestMode to_bindings_enum(Infrastructure::Request::Mode);
[[nodiscard]] Bindings::RequestCredentials to_bindings_enum(Infrastructure::Request::CredentialsMode);

View file

@ -236,7 +236,7 @@ WebIDL::ExceptionOr<Optional<JS::NonnullGCPtr<PendingResponse>>> main_fetch(JS::
// 8. If requests referrer policy is the empty string, then set requests referrer policy to requests policy
// containers referrer policy.
if (!request->referrer_policy().has_value()) {
if (request->referrer_policy() == ReferrerPolicy::ReferrerPolicy::EmptyString) {
VERIFY(request->policy_container().has<HTML::PolicyContainer>());
request->set_referrer_policy(request->policy_container().get<HTML::PolicyContainer>().referrer_policy);
}

View file

@ -309,8 +309,8 @@ ErrorOr<void> Request::add_origin_header()
// 3. Otherwise, if requests method is neither `GET` nor `HEAD`, then:
else if (!StringView { m_method }.is_one_of("GET"sv, "HEAD"sv)) {
// 1. If requests mode is not "cors", then switch on requests referrer policy:
if (m_mode != Mode::CORS && m_referrer_policy.has_value()) {
switch (*m_referrer_policy) {
if (m_mode != Mode::CORS) {
switch (m_referrer_policy) {
// -> "no-referrer"
case ReferrerPolicy::ReferrerPolicy::NoReferrer:
// Set serializedOrigin to `null`.

View file

@ -273,8 +273,8 @@ public:
[[nodiscard]] ReferrerType const& referrer() const { return m_referrer; }
void set_referrer(ReferrerType referrer) { m_referrer = move(referrer); }
[[nodiscard]] Optional<ReferrerPolicy::ReferrerPolicy> const& referrer_policy() const { return m_referrer_policy; }
void set_referrer_policy(Optional<ReferrerPolicy::ReferrerPolicy> referrer_policy) { m_referrer_policy = move(referrer_policy); }
[[nodiscard]] ReferrerPolicy::ReferrerPolicy const& referrer_policy() const { return m_referrer_policy; }
void set_referrer_policy(ReferrerPolicy::ReferrerPolicy referrer_policy) { m_referrer_policy = move(referrer_policy); }
[[nodiscard]] ResponseTainting response_tainting() const { return m_response_tainting; }
void set_response_tainting(ResponseTainting response_tainting) { m_response_tainting = response_tainting; }
@ -420,7 +420,7 @@ private:
// https://fetch.spec.whatwg.org/#concept-request-referrer-policy
// A request has an associated referrer policy, which is a referrer policy. Unless stated otherwise it is the empty
// string.
Optional<ReferrerPolicy::ReferrerPolicy> m_referrer_policy;
ReferrerPolicy::ReferrerPolicy m_referrer_policy { ReferrerPolicy::ReferrerPolicy::EmptyString };
// https://fetch.spec.whatwg.org/#concept-request-mode
// A request has an associated mode, which is "same-origin", "cors", "no-cors", "navigate", or "websocket". Unless