mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 07:58:11 +00:00
LibWeb: Use the sandboxed ImageDecoder when creating image documents
An image document is the synthetic DOM::Document we create to wrap an image when you open the URL of an image directly in a web view. The path that creates these documents will now also call out to the separate ImageDecoder process for the actual decoding work.
This commit is contained in:
parent
e017fe92e6
commit
25a8bd3a8a
1 changed files with 7 additions and 5 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <LibWeb/HTML/BrowsingContext.h>
|
||||
#include <LibWeb/HTML/HTMLIFrameElement.h>
|
||||
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
||||
#include <LibWeb/ImageDecoding.h>
|
||||
#include <LibWeb/Loader/FrameLoader.h>
|
||||
#include <LibWeb/Loader/ResourceLoader.h>
|
||||
#include <LibWeb/Page/Page.h>
|
||||
|
@ -72,13 +73,14 @@ static bool build_text_document(DOM::Document& document, const ByteBuffer& data)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool build_image_document(DOM::Document& document, const ByteBuffer& data)
|
||||
static bool build_image_document(DOM::Document& document, ByteBuffer const& data)
|
||||
{
|
||||
auto image_decoder = Gfx::ImageDecoder::try_create(data.bytes());
|
||||
if (!image_decoder)
|
||||
NonnullRefPtr decoder = image_decoder_client();
|
||||
auto image = decoder->decode_image(data);
|
||||
if (!image.has_value() || image->frames.is_empty())
|
||||
return false;
|
||||
auto frame = image_decoder->frame(0);
|
||||
auto bitmap = frame.image;
|
||||
auto const& frame = image->frames[0];
|
||||
auto const& bitmap = frame.bitmap;
|
||||
if (!bitmap)
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue