#include "chrome/utility/safe_browsing/archive_analyzer.h"
#include "base/feature_list.h"
#include "build/build_config.h"
#include "build/buildflag.h"
#include "chrome/common/safe_browsing/archive_analyzer_results.h"
#include "chrome/utility/safe_browsing/seven_zip_analyzer.h"
#include "chrome/utility/safe_browsing/zip_analyzer.h"
#include "components/safe_browsing/content/common/proto/download_file_types.pb.h"
#include "components/safe_browsing/core/common/features.h"
#if BUILDFLAG(IS_MAC)
#include "chrome/utility/safe_browsing/mac/dmg_analyzer.h"
#endif
#if USE_UNRAR
#include "chrome/utility/safe_browsing/rar_analyzer.h"
#endif
namespace safe_browsing {
std::unique_ptr<ArchiveAnalyzer> ArchiveAnalyzer::CreateForArchiveType(
DownloadFileType_InspectionType file_type) { … }
ArchiveAnalyzer::ArchiveAnalyzer() = default;
ArchiveAnalyzer::~ArchiveAnalyzer() = default;
void ArchiveAnalyzer::Analyze(
base::File archive_file,
base::FilePath relative_path,
const std::optional<std::string>& password,
FinishedAnalysisCallback finished_analysis_callback,
GetTempFileCallback get_temp_file_callback,
ArchiveAnalyzerResults* results) { … }
void ArchiveAnalyzer::SetResultsForTesting(ArchiveAnalyzerResults* results) { … }
void ArchiveAnalyzer::SetFinishedCallbackForTesting(
FinishedAnalysisCallback callback) { … }
base::File& ArchiveAnalyzer::GetArchiveFile() { … }
void ArchiveAnalyzer::GetTempFile(
base::OnceCallback<void(base::File)> callback) { … }
const base::FilePath& ArchiveAnalyzer::GetRootPath() const { … }
bool ArchiveAnalyzer::UpdateResultsForEntry(base::File entry,
base::FilePath path,
int file_length,
bool is_encrypted,
bool is_directory,
bool contents_valid) { … }
void ArchiveAnalyzer::InitComplete(ArchiveAnalysisResult result) { … }
void ArchiveAnalyzer::NestedAnalysisFinished(base::File entry,
base::FilePath path,
int entry_size) { … }
bool ArchiveAnalyzer::IsTopLevelArchive() const { … }
}