#include "components/services/unzip/unzipper_impl.h"
#include <string>
#include <utility>
#include "base/compiler_specific.h"
#include "base/files/file.h"
#include "base/files/file_error_or.h"
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "third_party/ced/src/compact_enc_det/compact_enc_det.h"
#include "third_party/zlib/google/redact.h"
#include "third_party/zlib/google/zip.h"
#include "third_party/zlib/google/zip_reader.h"
namespace unzip {
namespace {
bool CreateDirectory(storage::mojom::Directory* output_dir,
const base::FilePath& path) { … }
class Writer : public zip::FileWriterDelegate { … };
std::unique_ptr<zip::WriterDelegate> MakeFileWriterDelegate(
storage::mojom::Directory* output_dir,
const base::FilePath& path) { … }
bool Filter(const mojo::Remote<mojom::UnzipFilter>& filter,
const base::FilePath& path) { … }
std::string GetRawFileNamesFromZip(const base::File& zip_file) { … }
}
UnzipperImpl::UnzipperImpl() = default;
UnzipperImpl::UnzipperImpl(mojo::PendingReceiver<mojom::Unzipper> receiver)
: … { … }
UnzipperImpl::~UnzipperImpl() = default;
Encoding GetEncoding(const base::File& zip_file) { … }
void UnzipperImpl::Listener(const mojo::Remote<mojom::UnzipListener>& listener,
uint64_t bytes) { … }
bool RunUnzip(base::File zip_file,
mojo::PendingRemote<storage::mojom::Directory> output_dir_remote,
std::string encoding_name,
std::string password,
mojo::PendingRemote<mojom::UnzipFilter> filter_remote,
mojo::PendingRemote<mojom::UnzipListener> listener_remote) { … }
void UnzipperImpl::Unzip(
base::File zip_file,
mojo::PendingRemote<storage::mojom::Directory> output_dir_remote,
mojom::UnzipOptionsPtr set_options,
mojo::PendingRemote<mojom::UnzipFilter> filter_remote,
mojo::PendingRemote<mojom::UnzipListener> listener_remote,
UnzipCallback callback) { … }
void UnzipperImpl::DetectEncoding(base::File zip_file,
DetectEncodingCallback callback) { … }
void UnzipperImpl::GetExtractedInfo(base::File zip_file,
GetExtractedInfoCallback callback) { … }
void UnzipperImpl::OnReceiverDisconnect() { … }
}