mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibWeb: Skip some redundant UTF-8 validation in CSS tokenizer
If we're just adding code points to a StringBuilder, there's no need to revalidate the result.
This commit is contained in:
parent
a88799c032
commit
8d7a1e5654
Notes:
sideshowbarker
2024-07-17 05:00:08 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/8d7a1e5654 Pull-request: https://github.com/SerenityOS/serenity/pull/23690 Reviewed-by: https://github.com/Hendiadyoin1
5 changed files with 15 additions and 2 deletions
|
@ -31,6 +31,11 @@ ErrorOr<FlyString> FlyString::from_utf8(StringView string)
|
|||
return FlyString { TRY(String::from_utf8(string)) };
|
||||
}
|
||||
|
||||
FlyString FlyString::from_utf8_without_validation(ReadonlyBytes string)
|
||||
{
|
||||
return FlyString { String::from_utf8_without_validation(string) };
|
||||
}
|
||||
|
||||
FlyString::FlyString(String const& string)
|
||||
{
|
||||
if (string.is_short_string()) {
|
||||
|
|
|
@ -23,6 +23,7 @@ public:
|
|||
FlyString() = default;
|
||||
|
||||
static ErrorOr<FlyString> from_utf8(StringView);
|
||||
static FlyString from_utf8_without_validation(ReadonlyBytes);
|
||||
template<typename T>
|
||||
requires(IsOneOf<RemoveCVReference<T>, ByteString, DeprecatedFlyString, FlyString, String>)
|
||||
static ErrorOr<String> from_utf8(T&&) = delete;
|
||||
|
|
|
@ -161,6 +161,11 @@ String StringBuilder::to_string_without_validation() const
|
|||
return String::from_utf8_without_validation(string_view().bytes());
|
||||
}
|
||||
|
||||
FlyString StringBuilder::to_fly_string_without_validation() const
|
||||
{
|
||||
return FlyString::from_utf8_without_validation(string_view().bytes());
|
||||
}
|
||||
|
||||
ErrorOr<FlyString> StringBuilder::to_fly_string() const
|
||||
{
|
||||
return FlyString::from_utf8(string_view());
|
||||
|
|
|
@ -75,6 +75,8 @@ public:
|
|||
|
||||
[[nodiscard]] String to_string_without_validation() const;
|
||||
ErrorOr<String> to_string() const;
|
||||
|
||||
[[nodiscard]] FlyString to_fly_string_without_validation() const;
|
||||
ErrorOr<FlyString> to_fly_string() const;
|
||||
|
||||
[[nodiscard]] ErrorOr<ByteBuffer> to_byte_buffer() const;
|
||||
|
|
|
@ -238,7 +238,7 @@ ErrorOr<Vector<Token>> Tokenizer::tokenize(StringView input, StringView encoding
|
|||
}
|
||||
return {};
|
||||
}));
|
||||
return builder.to_string();
|
||||
return builder.to_string_without_validation();
|
||||
};
|
||||
|
||||
Tokenizer tokenizer { TRY(filter_code_points(input, encoding)) };
|
||||
|
@ -623,7 +623,7 @@ ErrorOr<FlyString> Tokenizer::consume_an_ident_sequence()
|
|||
break;
|
||||
}
|
||||
|
||||
return result.to_fly_string();
|
||||
return result.to_fly_string_without_validation();
|
||||
}
|
||||
|
||||
// https://www.w3.org/TR/css-syntax-3/#consume-url-token
|
||||
|
|
Loading…
Reference in a new issue