| Index: media/mojo/services/mojo_media_application.cc
|
| diff --git a/media/mojo/services/mojo_media_application.cc b/media/mojo/services/mojo_media_application.cc
|
| index a6b0b52a110bf919014cdd1e2ee44c90b163a015..14ee701ac081cb9dc6a8751259321e37cf6ca91d 100644
|
| --- a/media/mojo/services/mojo_media_application.cc
|
| +++ b/media/mojo/services/mojo_media_application.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| +#include "media/mojo/services/mojo_cdm_factory_service.h"
|
| +#include "media/mojo/services/mojo_cdm_service_context.h"
|
| #include "media/mojo/services/mojo_renderer_service.h"
|
| #include "mojo/application/application_runner_chromium.h"
|
| #include "mojo/public/c/system/main.h"
|
| @@ -14,41 +16,61 @@
|
|
|
| namespace media {
|
|
|
| -class MojoMediaApplication
|
| - : public mojo::ApplicationDelegate,
|
| - public mojo::InterfaceFactory<mojo::MediaRenderer> {
|
| - public:
|
| - // mojo::ApplicationDelegate implementation.
|
| - void Initialize(mojo::ApplicationImpl* app) override {
|
| - base::CommandLine::StringVector command_line_args;
|
| +static void EnableLoggingFromArgs(const std::vector<std::string>& args) {
|
| + base::CommandLine::StringVector command_line_args;
|
| #if defined(OS_WIN)
|
| - for (const auto& arg : app->args())
|
| - command_line_args.push_back(base::UTF8ToUTF16(arg));
|
| + for (const auto& arg : args)
|
| + command_line_args.push_back(base::UTF8ToUTF16(arg));
|
| #elif defined(OS_POSIX)
|
| - command_line_args = app->args();
|
| + command_line_args = args;
|
| #endif
|
|
|
| - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| - command_line->InitFromArgv(command_line_args);
|
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| + command_line->InitFromArgv(command_line_args);
|
| +
|
| + logging::LoggingSettings settings;
|
| + settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
|
| + logging::InitLogging(settings);
|
| + // Display process ID, thread ID and timestamp in logs.
|
| + logging::SetLogItems(true, true, true, false);
|
| +}
|
|
|
| - logging::LoggingSettings settings;
|
| - settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
|
| - logging::InitLogging(settings);
|
| - // Display process ID, thread ID and timestamp in logs.
|
| - logging::SetLogItems(true, true, true, false);
|
| +// mojo:media app that provides multiple media services.
|
| +class MojoMediaApplication
|
| + : public mojo::ApplicationDelegate,
|
| + public mojo::InterfaceFactory<mojo::ContentDecryptionModuleFactory>,
|
| + public mojo::InterfaceFactory<mojo::MediaRenderer> {
|
| + public:
|
| + // mojo::ApplicationDelegate implementation.
|
| + void Initialize(mojo::ApplicationImpl* app) final {
|
| + EnableLoggingFromArgs(app->args());
|
| }
|
|
|
| bool ConfigureIncomingConnection(
|
| - mojo::ApplicationConnection* connection) override {
|
| - connection->AddService(this);
|
| + mojo::ApplicationConnection* connection) final {
|
| + connection->AddService<mojo::ContentDecryptionModuleFactory>(this);
|
| + connection->AddService<mojo::MediaRenderer>(this);
|
| return true;
|
| }
|
|
|
| + // mojo::InterfaceFactory<mojo::ContentDecryptionModuleFactory>
|
| + // implementation.
|
| + void Create(mojo::ApplicationConnection* connection,
|
| + mojo::InterfaceRequest<mojo::ContentDecryptionModuleFactory>
|
| + request) final {
|
| + mojo::BindToRequest(new MojoCdmFactoryService(&cdm_service_context_),
|
| + &request);
|
| + }
|
| +
|
| // mojo::InterfaceFactory<mojo::MediaRenderer> implementation.
|
| void Create(mojo::ApplicationConnection* connection,
|
| - mojo::InterfaceRequest<mojo::MediaRenderer> request) override {
|
| - mojo::BindToRequest(new MojoRendererService(), &request);
|
| + mojo::InterfaceRequest<mojo::MediaRenderer> request) final {
|
| + mojo::BindToRequest(new MojoRendererService(&cdm_service_context_),
|
| + &request);
|
| }
|
| +
|
| + private:
|
| + MojoCdmServiceContext cdm_service_context_;
|
| };
|
|
|
| } // namespace media
|
|
|