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 2eb87a5404d7be568532d0917e0b80e848beb4f5..5b9b375a7803feb337395341c9923d20473bb922 100644 |
--- a/media/mojo/services/mojo_media_application.cc |
+++ b/media/mojo/services/mojo_media_application.cc |
@@ -2,20 +2,26 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/command_line.h" |
#include "base/logging.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "media/mojo/interfaces/content_decryption_module_factory.mojom.h" |
+#include "media/mojo/interfaces/media_renderer.mojom.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/public/cpp/application_connection.h" |
#include "mojo/application/public/cpp/application_delegate.h" |
-#include "mojo/application/public/cpp/application_impl.h" |
#include "mojo/application/public/cpp/application_runner.h" |
-#include "mojo/application/public/cpp/interface_factory_impl.h" |
+#include "mojo/application/public/cpp/interface_factory.h" |
#include "third_party/mojo/src/mojo/public/c/system/main.h" |
namespace media { |
class MojoMediaApplication |
: public mojo::ApplicationDelegate, |
- public mojo::InterfaceFactory<mojo::MediaRenderer> { |
+ public mojo::InterfaceFactory<mojo::MediaRenderer>, |
+ public mojo::InterfaceFactory<mojo::ContentDecryptionModuleFactory> { |
public: |
// mojo::ApplicationDelegate implementation. |
void Initialize(mojo::ApplicationImpl* app) override { |
@@ -27,17 +33,29 @@ class MojoMediaApplication |
} |
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 { |
+ new MojoCdmFactoryService(&cdm_service_context_, request.Pass()); |
+ } |
+ |
// mojo::InterfaceFactory<mojo::MediaRenderer> implementation. |
void Create(mojo::ApplicationConnection* connection, |
mojo::InterfaceRequest<mojo::MediaRenderer> request) override { |
// The created object is owned by the pipe. |
- new MojoRendererService(request.Pass()); |
+ new MojoRendererService(&cdm_service_context_, request.Pass()); |
} |
+ |
+ private: |
+ MojoCdmServiceContext cdm_service_context_; |
}; |
} // namespace media |