Index: content/utility/utility_service_factory.cc |
diff --git a/content/utility/utility_service_factory.cc b/content/utility/utility_service_factory.cc |
index 2f95ab61a62d1c9a09d73429b3935e218d85ed29..bd79d2ee6537cb55fd8edd09c7a1b7dfb6dc9b5c 100644 |
--- a/content/utility/utility_service_factory.cc |
+++ b/content/utility/utility_service_factory.cc |
@@ -14,7 +14,7 @@ |
#include "content/public/utility/content_utility_client.h" |
#include "content/public/utility/utility_thread.h" |
#include "content/utility/utility_thread_impl.h" |
-#include "media/mojo/features.h" |
+#include "ppapi/features/features.h" |
#include "services/data_decoder/data_decoder_service.h" |
#include "services/data_decoder/public/interfaces/constants.mojom.h" |
#include "services/shape_detection/public/interfaces/constants.mojom.h" |
@@ -22,8 +22,13 @@ |
#include "services/video_capture/public/interfaces/constants.mojom.h" |
#include "services/video_capture/service_impl.h" |
-#if BUILDFLAG(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) |
-#include "media/mojo/services/media_service_factory.h" // nogncheck |
+#if BUILDFLAG(ENABLE_PEPPER_CDMS) |
+#include "base/memory/ptr_util.h" |
+#include "media/cdm/cdm_adapter_factory.h" // nogncheck |
+#include "media/mojo/features.h" // nogncheck |
+#include "media/mojo/services/media_service.h" // nogncheck |
+#include "media/mojo/services/mojo_cdm_allocator.h" // nogncheck |
+#include "media/mojo/services/mojo_media_client.h" // nogncheck |
#endif |
namespace { |
@@ -38,6 +43,33 @@ namespace content { |
namespace { |
+#if BUILDFLAG(ENABLE_PEPPER_CDMS) |
+ |
+static_assert(BUILDFLAG(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS), ""); |
+static_assert(BUILDFLAG(ENABLE_MOJO_CDM), ""); |
+ |
+std::unique_ptr<media::CdmAllocator> CreateCdmAllocator() { |
+ return base::MakeUnique<media::MojoCdmAllocator>(); |
+} |
+ |
+class CdmMojoMediaClient final : public media::MojoMediaClient { |
+ public: |
+ CdmMojoMediaClient() {} |
+ ~CdmMojoMediaClient() override {} |
+ |
+ std::unique_ptr<media::CdmFactory> CreateCdmFactory( |
+ service_manager::mojom::InterfaceProvider* host_interfaces) override { |
+ return base::MakeUnique<media::CdmAdapterFactory>( |
+ base::Bind(&CreateCdmAllocator)); |
+ } |
+}; |
+ |
+std::unique_ptr<service_manager::Service> CreateMediaService() { |
+ return std::unique_ptr<service_manager::Service>( |
+ new ::media::MediaService(base::MakeUnique<CdmMojoMediaClient>())); |
+} |
+#endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
+ |
std::unique_ptr<service_manager::Service> CreateDataDecoderService() { |
content::UtilityThread::Get()->EnsureBlinkInitialized(); |
return data_decoder::DataDecoderService::Create(); |
@@ -58,9 +90,9 @@ void UtilityServiceFactory::RegisterServices(ServiceMap* services) { |
services->insert( |
std::make_pair(video_capture::mojom::kServiceName, video_capture_info)); |
-#if BUILDFLAG(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) |
+#if BUILDFLAG(ENABLE_PEPPER_CDMS) |
ServiceInfo info; |
- info.factory = base::Bind(&media::CreateMediaService); |
+ info.factory = base::Bind(&CreateMediaService); |
services->insert(std::make_pair("media", info)); |
#endif |