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

Unified Diff: chrome/utility/chrome_content_utility_client.cc

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
« no previous file with comments | « chrome/utility/chrome_content_utility_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/utility/chrome_content_utility_client.cc
diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
index 1e013333a9f040790e9720625fb07334929f33e4..6a77ced0936a5e5bd2340f1d64bf075f143910ab 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -13,11 +13,7 @@
#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
#include "base/time/time.h"
-#include "build/build_config.h"
-#include "chrome/common/chrome_utility_messages.h"
#include "chrome/common/file_patcher.mojom.h"
-#include "chrome/common/safe_browsing/zip_analyzer.h"
-#include "chrome/common/safe_browsing/zip_analyzer_results.h"
#include "chrome/utility/utility_message_handler.h"
#include "components/safe_json/utility/safe_json_parser_mojo_impl.h"
#include "content/public/child/image_decoder_utils.h"
@@ -27,14 +23,12 @@
#include "courgette/courgette.h"
#include "courgette/third_party/bsdiff/bsdiff.h"
#include "extensions/features/features.h"
-#include "ipc/ipc_channel.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "printing/features/features.h"
#include "services/image_decoder/image_decoder_service.h"
#include "services/image_decoder/public/interfaces/constants.mojom.h"
#include "services/service_manager/public/cpp/interface_registry.h"
#include "third_party/zlib/google/zip.h"
-#include "ui/gfx/geometry/size.h"
#if !defined(OS_ANDROID)
#include "chrome/common/resource_usage_reporter.mojom.h"
@@ -62,9 +56,14 @@
#include "chrome/utility/printing_handler.h"
#endif
-#if defined(OS_MACOSX) && defined(FULL_SAFE_BROWSING)
+#if defined(FULL_SAFE_BROWSING)
+#include "chrome/common/safe_archive_analyzer.mojom.h"
+#include "chrome/common/safe_browsing/zip_analyzer.h"
+#include "chrome/common/safe_browsing/zip_analyzer_results.h"
+#if defined(OS_MACOSX)
#include "chrome/utility/safe_browsing/mac/dmg_analyzer.h"
#endif
+#endif
namespace {
@@ -135,6 +134,47 @@ class ZipFileCreatorImpl : public chrome::mojom::ZipFileCreator {
};
#endif // defined(OS_CHROMEOS)
+#if defined(FULL_SAFE_BROWSING)
+class SafeArchiveAnalyzerImpl : public chrome::mojom::SafeArchiveAnalyzer {
+ public:
+ SafeArchiveAnalyzerImpl() = default;
+ ~SafeArchiveAnalyzerImpl() override = default;
+
+ static void Create(chrome::mojom::SafeArchiveAnalyzerRequest request) {
+ mojo::MakeStrongBinding(base::MakeUnique<SafeArchiveAnalyzerImpl>(),
+ std::move(request));
+ }
+
+ private:
+ // chrome::mojom::SafeArchiveAnalyzer:
+ void AnalyzeZipFile(base::File zip_file,
+ base::File temporary_file,
+ const AnalyzeZipFileCallback& callback) override {
+ DCHECK(temporary_file.IsValid());
Noel Gordon 2017/03/10 15:19:31 @sammc, these DCHECK are redundant, no? Mojo won'
Noel Gordon 2017/03/10 15:38:50 Reading traits, mojo can rx a kInvalidPlatformFile
+ DCHECK(zip_file.IsValid());
+
+ safe_browsing::zip_analyzer::Results results;
+ safe_browsing::zip_analyzer::AnalyzeZipFile(
+ std::move(zip_file), std::move(temporary_file), &results);
+ callback.Run(results);
+ }
+
+ void AnalyzeDmgFile(base::File dmg_file,
+ const AnalyzeDmgFileCallback& callback) override {
+#if defined(OS_MACOSX)
+ DCHECK(dmg_file.IsValid());
+ safe_browsing::zip_analyzer::Results results;
+ safe_browsing::dmg::AnalyzeDMGFile(std::move(dmg_file), &results);
+ callback.Run(results);
+#else
+ NOTREACHED();
+#endif
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(SafeArchiveAnalyzerImpl);
+};
+#endif // defined(FULL_SAFE_BROWSING)
+
#if !defined(OS_ANDROID)
void CreateProxyResolverFactory(
net::interfaces::ProxyResolverFactoryRequest request) {
@@ -210,22 +250,6 @@ bool ChromeContentUtilityClient::OnMessageReceived(
if (utility_process_running_elevated_)
return false;
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ChromeContentUtilityClient, message)
-#if defined(FULL_SAFE_BROWSING)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
- OnAnalyzeZipFileForDownloadProtection)
-#if defined(OS_MACOSX)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection,
- OnAnalyzeDmgFileForDownloadProtection)
-#endif // defined(OS_MACOSX)
-#endif // defined(FULL_SAFE_BROWSING)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
-
- if (handled)
- return true;
-
for (auto* handler : handlers_) {
if (handler->OnMessageReceived(message))
return true;
@@ -260,6 +284,9 @@ void ChromeContentUtilityClient::ExposeInterfacesToBrowser(
#if defined(OS_CHROMEOS)
registry->AddInterface(base::Bind(&ZipFileCreatorImpl::Create));
#endif
+#if defined(FULL_SAFE_BROWSING)
+ registry->AddInterface(base::Bind(&SafeArchiveAnalyzerImpl::Create));
+#endif
}
void ChromeContentUtilityClient::RegisterServices(StaticServiceMap* services) {
@@ -275,32 +302,3 @@ void ChromeContentUtilityClient::PreSandboxStartup() {
extensions::ExtensionsHandler::PreSandboxStartup();
#endif
}
-
-#if defined(FULL_SAFE_BROWSING)
-void ChromeContentUtilityClient::OnAnalyzeZipFileForDownloadProtection(
- const IPC::PlatformFileForTransit& zip_file,
- const IPC::PlatformFileForTransit& temp_file) {
- safe_browsing::zip_analyzer::Results results;
- safe_browsing::zip_analyzer::AnalyzeZipFile(
- IPC::PlatformFileForTransitToFile(zip_file),
- IPC::PlatformFileForTransitToFile(temp_file), &results);
- content::UtilityThread::Get()->Send(
- new ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished(
- results));
- content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-
-#if defined(OS_MACOSX)
-void ChromeContentUtilityClient::OnAnalyzeDmgFileForDownloadProtection(
- const IPC::PlatformFileForTransit& dmg_file) {
- safe_browsing::zip_analyzer::Results results;
- safe_browsing::dmg::AnalyzeDMGFile(
- IPC::PlatformFileForTransitToFile(dmg_file), &results);
- content::UtilityThread::Get()->Send(
- new ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished(
- results));
- content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-#endif // defined(OS_MACOSX)
-
-#endif // defined(FULL_SAFE_BROWSING)
« no previous file with comments | « chrome/utility/chrome_content_utility_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698