Index: media/mojo/services/service_factory_impl.h |
diff --git a/media/mojo/services/service_factory_impl.h b/media/mojo/services/service_factory_impl.h |
index 494f4c01e91566b20687b1e4560d0ebb8c8acc91..85da957ad48232c4d3f6501936e94ac6ca103ed8 100644 |
--- a/media/mojo/services/service_factory_impl.h |
+++ b/media/mojo/services/service_factory_impl.h |
@@ -7,14 +7,15 @@ |
#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
-#include "media/mojo/interfaces/service_factory.mojom.h" |
+#include "media/mojo/interfaces/content_decryption_module.mojom.h" |
+#include "media/mojo/interfaces/renderer.mojom.h" |
#include "media/mojo/services/mojo_cdm_service_context.h" |
-#include "mojo/public/cpp/bindings/strong_binding.h" |
+#include "mojo/application/public/cpp/interface_factory.h" |
namespace mojo { |
-class AppRefCount; |
+class ApplicationImpl; |
class ServiceProvider; |
-} |
+} // namespace mojo |
namespace media { |
@@ -23,35 +24,39 @@ class MediaLog; |
class MojoMediaClient; |
class RendererFactory; |
-class ServiceFactoryImpl : public interfaces::ServiceFactory { |
+class ServiceFactoryImpl |
+ : public mojo::InterfaceFactory<interfaces::Renderer>, |
+ public mojo::InterfaceFactory<interfaces::ContentDecryptionModule> { |
public: |
- ServiceFactoryImpl(mojo::InterfaceRequest<interfaces::ServiceFactory> request, |
- mojo::ServiceProvider* service_provider, |
- scoped_refptr<MediaLog> media_log, |
- scoped_ptr<mojo::AppRefCount> parent_app_refcount, |
- MojoMediaClient* mojo_media_client); |
- ~ServiceFactoryImpl() final; |
- |
- // interfaces::ServiceFactory implementation. |
- void CreateRenderer( |
- mojo::InterfaceRequest<interfaces::Renderer> renderer) final; |
- void CreateCdm( |
- mojo::InterfaceRequest<interfaces::ContentDecryptionModule> cdm) final; |
+ ServiceFactoryImpl(scoped_ptr<MojoMediaClient> mojo_media_client, |
+ scoped_refptr<MediaLog> media_log); |
+ ~ServiceFactoryImpl() override; |
+ |
+ void Initialize(mojo::ApplicationImpl* app); |
+ |
+ // mojo::InterfaceFactory<interfaces::Renderer> implementation. |
+ void Create(mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<interfaces::Renderer> request) final; |
+ // mojo::InterfaceFactory<interfaces::ContentDecryptionModule> implementation. |
+ void Create(mojo::ApplicationConnection* connection, |
+ mojo::InterfaceRequest<interfaces::ContentDecryptionModule> |
+ request) final; |
private: |
- RendererFactory* GetRendererFactory(); |
- CdmFactory* GetCdmFactory(); |
+ struct ServiceBundle; |
+ ServiceBundle* GetOrCreateServiceBundle(const std::string& url); |
+ void OnServiceBundleEmpty(const std::string& url); |
- MojoCdmServiceContext cdm_service_context_; |
+ RendererFactory* GetRendererFactory(); |
+ CdmFactory* GetCdmFactory(mojo::ServiceProvider* service_provider); |
- mojo::StrongBinding<interfaces::ServiceFactory> binding_; |
- mojo::ServiceProvider* service_provider_; |
+ mojo::ApplicationImpl* app_; |
+ scoped_ptr<MojoMediaClient> mojo_media_client_; |
scoped_refptr<MediaLog> media_log_; |
- scoped_ptr<mojo::AppRefCount> parent_app_refcount_; |
- MojoMediaClient* mojo_media_client_; |
- scoped_ptr<RendererFactory> renderer_factory_; |
scoped_ptr<CdmFactory> cdm_factory_; |
+ scoped_ptr<RendererFactory> renderer_factory_; |
+ std::map<std::string, scoped_ptr<ServiceBundle>> service_bundle_map_; |
DISALLOW_COPY_AND_ASSIGN(ServiceFactoryImpl); |
}; |