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 |