From dbb3c07e561df68f7c6fe2ea0b60e867b8779f12 Mon Sep 17 00:00:00 2001 From: Kemal Zebari Date: Thu, 1 Feb 2024 17:11:43 -0800 Subject: [PATCH] LibWeb/HTML: Sniff text or binary resources in HTMLObjectElement --- .../Libraries/LibWeb/HTML/HTMLObjectElement.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp index 777aa2d914a..22197ccd8df 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp @@ -16,6 +16,7 @@ #include #include #include +#include namespace Web::HTML { @@ -181,7 +182,17 @@ void HTMLObjectElement::resource_did_load() // 1. Let binary be false. bool binary = false; - // FIXME: 2. If the type specified in the resource's Content-Type metadata is "text/plain", and the result of applying the rules for distinguishing if a resource is text or binary to the resource is that the resource is not text/plain, then set binary to true. + // 2. If the type specified in the resource's Content-Type metadata is "text/plain", and the result of applying the rules for distinguishing if a resource is text or binary to the resource is that the resource is not text/plain, then set binary to true. + if (it->value == "text/plain"sv) { + auto supplied_type = MimeSniff::MimeType::parse(it->value).release_value_but_fixme_should_propagate_errors(); + auto computed_type = MimeSniff::Resource::sniff(resource()->encoded_data(), MimeSniff::SniffingConfiguration { + .sniffing_context = MimeSniff::SniffingContext::TextOrBinary, + .supplied_type = move(supplied_type), + }) + .release_value_but_fixme_should_propagate_errors(); + if (computed_type.essence() != "text/plain"sv) + binary = true; + } // 3. If the type specified in the resource's Content-Type metadata is "application/octet-stream", then set binary to true. if (it->value == "application/octet-stream"sv)