Index: media/mojo/services/mojo_media_application.h |
diff --git a/media/mojo/services/mojo_media_application.h b/media/mojo/services/mojo_media_application.h |
index 71b1e06527bf350fac2da53d0d0a28756a8324e7..c1e24dffa1dafc7ee41d105764dfd742304ac753 100644 |
--- a/media/mojo/services/mojo_media_application.h |
+++ b/media/mojo/services/mojo_media_application.h |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/callback.h" |
#include "base/memory/ref_counted.h" |
#include "media/mojo/interfaces/service_factory.mojom.h" |
#include "mojo/shell/public/cpp/interface_factory_impl.h" |
@@ -17,12 +18,22 @@ |
: public mojo::ShellClient, |
public mojo::InterfaceFactory<interfaces::ServiceFactory> { |
public: |
+ // Callback to create a MojoMediaClient. |
+ using CreateMojoMediaClientCB = base::Callback<scoped_ptr<MojoMediaClient>()>; |
+ |
+ // Creates MojoMediaApplication using the default MojoMediaClient. |
static scoped_ptr<mojo::ShellClient> CreateApp(); |
- explicit MojoMediaApplication(scoped_ptr<MojoMediaClient> mojo_media_client); |
+ // Creates MojoMediaApplication using the MojoMediaClient provided by |
+ // |create_mojo_media_client_cb|. |
+ static scoped_ptr<mojo::ShellClient> CreateAppWithClient( |
+ const CreateMojoMediaClientCB& create_mojo_media_client_cb); |
+ |
~MojoMediaApplication() final; |
private: |
+ explicit MojoMediaApplication(scoped_ptr<MojoMediaClient> mojo_media_client); |
+ |
// mojo::ShellClient implementation. |
void Initialize(mojo::Shell* shell, |
const std::string& url, |
@@ -33,7 +44,11 @@ |
void Create(mojo::Connection* connection, |
mojo::InterfaceRequest<interfaces::ServiceFactory> request) final; |
+ // Note: Since each instance runs on a different thread, do not share a common |
+ // MojoMediaClient with other instances to avoid threading issues. Hence using |
+ // a scoped_ptr here. |
scoped_ptr<MojoMediaClient> mojo_media_client_; |
+ |
mojo::Shell* shell_; |
scoped_refptr<MediaLog> media_log_; |
}; |