1*86ee64e7SAndroid Build Coastguard Worker /* compression_utils_portable.h 2*86ee64e7SAndroid Build Coastguard Worker * 3*86ee64e7SAndroid Build Coastguard Worker * Copyright 2019 The Chromium Authors 4*86ee64e7SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*86ee64e7SAndroid Build Coastguard Worker * found in the Chromium source repository LICENSE file. 6*86ee64e7SAndroid Build Coastguard Worker */ 7*86ee64e7SAndroid Build Coastguard Worker #ifndef THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_ 8*86ee64e7SAndroid Build Coastguard Worker #define THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_ 9*86ee64e7SAndroid Build Coastguard Worker 10*86ee64e7SAndroid Build Coastguard Worker #include <stdint.h> 11*86ee64e7SAndroid Build Coastguard Worker 12*86ee64e7SAndroid Build Coastguard Worker /* TODO(cavalcantii): remove support for Chromium ever building with a system 13*86ee64e7SAndroid Build Coastguard Worker * zlib. 14*86ee64e7SAndroid Build Coastguard Worker */ 15*86ee64e7SAndroid Build Coastguard Worker #if defined(USE_SYSTEM_ZLIB) 16*86ee64e7SAndroid Build Coastguard Worker #include <zlib.h> 17*86ee64e7SAndroid Build Coastguard Worker /* AOSP build requires relative paths. */ 18*86ee64e7SAndroid Build Coastguard Worker #else 19*86ee64e7SAndroid Build Coastguard Worker #include "zlib.h" 20*86ee64e7SAndroid Build Coastguard Worker #endif 21*86ee64e7SAndroid Build Coastguard Worker 22*86ee64e7SAndroid Build Coastguard Worker namespace zlib_internal { 23*86ee64e7SAndroid Build Coastguard Worker 24*86ee64e7SAndroid Build Coastguard Worker enum WrapperType { 25*86ee64e7SAndroid Build Coastguard Worker ZLIB, 26*86ee64e7SAndroid Build Coastguard Worker GZIP, 27*86ee64e7SAndroid Build Coastguard Worker ZRAW, 28*86ee64e7SAndroid Build Coastguard Worker }; 29*86ee64e7SAndroid Build Coastguard Worker 30*86ee64e7SAndroid Build Coastguard Worker uLongf GzipExpectedCompressedSize(uLongf input_size); 31*86ee64e7SAndroid Build Coastguard Worker 32*86ee64e7SAndroid Build Coastguard Worker uint32_t GetGzipUncompressedSize(const Bytef* compressed_data, size_t length); 33*86ee64e7SAndroid Build Coastguard Worker 34*86ee64e7SAndroid Build Coastguard Worker int GzipCompressHelper(Bytef* dest, 35*86ee64e7SAndroid Build Coastguard Worker uLongf* dest_length, 36*86ee64e7SAndroid Build Coastguard Worker const Bytef* source, 37*86ee64e7SAndroid Build Coastguard Worker uLong source_length, 38*86ee64e7SAndroid Build Coastguard Worker void* (*malloc_fn)(size_t), 39*86ee64e7SAndroid Build Coastguard Worker void (*free_fn)(void*)); 40*86ee64e7SAndroid Build Coastguard Worker 41*86ee64e7SAndroid Build Coastguard Worker int CompressHelper(WrapperType wrapper_type, 42*86ee64e7SAndroid Build Coastguard Worker Bytef* dest, 43*86ee64e7SAndroid Build Coastguard Worker uLongf* dest_length, 44*86ee64e7SAndroid Build Coastguard Worker const Bytef* source, 45*86ee64e7SAndroid Build Coastguard Worker uLong source_length, 46*86ee64e7SAndroid Build Coastguard Worker int compression_level, 47*86ee64e7SAndroid Build Coastguard Worker void* (*malloc_fn)(size_t), 48*86ee64e7SAndroid Build Coastguard Worker void (*free_fn)(void*)); 49*86ee64e7SAndroid Build Coastguard Worker 50*86ee64e7SAndroid Build Coastguard Worker int GzipUncompressHelper(Bytef* dest, 51*86ee64e7SAndroid Build Coastguard Worker uLongf* dest_length, 52*86ee64e7SAndroid Build Coastguard Worker const Bytef* source, 53*86ee64e7SAndroid Build Coastguard Worker uLong source_length); 54*86ee64e7SAndroid Build Coastguard Worker 55*86ee64e7SAndroid Build Coastguard Worker int UncompressHelper(WrapperType wrapper_type, 56*86ee64e7SAndroid Build Coastguard Worker Bytef* dest, 57*86ee64e7SAndroid Build Coastguard Worker uLongf* dest_length, 58*86ee64e7SAndroid Build Coastguard Worker const Bytef* source, 59*86ee64e7SAndroid Build Coastguard Worker uLong source_length); 60*86ee64e7SAndroid Build Coastguard Worker 61*86ee64e7SAndroid Build Coastguard Worker } // namespace zlib_internal 62*86ee64e7SAndroid Build Coastguard Worker 63*86ee64e7SAndroid Build Coastguard Worker #endif // THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_ 64