| Index: ui/file_manager/zip_archiver/cpp/compressor_io_javascript_stream.h
|
| diff --git a/ui/file_manager/zip_archiver/cpp/compressor_io_javascript_stream.h b/ui/file_manager/zip_archiver/cpp/compressor_io_javascript_stream.h
|
| index d0a22d854f5e67f6c52e2ec14727aabe69d50560..d33172ef2269afda5e757e34c67f5c09257dbcab 100644
|
| --- a/ui/file_manager/zip_archiver/cpp/compressor_io_javascript_stream.h
|
| +++ b/ui/file_manager/zip_archiver/cpp/compressor_io_javascript_stream.h
|
| @@ -8,7 +8,6 @@
|
| #include <pthread.h>
|
| #include <string>
|
|
|
| -#include "archive.h"
|
| #include "ppapi/cpp/instance_handle.h"
|
| #include "ppapi/cpp/var_array_buffer.h"
|
| #include "ppapi/utility/completion_callback_factory.h"
|
| @@ -18,6 +17,12 @@
|
| #include "compressor_stream.h"
|
| #include "javascript_compressor_requestor_interface.h"
|
|
|
| +// A namespace with constants used by CompressorArchiveLibarchive.
|
| +namespace compressor_stream_constants {
|
| +// We need at least 256KB for MiniZip.
|
| +const int64_t kMaximumDataChunkSize = 512 * 1024;
|
| +} // namespace compressor_archive_constants
|
| +
|
| class CompressorIOJavaScriptStream : public CompressorStream {
|
| public:
|
| CompressorIOJavaScriptStream(
|
| @@ -25,15 +30,21 @@ class CompressorIOJavaScriptStream : public CompressorStream {
|
|
|
| virtual ~CompressorIOJavaScriptStream();
|
|
|
| - virtual int64_t Write(int64_t bytes_to_read,
|
| - const pp::VarArrayBuffer& buffer);
|
| + // Flushes the data in buffer_. Since minizip sends tons of write requests and
|
| + // communication between C++ and JS is very expensive, we need to cache data
|
| + // in buffer_ and send them in a lump.
|
| + virtual int64_t Flush();
|
| +
|
| + virtual int64_t Write(int64_t zip_offset,
|
| + int64_t zip_length,
|
| + const char* zip_buffer);
|
|
|
| - virtual void WriteChunkDone(int64_t write_bytes);
|
| + virtual int64_t WriteChunkDone(int64_t write_bytes);
|
|
|
| virtual int64_t Read(int64_t bytes_to_read, char* destination_buffer);
|
|
|
| - virtual void ReadFileChunkDone(int64_t read_bytes,
|
| - pp::VarArrayBuffer* buffer);
|
| + virtual int64_t ReadFileChunkDone(int64_t read_bytes,
|
| + pp::VarArrayBuffer* buffer);
|
|
|
| private:
|
| // A requestor that makes calls to JavaScript to read and write chunks.
|
| @@ -58,6 +69,15 @@ private:
|
|
|
| // Stores the data read from JavaScript.
|
| char* destination_buffer_;
|
| +
|
| + // The current offset from which buffer_ has data.
|
| + int64_t buffer_offset_;
|
| +
|
| + // The size of the data in buffer_.
|
| + int64_t buffer_data_length_;
|
| +
|
| + // The buffer that contains cached data.
|
| + char* buffer_;
|
| };
|
|
|
| #endif // COMPRESSOR_IO_JAVSCRIPT_STREAM_H_
|
|
|