mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-01 15:43:36 +03:00
LibWeb: Implement the legacy extracting an encoding AO
This commit is contained in:
parent
9701128145
commit
29d90ccf3b
Notes:
sideshowbarker
2024-07-17 09:37:30 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/29d90ccf3b Pull-request: https://github.com/SerenityOS/serenity/pull/18772 Issue: https://github.com/SerenityOS/serenity/issues/18432
@ -15,6 +15,7 @@
|
||||
#include <LibJS/Heap/Heap.h>
|
||||
#include <LibJS/Runtime/VM.h>
|
||||
#include <LibRegex/Regex.h>
|
||||
#include <LibTextCodec/Decoder.h>
|
||||
#include <LibWeb/Fetch/Infrastructure/HTTP.h>
|
||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Headers.h>
|
||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Methods.h>
|
||||
@ -392,6 +393,29 @@ ErrorOr<Optional<MimeSniff::MimeType>> HeaderList::extract_mime_type() const
|
||||
return mime_type;
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#legacy-extract-an-encoding
|
||||
StringView legacy_extract_an_encoding(Optional<MimeSniff::MimeType> const& mime_type, StringView fallback_encoding)
|
||||
{
|
||||
// 1. If mimeType is failure, then return fallbackEncoding.
|
||||
if (!mime_type.has_value())
|
||||
return fallback_encoding;
|
||||
|
||||
// 2. If mimeType["charset"] does not exist, then return fallbackEncoding.
|
||||
auto charset = mime_type->parameters().get("charset"sv);
|
||||
if (!charset.has_value())
|
||||
return fallback_encoding;
|
||||
|
||||
// 3. Let tentativeEncoding be the result of getting an encoding from mimeType["charset"].
|
||||
auto tentative_encoding = TextCodec::get_standardized_encoding(*charset);
|
||||
|
||||
// 4. If tentativeEncoding is failure, then return fallbackEncoding.
|
||||
if (!tentative_encoding.has_value())
|
||||
return fallback_encoding;
|
||||
|
||||
// 5. Return tentativeEncoding.
|
||||
return *tentative_encoding;
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set
|
||||
ErrorOr<OrderedHashTable<ByteBuffer>> convert_header_names_to_a_sorted_lowercase_set(Span<ReadonlyBytes> header_names)
|
||||
{
|
||||
|
@ -70,6 +70,7 @@ struct RangeHeaderValue {
|
||||
struct ExtractHeaderParseFailure {
|
||||
};
|
||||
|
||||
[[nodiscard]] StringView legacy_extract_an_encoding(Optional<MimeSniff::MimeType> const& mime_type, StringView fallback_encoding);
|
||||
[[nodiscard]] ErrorOr<Optional<Vector<String>>> get_decode_and_split_header_value(ReadonlyBytes);
|
||||
[[nodiscard]] ErrorOr<OrderedHashTable<ByteBuffer>> convert_header_names_to_a_sorted_lowercase_set(Span<ReadonlyBytes>);
|
||||
[[nodiscard]] bool is_header_name(ReadonlyBytes);
|
||||
|
Loading…
Reference in New Issue
Block a user