Index: third_party/zlib/google/zip_reader.h |
diff --git a/third_party/zlib/google/zip_reader.h b/third_party/zlib/google/zip_reader.h |
index 5f0a16785de3bb51b304eb8723521c1acb839d63..66aba1e2130bc16dc7053a82a2fffd624745a1cc 100644 |
--- a/third_party/zlib/google/zip_reader.h |
+++ b/third_party/zlib/google/zip_reader.h |
@@ -21,6 +21,12 @@ |
#include "third_party/zlib/contrib/minizip/unzip.h" |
#endif |
+template <class T> class scoped_refptr; |
+ |
+namespace base { |
+class RefCountedMemory; |
+} |
+ |
namespace zip { |
// This class is used for reading zip files. A typical use case of this |
@@ -180,6 +186,23 @@ class ZipReader { |
bool ExtractCurrentEntryToFd(int fd); |
#endif |
+ // Extracts the current entry into memory. If the current file is a directory, |
+ // NULL is stored in the |output| parameter. If the current file is a file, |
+ // |output| is never set to NULL. Returns true on success. |
+ // OpenCurrentEntryInZip() must be called beforehand. |
+ // Note that EntryInfo::original_size() can return a different value than the |
+ // real size of the uncompressed contents. Therefore, to prevent excessive |
+ // memory usage, the maximum amount of data to read has to be specified in |
+ // |max_read_bytes|. If the size of the uncompressed data is bigger than |
+ // max_read_bytes then false is returned. |max_read_bytes| must be positive |
+ // non-zero. |
+ bool ExtractCurrentEntryToRefCountedMemory( |
+ int max_read_bytes, |
+ base::RefCountedMemory** output) const; |
satorux1
2014/02/26 04:05:47
I found this API complex. RefCountedMemory is tric
João Eiras
2014/02/26 17:35:38
Tricky in what way ?
I'd have to warn that files
satorux1
2014/02/27 06:57:00
Reference counting in general is tricky. It makes
satorux1
2014/02/27 16:39:03
Maybe your concern was when the input data was big
|
+ bool ExtractCurrentEntryToRefCountedMemory( |
+ int max_read_bytes, |
+ scoped_refptr<base::RefCountedMemory>* output) const; |
satorux1
2014/02/26 04:05:47
scoped_refptr<> should only be used when an object
|
+ |
// Returns the current entry info. Returns NULL if the current entry is |
// not yet opened. OpenCurrentEntryInZip() must be called beforehand. |
EntryInfo* current_entry_info() const { |