mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:57:45 +00:00
LibCompress: Rename Compress::Zlib
to Compress::ZlibDecompressor
Because that's what it is, even if it mainly relies on `DeflateDecompressor` to do the heavy lifting.
This commit is contained in:
parent
edd004fe90
commit
23a9d62f39
6 changed files with 14 additions and 14 deletions
|
@ -20,7 +20,7 @@ TEST_CASE(zlib_decompress_simple)
|
||||||
|
|
||||||
const u8 uncompressed[] = "This is a simple text file :)";
|
const u8 uncompressed[] = "This is a simple text file :)";
|
||||||
|
|
||||||
auto const decompressed = Compress::Zlib::decompress_all(compressed);
|
auto const decompressed = Compress::ZlibDecompressor::decompress_all(compressed);
|
||||||
EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 }));
|
EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Compress {
|
||||||
|
|
||||||
constexpr static size_t Adler32Size = sizeof(u32);
|
constexpr static size_t Adler32Size = sizeof(u32);
|
||||||
|
|
||||||
Optional<Zlib> Zlib::try_create(ReadonlyBytes data)
|
Optional<ZlibDecompressor> ZlibDecompressor::try_create(ReadonlyBytes data)
|
||||||
{
|
{
|
||||||
if (data.size() < (sizeof(ZlibHeader) + Adler32Size))
|
if (data.size() < (sizeof(ZlibHeader) + Adler32Size))
|
||||||
return {};
|
return {};
|
||||||
|
@ -31,18 +31,18 @@ Optional<Zlib> Zlib::try_create(ReadonlyBytes data)
|
||||||
if (header.as_u16 % 31 != 0)
|
if (header.as_u16 % 31 != 0)
|
||||||
return {}; // error correction code doesn't match
|
return {}; // error correction code doesn't match
|
||||||
|
|
||||||
Zlib zlib { header, data };
|
ZlibDecompressor zlib { header, data };
|
||||||
zlib.m_data_bytes = data.slice(2, data.size() - sizeof(ZlibHeader) - Adler32Size);
|
zlib.m_data_bytes = data.slice(2, data.size() - sizeof(ZlibHeader) - Adler32Size);
|
||||||
return zlib;
|
return zlib;
|
||||||
}
|
}
|
||||||
|
|
||||||
Zlib::Zlib(ZlibHeader header, ReadonlyBytes data)
|
ZlibDecompressor::ZlibDecompressor(ZlibHeader header, ReadonlyBytes data)
|
||||||
: m_header(header)
|
: m_header(header)
|
||||||
, m_input_data(data)
|
, m_input_data(data)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<ByteBuffer> Zlib::decompress()
|
Optional<ByteBuffer> ZlibDecompressor::decompress()
|
||||||
{
|
{
|
||||||
auto buffer_or_error = DeflateDecompressor::decompress_all(m_data_bytes);
|
auto buffer_or_error = DeflateDecompressor::decompress_all(m_data_bytes);
|
||||||
if (buffer_or_error.is_error())
|
if (buffer_or_error.is_error())
|
||||||
|
@ -50,7 +50,7 @@ Optional<ByteBuffer> Zlib::decompress()
|
||||||
return buffer_or_error.release_value();
|
return buffer_or_error.release_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<ByteBuffer> Zlib::decompress_all(ReadonlyBytes bytes)
|
Optional<ByteBuffer> ZlibDecompressor::decompress_all(ReadonlyBytes bytes)
|
||||||
{
|
{
|
||||||
auto zlib = try_create(bytes);
|
auto zlib = try_create(bytes);
|
||||||
if (!zlib.has_value())
|
if (!zlib.has_value())
|
||||||
|
@ -58,7 +58,7 @@ Optional<ByteBuffer> Zlib::decompress_all(ReadonlyBytes bytes)
|
||||||
return zlib->decompress();
|
return zlib->decompress();
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 Zlib::checksum()
|
u32 ZlibDecompressor::checksum()
|
||||||
{
|
{
|
||||||
if (!m_checksum) {
|
if (!m_checksum) {
|
||||||
auto bytes = m_input_data.slice_from_end(Adler32Size);
|
auto bytes = m_input_data.slice_from_end(Adler32Size);
|
||||||
|
|
|
@ -42,16 +42,16 @@ struct ZlibHeader {
|
||||||
};
|
};
|
||||||
static_assert(sizeof(ZlibHeader) == sizeof(u16));
|
static_assert(sizeof(ZlibHeader) == sizeof(u16));
|
||||||
|
|
||||||
class Zlib {
|
class ZlibDecompressor {
|
||||||
public:
|
public:
|
||||||
Optional<ByteBuffer> decompress();
|
Optional<ByteBuffer> decompress();
|
||||||
u32 checksum();
|
u32 checksum();
|
||||||
|
|
||||||
static Optional<Zlib> try_create(ReadonlyBytes data);
|
static Optional<ZlibDecompressor> try_create(ReadonlyBytes data);
|
||||||
static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
|
static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Zlib(ZlibHeader, ReadonlyBytes data);
|
ZlibDecompressor(ZlibHeader, ReadonlyBytes data);
|
||||||
|
|
||||||
ZlibHeader m_header;
|
ZlibHeader m_header;
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
|
||||||
if (font_buffer_offset + orig_length > font_buffer.size())
|
if (font_buffer_offset + orig_length > font_buffer.size())
|
||||||
return Error::from_string_literal("Uncompressed WOFF table too big");
|
return Error::from_string_literal("Uncompressed WOFF table too big");
|
||||||
if (comp_length < orig_length) {
|
if (comp_length < orig_length) {
|
||||||
auto decompressed = Compress::Zlib::decompress_all(buffer.slice(offset, comp_length));
|
auto decompressed = Compress::ZlibDecompressor::decompress_all(buffer.slice(offset, comp_length));
|
||||||
if (!decompressed.has_value())
|
if (!decompressed.has_value())
|
||||||
return Error::from_string_literal("Could not decompress WOFF table");
|
return Error::from_string_literal("Could not decompress WOFF table");
|
||||||
if (orig_length != decompressed->size())
|
if (orig_length != decompressed->size())
|
||||||
|
|
|
@ -706,7 +706,7 @@ static ErrorOr<void> decode_png_bitmap(PNGLoadingContext& context)
|
||||||
if (context.color_type == PNG::ColorType::IndexedColor && context.palette_data.is_empty())
|
if (context.color_type == PNG::ColorType::IndexedColor && context.palette_data.is_empty())
|
||||||
return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty.");
|
return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty.");
|
||||||
|
|
||||||
auto result = Compress::Zlib::decompress_all(context.compressed_data.span());
|
auto result = Compress::ZlibDecompressor::decompress_all(context.compressed_data.span());
|
||||||
if (!result.has_value()) {
|
if (!result.has_value()) {
|
||||||
context.state = PNGLoadingContext::State::Error;
|
context.state = PNGLoadingContext::State::Error;
|
||||||
return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed");
|
return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed");
|
||||||
|
|
|
@ -51,12 +51,12 @@ static ErrorOr<ByteBuffer> handle_content_encoding(ByteBuffer const& buf, Deprec
|
||||||
|
|
||||||
// Even though the content encoding is "deflate", it's actually deflate with the zlib wrapper.
|
// Even though the content encoding is "deflate", it's actually deflate with the zlib wrapper.
|
||||||
// https://tools.ietf.org/html/rfc7230#section-4.2.2
|
// https://tools.ietf.org/html/rfc7230#section-4.2.2
|
||||||
auto uncompressed = Compress::Zlib::decompress_all(buf);
|
auto uncompressed = Compress::ZlibDecompressor::decompress_all(buf);
|
||||||
if (!uncompressed.has_value()) {
|
if (!uncompressed.has_value()) {
|
||||||
// From the RFC:
|
// From the RFC:
|
||||||
// "Note: Some non-conformant implementations send the "deflate"
|
// "Note: Some non-conformant implementations send the "deflate"
|
||||||
// compressed data without the zlib wrapper."
|
// compressed data without the zlib wrapper."
|
||||||
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: Zlib::decompress_all() failed. Trying DeflateDecompressor::decompress_all()");
|
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: ZlibDecompressor::decompress_all() failed. Trying DeflateDecompressor::decompress_all()");
|
||||||
uncompressed = TRY(Compress::DeflateDecompressor::decompress_all(buf));
|
uncompressed = TRY(Compress::DeflateDecompressor::decompress_all(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue