Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(351)

Unified Diff: chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h

Issue 2737763002: Convert utility process Safe Browsing ZIP/DMG Analyzer IPC to mojo (Closed)
Patch Set: Add //components/safe_browsing:csd_proto to typemap deps. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698