/* * Copyright (c) 2023, Srikavin Ramkumar * * SPDX-License-Identifier: BSD-2-Clause */ #include namespace Web::HTML { // https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes CORSSettingAttribute cors_setting_attribute_from_keyword(Optional const& keyword) { if (!keyword.has_value()) { // its missing value default is the No CORS state return CORSSettingAttribute::NoCORS; } if (keyword->is_empty() || keyword->bytes_as_string_view().equals_ignoring_ascii_case("anonymous"sv)) { return CORSSettingAttribute::Anonymous; } 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(); } }