LibWeb: Remove OOM propagation from Fetch::Infrastructure::HTTP

This commit is contained in:
Timothy Flynn 2024-04-26 15:06:48 -04:00 committed by Andreas Kling
parent 1ffda6a805
commit c9a461ee75
5 changed files with 12 additions and 12 deletions

View file

@ -16,14 +16,14 @@ TEST_CASE(collect_an_http_quoted_string)
auto test = "\"\""_string; auto test = "\"\""_string;
GenericLexer lexer { test }; GenericLexer lexer { test };
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"\""_string); EXPECT_EQ(result, "\"\""_string);
} }
{ {
auto test = "\"abc\""_string; auto test = "\"abc\""_string;
GenericLexer lexer { test }; GenericLexer lexer { test };
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"abc\""_string); EXPECT_EQ(result, "\"abc\""_string);
} }
{ {
@ -32,7 +32,7 @@ TEST_CASE(collect_an_http_quoted_string)
GenericLexer lexer { test }; GenericLexer lexer { test };
lexer.ignore(4); lexer.ignore(4);
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"abc\""_string); EXPECT_EQ(result, "\"abc\""_string);
} }
{ {
@ -41,7 +41,7 @@ TEST_CASE(collect_an_http_quoted_string)
GenericLexer lexer { test }; GenericLexer lexer { test };
lexer.ignore(4); lexer.ignore(4);
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"abc\""_string); EXPECT_EQ(result, "\"abc\""_string);
} }
{ {
@ -50,14 +50,14 @@ TEST_CASE(collect_an_http_quoted_string)
GenericLexer lexer { test }; GenericLexer lexer { test };
lexer.ignore(4); lexer.ignore(4);
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"abc\""_string); EXPECT_EQ(result, "\"abc\""_string);
} }
{ {
auto test = "\"abc\" bar"_string; auto test = "\"abc\" bar"_string;
GenericLexer lexer { test }; GenericLexer lexer { test };
auto result = MUST(Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer)); auto result = Web::Fetch::Infrastructure::collect_an_http_quoted_string(lexer);
EXPECT_EQ(result, "\"abc\""_string); EXPECT_EQ(result, "\"abc\""_string);
} }
} }

View file

@ -12,7 +12,7 @@
namespace Web::Fetch::Infrastructure { namespace Web::Fetch::Infrastructure {
// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string // https://fetch.spec.whatwg.org/#collect-an-http-quoted-string
ErrorOr<String> collect_an_http_quoted_string(GenericLexer& lexer, HttpQuotedStringExtractValue extract_value) String collect_an_http_quoted_string(GenericLexer& lexer, HttpQuotedStringExtractValue extract_value)
{ {
// To collect an HTTP quoted string from a string input, given a position variable position and optionally an extract-value flag, run these steps: // To collect an HTTP quoted string from a string input, given a position variable position and optionally an extract-value flag, run these steps:
// 1. Let positionStart be position. // 1. Let positionStart be position.
@ -69,10 +69,10 @@ ErrorOr<String> collect_an_http_quoted_string(GenericLexer& lexer, HttpQuotedStr
// 6. If the extract-value flag is set, then return value. // 6. If the extract-value flag is set, then return value.
if (extract_value == HttpQuotedStringExtractValue::Yes) if (extract_value == HttpQuotedStringExtractValue::Yes)
return value.to_string(); return MUST(value.to_string());
// 7. Return the code points from positionStart to position, inclusive, within input. // 7. Return the code points from positionStart to position, inclusive, within input.
return String::from_utf8(lexer.input().substring_view(position_start, lexer.tell() - position_start)); return MUST(String::from_utf8(lexer.input().substring_view(position_start, lexer.tell() - position_start)));
} }
} }

View file

@ -37,6 +37,6 @@ enum class HttpQuotedStringExtractValue {
Yes, Yes,
}; };
ErrorOr<String> collect_an_http_quoted_string(GenericLexer& lexer, HttpQuotedStringExtractValue extract_value = HttpQuotedStringExtractValue::No); [[nodiscard]] String collect_an_http_quoted_string(GenericLexer& lexer, HttpQuotedStringExtractValue extract_value = HttpQuotedStringExtractValue::No);
} }

View file

@ -150,7 +150,7 @@ Optional<Vector<String>> get_decode_and_split_header_value(ReadonlyBytes value)
// 1. If the code point at position within input is U+0022 ("), then: // 1. If the code point at position within input is U+0022 ("), then:
if (lexer.peek() == '"') { if (lexer.peek() == '"') {
// 1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue. // 1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue.
temporary_value_builder.append(MUST(collect_an_http_quoted_string(lexer))); temporary_value_builder.append(collect_an_http_quoted_string(lexer));
// 2. If position is not past the end of input, then continue. // 2. If position is not past the end of input, then continue.
if (!lexer.is_eof()) if (!lexer.is_eof())

View file

@ -152,7 +152,7 @@ ErrorOr<Optional<MimeType>> MimeType::parse(StringView string)
// 8. If the code point at position within input is U+0022 ("), then: // 8. If the code point at position within input is U+0022 ("), then:
if (lexer.peek() == '"') { if (lexer.peek() == '"') {
// 1. Set parameterValue to the result of collecting an HTTP quoted string from input, given position and the extract-value flag. // 1. Set parameterValue to the result of collecting an HTTP quoted string from input, given position and the extract-value flag.
parameter_value = TRY(Fetch::Infrastructure::collect_an_http_quoted_string(lexer, Fetch::Infrastructure::HttpQuotedStringExtractValue::Yes)); parameter_value = Fetch::Infrastructure::collect_an_http_quoted_string(lexer, Fetch::Infrastructure::HttpQuotedStringExtractValue::Yes);
// 2. Collect a sequence of code points that are not U+003B (;) from input, given position. // 2. Collect a sequence of code points that are not U+003B (;) from input, given position.
lexer.ignore_until(';'); lexer.ignore_until(';');