From 05be6481b74b9a91897ae54e38f7442c2797fd05 Mon Sep 17 00:00:00 2001 From: Simon Danner Date: Mon, 7 Sep 2020 19:45:14 +0200 Subject: [PATCH] LibWeb: make it possible to directly load .svg files Make LibWeb load svg files by guessing the svg mime type from the file extension and parsing it with the HTML parser. --- Libraries/LibCore/MimeData.cpp | 2 ++ Libraries/LibWeb/Loader/FrameLoader.cpp | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Libraries/LibCore/MimeData.cpp b/Libraries/LibCore/MimeData.cpp index ffc9a698b30..02a4d49b887 100644 --- a/Libraries/LibCore/MimeData.cpp +++ b/Libraries/LibCore/MimeData.cpp @@ -87,6 +87,8 @@ String guess_mime_type_based_on_filename(const URL& url) return "image/bmp"; if (lowercase_url.ends_with(".jpg") || lowercase_url.ends_with(".jpeg")) return "image/jpeg"; + if (lowercase_url.ends_with(".svg")) + return "image/svg+xml"; if (lowercase_url.ends_with(".md")) return "text/markdown"; if (lowercase_url.ends_with(".html") || lowercase_url.ends_with(".htm")) diff --git a/Libraries/LibWeb/Loader/FrameLoader.cpp b/Libraries/LibWeb/Loader/FrameLoader.cpp index b66edfaeb04..1ef1798e955 100644 --- a/Libraries/LibWeb/Loader/FrameLoader.cpp +++ b/Libraries/LibWeb/Loader/FrameLoader.cpp @@ -121,6 +121,11 @@ static RefPtr create_gemini_document(const ByteBuffer& data, cons RefPtr FrameLoader::create_document_from_mime_type(const ByteBuffer& data, const URL& url, const String& mime_type, const String& encoding) { + if (mime_type == "text/html" || mime_type == "image/svg+xml") { + HTML::HTMLDocumentParser parser(data, encoding); + parser.run(url); + return parser.document(); + } if (mime_type.starts_with("image/")) return create_image_document(data, url); if (mime_type == "text/plain") @@ -129,11 +134,7 @@ RefPtr FrameLoader::create_document_from_mime_type(const ByteBuff return create_markdown_document(data, url); if (mime_type == "text/gemini") return create_gemini_document(data, url); - if (mime_type == "text/html") { - HTML::HTMLDocumentParser parser(data, encoding); - parser.run(url); - return parser.document(); - } + return nullptr; }