910e62b5创建于 1月15日历史提交
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// This file contains the zip file analysis implementation for download
// protection, which runs in a sandboxed utility process.

#ifndef CHROME_UTILITY_SAFE_BROWSING_ZIP_ANALYZER_H_
#define CHROME_UTILITY_SAFE_BROWSING_ZIP_ANALYZER_H_

#include "base/files/file.h"
#include "base/memory/raw_ptr.h"
#include "chrome/utility/safe_browsing/archive_analyzer.h"
#include "components/safe_browsing/content/common/file_type_policies.h"
#include "third_party/zlib/google/zip_reader.h"

namespace safe_browsing {

class ZipAnalyzer : public ArchiveAnalyzer {
 public:
  ZipAnalyzer();
  ~ZipAnalyzer() override;

  ZipAnalyzer(const ZipAnalyzer&) = delete;
  ZipAnalyzer& operator=(const ZipAnalyzer&) = delete;

 private:
  void Init() override;
  bool ResumeExtraction() override;
  base::WeakPtr<ArchiveAnalyzer> GetWeakPtr() override;

  void OnGetTempFile(base::File temp_file);

  base::File temp_file_;
  zip::ZipReader reader_;

  bool has_encrypted_ = false;
  bool has_aes_encrypted_ = false;
  bool has_disk_error_ = false;

  base::WeakPtrFactory<ZipAnalyzer> weak_factory_{this};
};

}  // namespace safe_browsing

#endif  // CHROME_UTILITY_SAFE_BROWSING_ZIP_ANALYZER_H_