Commit 2382ca6f authored by Robert Sesek's avatar Robert Sesek Committed by Commit Bot

Split some Mojo binding sites into _receiver_bindings files under SECURITY_OWNERS review.

With the Service Manager going away, the manifest files that previously
mediated access to Mojo services across processes are going away too.
Under the new system, various //content classes have methods that bind
mojo::Receiver<T> objects via GenericPendingReceiver. Since these call
sites control access to objects across a privilege boundary, they should
be under the SECURITY_OWNERS review system.

This pass splits out BindHostReceiver calls.

Bug: 1012033
Change-Id: I390a26af782953625b603270e3201535ff4ee9d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1880315Reviewed-by: default avatarYuchen Liu <yucliu@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarSean Topping <seantopping@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710095}
parent e89053db
...@@ -56,6 +56,7 @@ cast_source_set("browser") { ...@@ -56,6 +56,7 @@ cast_source_set("browser") {
"cast_browser_process.h", "cast_browser_process.h",
"cast_content_browser_client.cc", "cast_content_browser_client.cc",
"cast_content_browser_client.h", "cast_content_browser_client.h",
"cast_content_browser_client_receiver_bindings.cc",
"cast_content_gesture_handler.cc", "cast_content_gesture_handler.cc",
"cast_content_gesture_handler.h", "cast_content_gesture_handler.h",
"cast_download_manager_delegate.cc", "cast_download_manager_delegate.cc",
......
...@@ -4,3 +4,5 @@ per-file cast_overlay_manifests.h=set noparent ...@@ -4,3 +4,5 @@ per-file cast_overlay_manifests.h=set noparent
per-file cast_overlay_manifests.h=file://ipc/SECURITY_OWNERS per-file cast_overlay_manifests.h=file://ipc/SECURITY_OWNERS
per-file cast_overlay_manifests.cc=set noparent per-file cast_overlay_manifests.cc=set noparent
per-file cast_overlay_manifests.cc=file://ipc/SECURITY_OWNERS per-file cast_overlay_manifests.cc=file://ipc/SECURITY_OWNERS
per-file cast_content_browser_client_receiver_bindings.cc=set noparent
per-file cast_content_browser_client_receiver_bindings.cc=file://ipc/SECURITY_OWNERS
...@@ -85,12 +85,6 @@ ...@@ -85,12 +85,6 @@
#include "ui/display/screen.h" #include "ui/display/screen.h"
#include "ui/gl/gl_switches.h" #include "ui/gl/gl_switches.h"
#if BUILDFLAG(ENABLE_CAST_RENDERER)
#include "chromecast/media/service/cast_mojo_media_client.h"
#include "media/mojo/mojom/constants.mojom.h" // nogncheck
#include "media/mojo/services/media_service.h" // nogncheck
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if defined(OS_LINUX) || defined(OS_ANDROID) #if defined(OS_LINUX) || defined(OS_ANDROID)
#include "components/crash/content/browser/crash_handler_host_linux.h" #include "components/crash/content/browser/crash_handler_host_linux.h"
#endif // defined(OS_LINUX) || defined(OS_ANDROID) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
...@@ -137,71 +131,12 @@ ...@@ -137,71 +131,12 @@
#endif #endif
#if BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER) #if BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER)
#include "chromecast/browser/webview/js_channel_service.h"
#include "chromecast/browser/webview/webview_controller.h" #include "chromecast/browser/webview/webview_controller.h"
#include "chromecast/common/mojom/js_channel.mojom.h"
#endif // BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER) #endif // BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER)
namespace chromecast { namespace chromecast {
namespace shell { namespace shell {
namespace {
#if BUILDFLAG(ENABLE_CAST_RENDERER)
static void CreateMediaService(CastContentBrowserClient* browser_client,
service_manager::mojom::ServiceRequest request) {
std::unique_ptr<::media::MediaService> service;
auto mojo_media_client = std::make_unique<media::CastMojoMediaClient>(
browser_client->GetCmaBackendFactory(),
base::Bind(&CastContentBrowserClient::CreateCdmFactory,
base::Unretained(browser_client)),
browser_client->GetVideoModeSwitcher(),
browser_client->GetVideoResolutionPolicy());
service = std::make_unique<::media::MediaService>(
std::move(mojo_media_client), std::move(request));
service_manager::Service::RunAsyncUntilTermination(std::move(service));
}
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
void CreateOriginId(cdm::MediaDrmStorageImpl::OriginIdObtainedCB callback) {
// TODO(crbug.com/917527): Update this to actually get a pre-provisioned
// origin ID.
std::move(callback).Run(true, base::UnguessableToken::Create());
}
void AllowEmptyOriginIdCB(base::OnceCallback<void(bool)> callback) {
std::move(callback).Run(false);
}
void CreateMediaDrmStorage(content::RenderFrameHost* render_frame_host,
::media::mojom::MediaDrmStorageRequest request) {
DVLOG(1) << __func__;
PrefService* pref_service = CastBrowserProcess::GetInstance()->pref_service();
DCHECK(pref_service);
if (render_frame_host->GetLastCommittedOrigin().opaque()) {
DVLOG(1) << __func__ << ": Unique origin.";
return;
}
// The object will be deleted on connection error, or when the frame navigates
// away.
new cdm::MediaDrmStorageImpl(
render_frame_host, pref_service, base::BindRepeating(&CreateOriginId),
base::BindRepeating(&AllowEmptyOriginIdCB), std::move(request));
}
#endif // defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
void StartExternalMojoBrokerService(
service_manager::mojom::ServiceRequest request) {
service_manager::Service::RunAsyncUntilTermination(
std::make_unique<external_mojo::BrokerService>(std::move(request)));
}
#endif // BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
} // namespace
CastContentBrowserClient::CastContentBrowserClient( CastContentBrowserClient::CastContentBrowserClient(
CastFeatureListCreator* cast_feature_list_creator) CastFeatureListCreator* cast_feature_list_creator)
: cast_browser_main_parts_(nullptr), : cast_browser_main_parts_(nullptr),
...@@ -731,44 +666,6 @@ bool CastContentBrowserClient::CanCreateWindow( ...@@ -731,44 +666,6 @@ bool CastContentBrowserClient::CanCreateWindow(
return false; return false;
} }
void CastContentBrowserClient::ExposeInterfacesToRenderer(
service_manager::BinderRegistry* registry,
blink::AssociatedInterfaceRegistry* associated_registry,
content::RenderProcessHost* render_process_host) {
registry->AddInterface(
base::Bind(&media::MediaCapsImpl::AddReceiver,
base::Unretained(cast_browser_main_parts_->media_caps())),
base::ThreadTaskRunnerHandle::Get());
#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
if (!memory_pressure_controller_) {
memory_pressure_controller_.reset(new MemoryPressureControllerImpl());
}
registry->AddInterface(
base::Bind(&MemoryPressureControllerImpl::AddReceiver,
base::Unretained(memory_pressure_controller_.get())),
base::ThreadTaskRunnerHandle::Get());
#endif // !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
}
void CastContentBrowserClient::ExposeInterfacesToMediaService(
service_manager::BinderRegistry* registry,
content::RenderFrameHost* render_frame_host) {
#if defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
registry->AddInterface(
base::BindRepeating(&CreateMediaDrmStorage, render_frame_host));
#endif // defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
std::string application_session_id;
bool mixer_audio_enabled;
GetApplicationMediaInfo(&application_session_id, &mixer_audio_enabled,
render_frame_host);
registry->AddInterface(base::BindRepeating(
&media::CreateApplicationMediaInfoManager, render_frame_host,
std::move(application_session_id), mixer_audio_enabled));
}
void CastContentBrowserClient::GetApplicationMediaInfo( void CastContentBrowserClient::GetApplicationMediaInfo(
std::string* application_session_id, std::string* application_session_id,
bool* mixer_audio_enabled, bool* mixer_audio_enabled,
...@@ -777,27 +674,6 @@ void CastContentBrowserClient::GetApplicationMediaInfo( ...@@ -777,27 +674,6 @@ void CastContentBrowserClient::GetApplicationMediaInfo(
*mixer_audio_enabled = true; *mixer_audio_enabled = true;
} }
void CastContentBrowserClient::RunServiceInstance(
const service_manager::Identity& identity,
mojo::PendingReceiver<service_manager::mojom::Service>* receiver) {
#if BUILDFLAG(ENABLE_CAST_RENDERER)
if (identity.name() == ::media::mojom::kMediaRendererServiceName) {
service_manager::mojom::ServiceRequest request(std::move(*receiver));
GetMediaTaskRunner()->PostTask(
FROM_HERE,
base::BindOnce(&CreateMediaService, this, std::move(request)));
return;
}
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
if (identity.name() == external_mojo::BrokerService::kServiceName) {
StartExternalMojoBrokerService(std::move(*receiver));
return;
}
#endif // BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
}
base::Optional<service_manager::Manifest> base::Optional<service_manager::Manifest>
CastContentBrowserClient::GetServiceManifestOverlay( CastContentBrowserClient::GetServiceManifestOverlay(
base::StringPiece service_name) { base::StringPiece service_name) {
...@@ -1022,20 +898,6 @@ bool CastContentBrowserClient::DoesSiteRequireDedicatedProcess( ...@@ -1022,20 +898,6 @@ bool CastContentBrowserClient::DoesSiteRequireDedicatedProcess(
#endif #endif
} }
void CastContentBrowserClient::BindHostReceiverForRenderer(
content::RenderProcessHost* render_process_host,
mojo::GenericPendingReceiver receiver) {
#if BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER)
if (auto r = receiver.As<::chromecast::mojom::JsChannelBindingProvider>()) {
JsChannelService::Create(render_process_host, std::move(r),
base::ThreadTaskRunnerHandle::Get());
return;
}
#endif
ContentBrowserClient::BindHostReceiverForRenderer(render_process_host,
std::move(receiver));
}
std::string CastContentBrowserClient::GetUserAgent() { std::string CastContentBrowserClient::GetUserAgent() {
return chromecast::shell::GetUserAgent(); return chromecast::shell::GetUserAgent();
} }
......
...@@ -184,6 +184,9 @@ class CastContentBrowserClient ...@@ -184,6 +184,9 @@ class CastContentBrowserClient
bool user_gesture, bool user_gesture,
bool opener_suppressed, bool opener_suppressed,
bool* no_javascript_access) override; bool* no_javascript_access) override;
// New Mojo bindings should be added to
// cast_content_browser_client_receiver_bindings.cc, so that they go through
// security review.
void ExposeInterfacesToRenderer( void ExposeInterfacesToRenderer(
service_manager::BinderRegistry* registry, service_manager::BinderRegistry* registry,
blink::AssociatedInterfaceRegistry* associated_registry, blink::AssociatedInterfaceRegistry* associated_registry,
...@@ -226,6 +229,9 @@ class CastContentBrowserClient ...@@ -226,6 +229,9 @@ class CastContentBrowserClient
std::string GetUserAgent() override; std::string GetUserAgent() override;
bool DoesSiteRequireDedicatedProcess(content::BrowserContext* browser_context, bool DoesSiteRequireDedicatedProcess(content::BrowserContext* browser_context,
const GURL& effective_site_url) override; const GURL& effective_site_url) override;
// New Mojo bindings should be added to
// cast_content_browser_client_receiver_bindings.cc, so that they go through
// security review.
void BindHostReceiverForRenderer( void BindHostReceiverForRenderer(
content::RenderProcessHost* render_process_host, content::RenderProcessHost* render_process_host,
mojo::GenericPendingReceiver receiver) override; mojo::GenericPendingReceiver receiver) override;
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file exposes services from the cast browser to child processes.
#include "chromecast/browser/cast_content_browser_client.h"
#include <memory>
#include "base/bind.h"
#include "base/logging.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "chromecast/browser/application_media_info_manager.h"
#include "chromecast/browser/cast_browser_main_parts.h"
#include "chromecast/browser/media/media_caps_impl.h"
#include "chromecast/chromecast_buildflags.h"
#include "media/mojo/buildflags.h"
#if BUILDFLAG(ENABLE_CAST_RENDERER)
#include "chromecast/media/service/cast_mojo_media_client.h"
#include "media/mojo/mojom/constants.mojom.h" // nogncheck
#include "media/mojo/services/media_service.h" // nogncheck
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
#include "chromecast/external_mojo/broker_service/broker_service.h"
#endif
#if BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER)
#include "chromecast/browser/webview/js_channel_service.h"
#include "chromecast/common/mojom/js_channel.mojom.h"
#endif
#if BUILDFLAG(USE_CHROMECAST_CDMS)
#include "chromecast/media/cdm/cast_cdm_factory.h"
#endif // BUILDFLAG(USE_CHROMECAST_CDMS)
#if defined(OS_ANDROID)
#if !BUILDFLAG(USE_CHROMECAST_CDMS)
#include "components/cdm/browser/media_drm_storage_impl.h"
#include "url/origin.h"
#endif // !BUILDFLAG(USE_CHROMECAST_CDMS)
#else
#include "chromecast/browser/memory_pressure_controller_impl.h"
#endif // defined(OS_ANDROID)
namespace chromecast {
namespace shell {
namespace {
#if BUILDFLAG(ENABLE_CAST_RENDERER)
static void CreateMediaService(CastContentBrowserClient* browser_client,
service_manager::mojom::ServiceRequest request) {
std::unique_ptr<::media::MediaService> service;
auto mojo_media_client = std::make_unique<media::CastMojoMediaClient>(
browser_client->GetCmaBackendFactory(),
base::Bind(&CastContentBrowserClient::CreateCdmFactory,
base::Unretained(browser_client)),
browser_client->GetVideoModeSwitcher(),
browser_client->GetVideoResolutionPolicy());
service = std::make_unique<::media::MediaService>(
std::move(mojo_media_client), std::move(request));
service_manager::Service::RunAsyncUntilTermination(std::move(service));
}
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
void CreateOriginId(cdm::MediaDrmStorageImpl::OriginIdObtainedCB callback) {
// TODO(crbug.com/917527): Update this to actually get a pre-provisioned
// origin ID.
std::move(callback).Run(true, base::UnguessableToken::Create());
}
void AllowEmptyOriginIdCB(base::OnceCallback<void(bool)> callback) {
std::move(callback).Run(false);
}
void CreateMediaDrmStorage(content::RenderFrameHost* render_frame_host,
::media::mojom::MediaDrmStorageRequest request) {
DVLOG(1) << __func__;
PrefService* pref_service = CastBrowserProcess::GetInstance()->pref_service();
DCHECK(pref_service);
if (render_frame_host->GetLastCommittedOrigin().opaque()) {
DVLOG(1) << __func__ << ": Unique origin.";
return;
}
// The object will be deleted on connection error, or when the frame navigates
// away.
new cdm::MediaDrmStorageImpl(
render_frame_host, pref_service, base::BindRepeating(&CreateOriginId),
base::BindRepeating(&AllowEmptyOriginIdCB), std::move(request));
}
#endif // defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
void StartExternalMojoBrokerService(
service_manager::mojom::ServiceRequest request) {
service_manager::Service::RunAsyncUntilTermination(
std::make_unique<external_mojo::BrokerService>(std::move(request)));
}
#endif // BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
} // namespace
void CastContentBrowserClient::ExposeInterfacesToRenderer(
service_manager::BinderRegistry* registry,
blink::AssociatedInterfaceRegistry* associated_registry,
content::RenderProcessHost* render_process_host) {
registry->AddInterface(
base::Bind(&media::MediaCapsImpl::AddReceiver,
base::Unretained(cast_browser_main_parts_->media_caps())),
base::ThreadTaskRunnerHandle::Get());
#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
if (!memory_pressure_controller_) {
memory_pressure_controller_.reset(new MemoryPressureControllerImpl());
}
registry->AddInterface(
base::Bind(&MemoryPressureControllerImpl::AddReceiver,
base::Unretained(memory_pressure_controller_.get())),
base::ThreadTaskRunnerHandle::Get());
#endif // !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
}
void CastContentBrowserClient::ExposeInterfacesToMediaService(
service_manager::BinderRegistry* registry,
content::RenderFrameHost* render_frame_host) {
#if defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
registry->AddInterface(
base::BindRepeating(&CreateMediaDrmStorage, render_frame_host));
#endif // defined(OS_ANDROID) && !BUILDFLAG(USE_CHROMECAST_CDMS)
std::string application_session_id;
bool mixer_audio_enabled;
GetApplicationMediaInfo(&application_session_id, &mixer_audio_enabled,
render_frame_host);
registry->AddInterface(base::BindRepeating(
&media::CreateApplicationMediaInfoManager, render_frame_host,
std::move(application_session_id), mixer_audio_enabled));
}
void CastContentBrowserClient::RunServiceInstance(
const service_manager::Identity& identity,
mojo::PendingReceiver<service_manager::mojom::Service>* receiver) {
#if BUILDFLAG(ENABLE_CAST_RENDERER)
if (identity.name() == ::media::mojom::kMediaRendererServiceName) {
service_manager::mojom::ServiceRequest request(std::move(*receiver));
GetMediaTaskRunner()->PostTask(
FROM_HERE,
base::BindOnce(&CreateMediaService, this, std::move(request)));
return;
}
#endif // BUILDFLAG(ENABLE_CAST_RENDERER)
#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
if (identity.name() == external_mojo::BrokerService::kServiceName) {
StartExternalMojoBrokerService(std::move(*receiver));
return;
}
#endif // BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
}
void CastContentBrowserClient::BindHostReceiverForRenderer(
content::RenderProcessHost* render_process_host,
mojo::GenericPendingReceiver receiver) {
#if BUILDFLAG(ENABLE_CAST_WAYLAND_SERVER)
if (auto r = receiver.As<::chromecast::mojom::JsChannelBindingProvider>()) {
JsChannelService::Create(render_process_host, std::move(r),
base::ThreadTaskRunnerHandle::Get());
return;
}
#endif
ContentBrowserClient::BindHostReceiverForRenderer(render_process_host,
std::move(receiver));
}
} // namespace shell
} // namespace chromecast
...@@ -946,6 +946,7 @@ jumbo_source_set("browser") { ...@@ -946,6 +946,7 @@ jumbo_source_set("browser") {
"gpu/gpu_memory_buffer_manager_singleton.h", "gpu/gpu_memory_buffer_manager_singleton.h",
"gpu/gpu_process_host.cc", "gpu/gpu_process_host.cc",
"gpu/gpu_process_host.h", "gpu/gpu_process_host.h",
"gpu/gpu_process_host_receiver_bindings.cc",
"gpu/peak_gpu_memory_tracker_impl.cc", "gpu/peak_gpu_memory_tracker_impl.cc",
"gpu/peak_gpu_memory_tracker_impl.h", "gpu/peak_gpu_memory_tracker_impl.h",
"gpu/shader_cache_factory.cc", "gpu/shader_cache_factory.cc",
...@@ -1840,6 +1841,7 @@ jumbo_source_set("browser") { ...@@ -1840,6 +1841,7 @@ jumbo_source_set("browser") {
"url_loader_factory_getter.h", "url_loader_factory_getter.h",
"utility_process_host.cc", "utility_process_host.cc",
"utility_process_host.h", "utility_process_host.h",
"utility_process_host_receiver_bindings.cc",
"video_capture_service.cc", "video_capture_service.cc",
"wake_lock/wake_lock_context_host.cc", "wake_lock/wake_lock_context_host.cc",
"wake_lock/wake_lock_context_host.h", "wake_lock/wake_lock_context_host.h",
......
...@@ -16,6 +16,8 @@ per-file ppapi_plugin_process_host_receiver_bindings.cc=set noparent ...@@ -16,6 +16,8 @@ per-file ppapi_plugin_process_host_receiver_bindings.cc=set noparent
per-file ppapi_plugin_process_host_receiver_bindings.cc=file://ipc/SECURITY_OWNERS per-file ppapi_plugin_process_host_receiver_bindings.cc=file://ipc/SECURITY_OWNERS
per-file browser_child_process_host_impl_receiver_bindings.cc=set noparent per-file browser_child_process_host_impl_receiver_bindings.cc=set noparent
per-file browser_child_process_host_impl_receiver_bindings.cc=file://ipc/SECURITY_OWNERS per-file browser_child_process_host_impl_receiver_bindings.cc=file://ipc/SECURITY_OWNERS
per-file utility_process_host_receiver_bindings.cc=set noparent
per-file utility_process_host_receiver_bindings.cc=file://ipc/SECURITY_OWNERS
per-file host_zoom_*=wjmaclean@chromium.org per-file host_zoom_*=wjmaclean@chromium.org
per-file find_request_manager*=paulmeyer@chromium.org per-file find_request_manager*=paulmeyer@chromium.org
......
...@@ -2,5 +2,9 @@ kbr@chromium.org ...@@ -2,5 +2,9 @@ kbr@chromium.org
zmo@chromium.org zmo@chromium.org
backer@chromium.org backer@chromium.org
# For security review.
per-file gpu_process_host_receiver_bindings.cc=set noparent
per-file gpu_process_host_receiver_bindings.cc=file://ipc/SECURITY_OWNERS
# COMPONENT: Internals>GPU>Internals # COMPONENT: Internals>GPU>Internals
# TEAM: graphics-dev@chromium.org # TEAM: graphics-dev@chromium.org
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include "components/viz/common/switches.h" #include "components/viz/common/switches.h"
#include "content/browser/browser_child_process_host_impl.h" #include "content/browser/browser_child_process_host_impl.h"
#include "content/browser/compositor/image_transport_factory.h" #include "content/browser/compositor/image_transport_factory.h"
#include "content/browser/field_trial_recorder.h"
#include "content/browser/gpu/compositor_util.h" #include "content/browser/gpu/compositor_util.h"
#include "content/browser/gpu/gpu_data_manager_impl.h" #include "content/browser/gpu/gpu_data_manager_impl.h"
#include "content/browser/gpu/gpu_main_thread_factory.h" #include "content/browser/gpu/gpu_main_thread_factory.h"
...@@ -46,7 +45,6 @@ ...@@ -46,7 +45,6 @@
#include "content/browser/service_manager/service_manager_context.h" #include "content/browser/service_manager/service_manager_context.h"
#include "content/common/child_process.mojom.h" #include "content/common/child_process.mojom.h"
#include "content/common/child_process_host_impl.h" #include "content/common/child_process_host_impl.h"
#include "content/common/field_trial_recorder.mojom.h"
#include "content/common/in_process_child_thread_params.h" #include "content/common/in_process_child_thread_params.h"
#include "content/common/service_manager/child_connection.h" #include "content/common/service_manager/child_connection.h"
#include "content/common/view_messages.h" #include "content/common/view_messages.h"
...@@ -75,9 +73,6 @@ ...@@ -75,9 +73,6 @@
#include "mojo/public/cpp/bindings/associated_remote.h" #include "mojo/public/cpp/bindings/associated_remote.h"
#include "mojo/public/cpp/bindings/generic_pending_receiver.h" #include "mojo/public/cpp/bindings/generic_pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/connector.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "services/service_manager/sandbox/sandbox_type.h" #include "services/service_manager/sandbox/sandbox_type.h"
#include "services/service_manager/sandbox/switches.h" #include "services/service_manager/sandbox/switches.h"
#include "ui/base/ui_base_features.h" #include "ui/base/ui_base_features.h"
...@@ -88,11 +83,6 @@ ...@@ -88,11 +83,6 @@
#include "ui/gl/gl_switches.h" #include "ui/gl/gl_switches.h"
#include "ui/latency/latency_info.h" #include "ui/latency/latency_info.h"
#if defined(OS_ANDROID)
#include "content/public/browser/android/java_interfaces.h"
#include "media/mojo/mojom/android_overlay.mojom.h"
#endif
#if defined(OS_WIN) #if defined(OS_WIN)
#include "sandbox/win/src/sandbox_policy.h" #include "sandbox/win/src/sandbox_policy.h"
#include "sandbox/win/src/window.h" #include "sandbox/win/src/window.h"
...@@ -431,14 +421,6 @@ class GpuSandboxedProcessLauncherDelegate ...@@ -431,14 +421,6 @@ class GpuSandboxedProcessLauncherDelegate
#endif // OS_WIN #endif // OS_WIN
}; };
#if defined(OS_ANDROID)
void BindAndroidOverlayProvider(
mojo::PendingReceiver<media::mojom::AndroidOverlayProvider> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::GetGlobalJavaInterfaces()->GetInterface(std::move(receiver));
}
#endif // defined(OS_ANDROID)
#if defined(OS_WIN) #if defined(OS_WIN)
void RecordAppContainerStatus(int error_code, bool crashed_before) { void RecordAppContainerStatus(int error_code, bool crashed_before) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
...@@ -584,30 +566,6 @@ void GpuProcessHost::BindInterface( ...@@ -584,30 +566,6 @@ void GpuProcessHost::BindInterface(
std::move(interface_pipe)); std::move(interface_pipe));
} }
void GpuProcessHost::BindHostReceiver(
mojo::GenericPendingReceiver generic_receiver) {
if (auto field_trial_receiver =
generic_receiver.As<mojom::FieldTrialRecorder>()) {
mojo::PendingReceiver<mojom::FieldTrialRecorder> receiver(
std::move(field_trial_receiver));
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&FieldTrialRecorder::Create, std::move(receiver)));
return;
}
#if defined(OS_ANDROID)
if (auto r = generic_receiver.As<media::mojom::AndroidOverlayProvider>()) {
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&BindAndroidOverlayProvider, std::move(r)));
return;
}
#endif
GetContentClient()->browser()->BindGpuHostReceiver(
std::move(generic_receiver));
}
void GpuProcessHost::RunService( void GpuProcessHost::RunService(
const std::string& service_name, const std::string& service_name,
mojo::PendingReceiver<service_manager::mojom::Service> receiver) { mojo::PendingReceiver<service_manager::mojom::Service> receiver) {
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file exposes services from the browser process to the GPU process.
#include "content/browser/gpu/gpu_process_host.h"
#include "base/task/post_task.h"
#include "build/build_config.h"
#include "content/browser/field_trial_recorder.h"
#include "content/common/field_trial_recorder.mojom.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
#include "mojo/public/cpp/bindings/generic_pending_receiver.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#if defined(OS_ANDROID)
#include "content/public/browser/android/java_interfaces.h"
#include "media/mojo/mojom/android_overlay.mojom.h"
#endif
namespace content {
namespace {
#if defined(OS_ANDROID)
void BindAndroidOverlayProvider(
mojo::PendingReceiver<media::mojom::AndroidOverlayProvider> receiver) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::GetGlobalJavaInterfaces()->GetInterface(std::move(receiver));
}
#endif // defined(OS_ANDROID)
} // namespace
void GpuProcessHost::BindHostReceiver(
mojo::GenericPendingReceiver generic_receiver) {
if (auto field_trial_receiver =
generic_receiver.As<mojom::FieldTrialRecorder>()) {
mojo::PendingReceiver<mojom::FieldTrialRecorder> receiver(
std::move(field_trial_receiver));
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&FieldTrialRecorder::Create, std::move(receiver)));
return;
}
#if defined(OS_ANDROID)
if (auto r = generic_receiver.As<media::mojom::AndroidOverlayProvider>()) {
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&BindAndroidOverlayProvider, std::move(r)));
return;
}
#endif
GetContentClient()->browser()->BindGpuHostReceiver(
std::move(generic_receiver));
}
} // namespace content
...@@ -56,11 +56,6 @@ ...@@ -56,11 +56,6 @@
#include "services/network/network_sandbox_win.h" #include "services/network/network_sandbox_win.h"
#endif #endif
#if defined(OS_LINUX)
#include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
#include "content/browser/font_service.h" // nogncheck
#endif
#if BUILDFLAG(USE_ZYGOTE_HANDLE) #if BUILDFLAG(USE_ZYGOTE_HANDLE)
#include "services/service_manager/zygote/common/zygote_handle.h" // nogncheck #include "services/service_manager/zygote/common/zygote_handle.h" // nogncheck
#endif #endif
...@@ -520,14 +515,4 @@ base::Optional<std::string> UtilityProcessHost::GetServiceName() { ...@@ -520,14 +515,4 @@ base::Optional<std::string> UtilityProcessHost::GetServiceName() {
return service_identity_->name(); return service_identity_->name();
} }
void UtilityProcessHost::BindHostReceiver(
mojo::GenericPendingReceiver receiver) {
#if defined(OS_LINUX)
if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
ConnectToFontService(std::move(font_receiver));
return;
}
#endif
}
} // namespace content } // namespace content
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file exposes services in the browser to the utility process.
#include "content/browser/utility_process_host.h"
#include "build/build_config.h"
#if defined(OS_LINUX)
#include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
#include "content/browser/font_service.h" // nogncheck
#endif
namespace content {
void UtilityProcessHost::BindHostReceiver(
mojo::GenericPendingReceiver receiver) {
#if defined(OS_LINUX)
if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
ConnectToFontService(std::move(font_receiver));
return;
}
#endif
}
} // namespace content
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment