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 2fea5c2f9ca90654d7990acc0bc056474a4c20e7..436ee9e50bb5161121d3d0878366361a67d6399b 100644 |
--- a/chrome/utility/chrome_content_utility_client.cc |
+++ b/chrome/utility/chrome_content_utility_client.cc |
@@ -115,7 +115,7 @@ std::unique_ptr<service_manager::Service> CreateImageDecoderService() { |
ChromeContentUtilityClient::ChromeContentUtilityClient() |
: filter_messages_(false) { |
#if BUILDFLAG(ENABLE_EXTENSIONS) |
- handlers_.push_back(new extensions::ExtensionsHandler(this)); |
+ handlers_.push_back(new extensions::ExtensionsHandler()); |
handlers_.push_back(new image_writer::ImageWriterHandler()); |
#endif |
@@ -192,13 +192,17 @@ bool ChromeContentUtilityClient::OnMessageReceived( |
void ChromeContentUtilityClient::ExposeInterfacesToBrowser( |
service_manager::InterfaceRegistry* registry) { |
- // When the utility process is running with elevated privileges, we need to |
- // filter messages so that only a whitelist of IPCs can run. In Mojo, there's |
- // no way of filtering individual messages. Instead, we can avoid adding |
- // non-whitelisted Mojo services to the service_manager::InterfaceRegistry. |
- // TODO(amistry): Use a whitelist once the whistlisted IPCs have been |
- // converted to Mojo. |
- if (filter_messages_) |
+ const bool running_elevated = |
+ base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kUtilityProcessRunningElevated); |
+#if BUILDFLAG(ENABLE_EXTENSIONS) |
+ ChromeContentUtilityClient* utility_client = this; |
+ extensions::ExtensionsHandler::ExposeInterfacesToBrowser( |
+ registry, utility_client, running_elevated); |
+#endif |
+ // If our process runs with elevated privileges, only add elevated |
+ // Mojo services to the interface registry. |
+ if (running_elevated) |
return; |
#if !defined(OS_ANDROID) |