mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-04 05:20:30 +00:00
LibWeb/MimeSniff: Add non-standard text or binary context sniffing
This is used in cases where the spec expects us to only run the "rules for distinguishing if a resource is a text or binary" algo.
This commit is contained in:
parent
8a974ca91a
commit
8e5410347b
Notes:
sideshowbarker
2024-07-18 00:54:03 +09:00
Author: https://github.com/kemzeb Commit: https://github.com/SerenityOS/serenity/commit/8e5410347b Pull-request: https://github.com/SerenityOS/serenity/pull/23043 Reviewed-by: https://github.com/trflynn89
3 changed files with 16 additions and 0 deletions
|
@ -320,3 +320,13 @@ TEST_CASE(determine_computed_mime_type_in_a_font_context)
|
|||
|
||||
EXPECT_EQ(mime_type, computed_mime_type.essence());
|
||||
}
|
||||
|
||||
TEST_CASE(determine_computed_mime_type_given_text_or_binary_context)
|
||||
{
|
||||
auto supplied_type = MUST(Web::MimeSniff::MimeType::create("text"_string, "plain"_string));
|
||||
auto computed_mime_type = MUST(Web::MimeSniff::Resource::sniff("\x00"sv.bytes(), Web::MimeSniff::SniffingConfiguration {
|
||||
.sniffing_context = Web::MimeSniff::SniffingContext::TextOrBinary,
|
||||
.supplied_type = supplied_type,
|
||||
}));
|
||||
EXPECT_EQ("application/octet-stream"sv, MUST(computed_mime_type.serialized()));
|
||||
}
|
||||
|
|
|
@ -680,6 +680,8 @@ ErrorOr<void> Resource::context_specific_sniffing_algorithm(SniffingContext snif
|
|||
return rules_for_sniffing_audio_or_video_specifically();
|
||||
if (sniffing_context == SniffingContext::Font)
|
||||
return rules_for_sniffing_fonts_specifically();
|
||||
if (sniffing_context == SniffingContext::TextOrBinary)
|
||||
return rules_for_distinguishing_if_a_resource_is_text_or_binary();
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -16,6 +16,10 @@ enum class SniffingContext {
|
|||
Image,
|
||||
AudioOrVideo,
|
||||
Font,
|
||||
|
||||
// Non-standard but used in cases where the spec expects us to only run
|
||||
// https://mimesniff.spec.whatwg.org/#sniffing-a-mislabeled-binary-resource
|
||||
TextOrBinary,
|
||||
};
|
||||
|
||||
struct SniffingConfiguration {
|
||||
|
|
Loading…
Reference in a new issue