Chromium Code Reviews| 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 48597bd9e00bea24bdc4e61c7519cf93ae354c99..638e98aabb4eacac531174e9e10d200f184bfd9d 100644 |
| --- a/media/mojo/services/mojo_media_application.cc |
| +++ b/media/mojo/services/mojo_media_application.cc |
| @@ -5,6 +5,8 @@ |
| #include "base/command_line.h" |
| #include "base/logging.h" |
| #include "base/strings/utf_string_conversions.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 "third_party/mojo/src/mojo/public/c/system/main.h" |
| @@ -15,41 +17,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); |
|
ddorwin
2015/05/15 19:10:07
What is all this command line stuff used for? The
|
| + |
| + 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 |