Expose whether a file was compressed before being loaded in memory.

This is useful when we want to write an APK and keep the same
compression parameters as the original APK.

Test: Unit tests pass.

Change-Id: I3afcae1c8727e429b08c9ac7359cf0789ff4abfc
This commit is contained in:
Pierre Lecesne
2017-02-02 23:13:58 +00:00
parent ddb80216b9
commit 970732dc45
3 changed files with 10 additions and 0 deletions

View File

@@ -63,6 +63,11 @@ class IFile {
IFile* CreateFileSegment(size_t offset, size_t len);
/** Returns whether the file was compressed before it was stored in memory. */
virtual bool WasCompressed() {
return false;
}
private:
// Any segments created from this IFile need to be owned by this IFile, so
// keep them

View File

@@ -59,6 +59,10 @@ std::unique_ptr<IData> ZipFile::OpenAsData() {
const Source& ZipFile::GetSource() const { return source_; }
bool ZipFile::WasCompressed() {
return zip_entry_.method != kCompressStored;
}
ZipFileCollectionIterator::ZipFileCollectionIterator(
ZipFileCollection* collection)
: current_(collection->files_.begin()), end_(collection->files_.end()) {}

View File

@@ -40,6 +40,7 @@ class ZipFile : public IFile {
std::unique_ptr<IData> OpenAsData() override;
const Source& GetSource() const override;
bool WasCompressed() override;
private:
ZipArchiveHandle zip_handle_;