| Index: chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
|
| diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
|
| index f016699aee0a6dfc5e60af6a3231466fa238a4e7..7eafd1234e9ee6b9066cdd83e57bea94b560dc50 100644
|
| --- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
|
| +++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
|
| @@ -9,54 +9,55 @@
|
| #include "base/files/file.h"
|
| #include "base/files/file_path.h"
|
| #include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "content/public/browser/utility_process_host.h"
|
| -#include "content/public/browser/utility_process_host_client.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "chrome/common/safe_archive_analyzer.mojom.h"
|
| +#include "content/public/browser/utility_process_mojo_client.h"
|
|
|
| namespace safe_browsing {
|
|
|
| -namespace zip_analyzer {
|
| -struct Results;
|
| -}
|
| -
|
| -// This class is used to analyze DMG files in a sandboxed utility process for
|
| -// file download protection. This class must be created on the UI thread, and
|
| -// which is where the result callback will be invoked.
|
| -class SandboxedDMGAnalyzer : public content::UtilityProcessHostClient {
|
| +// This class is used to analyze DMG files in a sandboxed utility process
|
| +// for file download protection. This class lives on the UI thread, which
|
| +// is where the result callback will be invoked.
|
| +class SandboxedDMGAnalyzer
|
| + : public base::RefCountedThreadSafe<SandboxedDMGAnalyzer> {
|
| public:
|
| - // Callback that is invoked when the analysis results are ready.
|
| - using ResultsCallback = base::Callback<void(const zip_analyzer::Results&)>;
|
| + using Results = zip_analyzer::Results;
|
| +
|
| + using ResultCallback = base::Callback<void(const Results&)>;
|
|
|
| SandboxedDMGAnalyzer(const base::FilePath& dmg_file,
|
| - const ResultsCallback& callback);
|
| + const ResultCallback& callback);
|
|
|
| - // Begins the analysis. This must be called on the UI thread.
|
| + // Starts the analysis. Must be called on the UI thread.
|
| void Start();
|
|
|
| private:
|
| - ~SandboxedDMGAnalyzer() override;
|
| + friend class base::RefCountedThreadSafe<SandboxedDMGAnalyzer>;
|
| +
|
| + ~SandboxedDMGAnalyzer();
|
| +
|
| + // Prepare the file for analysis.
|
| + void PrepareFileToAnalyze();
|
|
|
| - // Called on the blocking pool, this opens the DMG file, in preparation for
|
| - // sending the FD to the utility process.
|
| - void OpenDMGFile();
|
| + // If file preparation failed, analysis has failed: report failure.
|
| + void ReportFileFailure();
|
|
|
| - // Called on the IO thread, this starts the utility process.
|
| - void StartAnalysis();
|
| + // Starts the utility process and sends it a file analyze request.
|
| + void AnalyzeFile(base::File file);
|
|
|
| - // content::UtilityProcessHostClient:
|
| - void OnProcessCrashed(int exit_code) override;
|
| - void OnProcessLaunchFailed(int error_code) override;
|
| - bool OnMessageReceived(const IPC::Message& message) override;
|
| + // The response containing the file analyze results.
|
| + void AnalyzeFileDone(const Results& results);
|
|
|
| - // Message handler to receive the results of the analysis. Invokes the
|
| - // |callback_|.
|
| - void OnAnalysisFinished(const zip_analyzer::Results& results);
|
| + // The file path of the file to analyze.
|
| + const base::FilePath file_path_;
|
|
|
| - const base::FilePath file_path_; // The path of the DMG file.
|
| - base::File file_; // The opened file handle for |file_path_|.
|
| + // Utility client used to send analyze tasks to the utility process.
|
| + std::unique_ptr<
|
| + content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>
|
| + utility_process_mojo_client_;
|
|
|
| - const ResultsCallback callback_; // Result callback.
|
| - bool callback_called_; // Whether |callback_| has already been invoked.
|
| + // Callback invoked on the UI thread with the file analyze results.
|
| + const ResultCallback callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SandboxedDMGAnalyzer);
|
| };
|
|
|