 Chromium Code Reviews
 Chromium Code Reviews Issue 2737763002:
  Convert utility process Safe Browsing ZIP/DMG Analyzer IPC to mojo  (Closed)
    
  
    Issue 2737763002:
  Convert utility process Safe Browsing ZIP/DMG Analyzer IPC to mojo  (Closed) 
  | 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..fba7aa083122aae1a97b7708954be871947d1b79 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; | 
| -} | 
| +using Results = zip_analyzer::Results; | 
| 
dcheng
2017/03/10 04:13:43
Nit: no using declaration in header (Results is a
 
Noel Gordon
2017/03/10 14:53:17
Right.
 | 
| -// 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 | 
| +// 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, | 
| // which is where the result callback will be invoked. | 
| -class SandboxedDMGAnalyzer : public content::UtilityProcessHostClient { | 
| +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 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>; | 
| - // Called on the blocking pool, this opens the DMG file, in preparation for | 
| - // sending the FD to the utility process. | 
| - void OpenDMGFile(); | 
| + ~SandboxedDMGAnalyzer(); | 
| - // Called on the IO thread, this starts the utility process. | 
| - void StartAnalysis(); | 
| + // Prepare the file for analysis. | 
| + void PrepareFileToAnalyze(); | 
| - // content::UtilityProcessHostClient: | 
| - void OnProcessCrashed(int exit_code) override; | 
| - void OnProcessLaunchFailed(int error_code) override; | 
| - bool OnMessageReceived(const IPC::Message& message) override; | 
| + // If file preparation failed, analysis has failed: report failure. | 
| + void ReportFileFailure(); | 
| - // Message handler to receive the results of the analysis. Invokes the | 
| - // |callback_|. | 
| - void OnAnalysisFinished(const zip_analyzer::Results& results); | 
| + // Starts the utility process and sends it a file analyze request. | 
| + void AnalyzeFile(base::File file); | 
| - const base::FilePath file_path_; // The path of the DMG file. | 
| - base::File file_; // The opened file handle for |file_path_|. | 
| + // The response containing the file analyze results. | 
| + void AnalyzeFileDone(const Results& results); | 
| - const ResultsCallback callback_; // Result callback. | 
| - bool callback_called_; // Whether |callback_| has already been invoked. | 
| + // The file path of the file to analyze. | 
| + const base::FilePath 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_; | 
| + | 
| + // Callback invoked on the UI thread with the file analyze results. | 
| + const ResultCallback callback_; | 
| DISALLOW_COPY_AND_ASSIGN(SandboxedDMGAnalyzer); | 
| }; |