ladybird/Userland/Libraries/LibWeb/HTML/CORSSettingAttribute.cpp
Tim Ledbetter 7b08fd9f72 LibWeb: Simplify String to CORSSettingAttribute value conversion
There's no need to check the "anonymous" case explicitly, as
`CORSSettingAttribute::Anonymous` is the default value.
2024-03-22 11:29:57 +01:00

47 lines
1.4 KiB
C++

/*
* Copyright (c) 2023, Srikavin Ramkumar <me@srikavin.me>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/HTML/CORSSettingAttribute.h>
namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes
CORSSettingAttribute cors_setting_attribute_from_keyword(Optional<String> const& keyword)
{
if (!keyword.has_value()) {
// its missing value default is the No CORS state
return CORSSettingAttribute::NoCORS;
}
if (keyword->bytes_as_string_view().equals_ignoring_ascii_case("use-credentials"sv)) {
return CORSSettingAttribute::UseCredentials;
}
// The attribute's invalid value default is the Anonymous state
return CORSSettingAttribute::Anonymous;
}
// https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attribute-credentials-mode
Fetch::Infrastructure::Request::CredentialsMode cors_settings_attribute_credentials_mode(CORSSettingAttribute attribute)
{
switch (attribute) {
// -> No CORS
// -> Anonymous
case CORSSettingAttribute::NoCORS:
case CORSSettingAttribute::Anonymous:
// "same-origin"
return Fetch::Infrastructure::Request::CredentialsMode::SameOrigin;
// -> Use Credentials
case CORSSettingAttribute::UseCredentials:
// "include"
return Fetch::Infrastructure::Request::CredentialsMode::Include;
}
VERIFY_NOT_REACHED();
}
}