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

Unified Diff: chrome/utility/chrome_content_utility_client.cc

Issue 2810343002: Convert UtilityThread/Clients to add ConnectionFilters instead of using ChildThread's InterfaceRegi… (Closed)
Patch Set: . Created 3 years, 8 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') | chrome/utility/extensions/extensions_handler.h » ('j') | 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 34fa8686cb9814cf44a1919150b89370be33a11a..55bb0730aaf91fb6bea1ebba54561c1e943292cb 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -19,13 +19,15 @@
#include "components/safe_json/utility/safe_json_parser_mojo_impl.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/service_info.h"
+#include "content/public/common/service_manager_connection.h"
+#include "content/public/common/simple_connection_filter.h"
#include "content/public/utility/utility_thread.h"
#include "courgette/courgette.h"
#include "courgette/third_party/bsdiff/bsdiff.h"
#include "extensions/features/features.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "printing/features/features.h"
-#include "services/service_manager/public/cpp/interface_registry.h"
+#include "services/service_manager/public/cpp/binder_registry.h"
#include "third_party/zlib/google/zip.h"
#if !defined(OS_ANDROID)
@@ -244,55 +246,66 @@ void ChromeContentUtilityClient::UtilityThreadStarted() {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kUtilityProcessRunningElevated))
utility_process_running_elevated_ = true;
-}
-
-bool ChromeContentUtilityClient::OnMessageReceived(
- const IPC::Message& message) {
- if (utility_process_running_elevated_)
- return false;
- for (const auto& handler : handlers_) {
- if (handler->OnMessageReceived(message))
- return true;
- }
-
- return false;
-}
-
-void ChromeContentUtilityClient::ExposeInterfacesToBrowser(
- service_manager::InterfaceRegistry* registry) {
+ auto registry = base::MakeUnique<service_manager::BinderRegistry>();
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionsHandler::ExposeInterfacesToBrowser(
- registry, utility_process_running_elevated_);
+ registry.get(), utility_process_running_elevated_);
extensions::utility_handler::ExposeInterfacesToBrowser(
- registry, utility_process_running_elevated_);
+ registry.get(), utility_process_running_elevated_);
#endif
// If our process runs with elevated privileges, only add elevated Mojo
// interfaces to the interface registry.
- if (utility_process_running_elevated_)
- return;
-
- registry->AddInterface(base::Bind(&FilePatcherImpl::Create));
+ if (!utility_process_running_elevated_) {
+ registry->AddInterface(base::Bind(&FilePatcherImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#if !defined(OS_ANDROID)
- registry->AddInterface<net::interfaces::ProxyResolverFactory>(
- base::Bind(CreateProxyResolverFactory));
- registry->AddInterface(base::Bind(CreateResourceUsageReporter));
- registry->AddInterface(base::Bind(&ProfileImportHandler::Create));
- registry->AddInterface(
- base::Bind(&media_router::DialDeviceDescriptionParserImpl::Create));
+ registry->AddInterface<net::interfaces::ProxyResolverFactory>(
+ base::Bind(CreateProxyResolverFactory),
+ base::ThreadTaskRunnerHandle::Get());
+ registry->AddInterface(base::Bind(CreateResourceUsageReporter),
+ base::ThreadTaskRunnerHandle::Get());
+ registry->AddInterface(base::Bind(&ProfileImportHandler::Create),
+ base::ThreadTaskRunnerHandle::Get());
+ registry->AddInterface(
+ base::Bind(&media_router::DialDeviceDescriptionParserImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#endif // !defined(OS_ANDROID)
- registry->AddInterface(base::Bind(&payments::PaymentManifestParser::Create));
- registry->AddInterface(
- base::Bind(&safe_json::SafeJsonParserMojoImpl::Create));
+ registry->AddInterface(base::Bind(&payments::PaymentManifestParser::Create),
+ base::ThreadTaskRunnerHandle::Get());
+ registry->AddInterface(
+ base::Bind(&safe_json::SafeJsonParserMojoImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#if defined(OS_WIN)
- registry->AddInterface(base::Bind(&ShellHandlerImpl::Create));
+ registry->AddInterface(base::Bind(&ShellHandlerImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#endif
#if defined(OS_CHROMEOS)
- registry->AddInterface(base::Bind(&ZipFileCreatorImpl::Create));
+ registry->AddInterface(base::Bind(&ZipFileCreatorImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#endif
#if defined(FULL_SAFE_BROWSING)
- registry->AddInterface(base::Bind(&SafeArchiveAnalyzerImpl::Create));
+ registry->AddInterface(base::Bind(&SafeArchiveAnalyzerImpl::Create),
+ base::ThreadTaskRunnerHandle::Get());
#endif
+ }
+ content::ChildThread::Get()
+ ->GetServiceManagerConnection()
+ ->AddConnectionFilter(base::MakeUnique<content::SimpleConnectionFilter>(
+ std::move(registry)));
+}
+
+bool ChromeContentUtilityClient::OnMessageReceived(
+ const IPC::Message& message) {
+ if (utility_process_running_elevated_)
+ return false;
+
+ for (const auto& handler : handlers_) {
+ if (handler->OnMessageReceived(message))
+ return true;
+ }
+
+ return false;
}
// static
« no previous file with comments | « chrome/utility/chrome_content_utility_client.h ('k') | chrome/utility/extensions/extensions_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698