OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/mojo/services/mojo_media_application.h" | 5 #include "media/mojo/services/mojo_media_application.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "media/base/media_log.h" | 9 #include "media/base/media_log.h" |
10 #include "media/mojo/services/mojo_media_client.h" | 10 #include "media/mojo/services/mojo_media_client.h" |
11 #include "media/mojo/services/service_factory_impl.h" | 11 #include "media/mojo/services/service_factory_impl.h" |
12 #include "mojo/shell/public/cpp/connection.h" | 12 #include "mojo/shell/public/cpp/connection.h" |
13 #include "mojo/shell/public/cpp/shell.h" | 13 #include "mojo/shell/public/cpp/shell.h" |
14 | 14 |
| 15 #if defined(OS_ANDROID) |
| 16 #include "media/mojo/services/android_mojo_media_client.h" |
| 17 #else |
| 18 #include "media/mojo/services/default_mojo_media_client.h" |
| 19 #endif |
| 20 |
15 namespace media { | 21 namespace media { |
16 | 22 |
| 23 #if defined(OS_ANDROID) |
| 24 using DefaultClient = AndroidMojoMediaClient; |
| 25 #else |
| 26 using DefaultClient = DefaultMojoMediaClient; |
| 27 #endif |
| 28 |
17 // static | 29 // static |
18 scoped_ptr<mojo::ShellClient> MojoMediaApplication::CreateApp() { | 30 scoped_ptr<mojo::ShellClient> MojoMediaApplication::CreateApp() { |
19 return scoped_ptr<mojo::ShellClient>( | 31 return scoped_ptr<mojo::ShellClient>( |
20 new MojoMediaApplication(MojoMediaClient::Create())); | 32 new MojoMediaApplication(make_scoped_ptr(new DefaultClient()))); |
| 33 } |
| 34 |
| 35 // static |
| 36 scoped_ptr<mojo::ShellClient> MojoMediaApplication::CreateAppWithClient( |
| 37 const CreateMojoMediaClientCB& create_mojo_media_client_cb) { |
| 38 scoped_ptr<MojoMediaClient> mojo_media_client = |
| 39 create_mojo_media_client_cb.Run(); |
| 40 if (!mojo_media_client) |
| 41 return nullptr; |
| 42 |
| 43 return scoped_ptr<mojo::ShellClient>( |
| 44 new MojoMediaApplication(std::move(mojo_media_client))); |
21 } | 45 } |
22 | 46 |
23 // TODO(xhwang): Hook up MediaLog when possible. | 47 // TODO(xhwang): Hook up MediaLog when possible. |
24 MojoMediaApplication::MojoMediaApplication( | 48 MojoMediaApplication::MojoMediaApplication( |
25 scoped_ptr<MojoMediaClient> mojo_media_client) | 49 scoped_ptr<MojoMediaClient> mojo_media_client) |
26 : mojo_media_client_(std::move(mojo_media_client)), | 50 : mojo_media_client_(std::move(mojo_media_client)), |
27 shell_(nullptr), | 51 shell_(nullptr), |
28 media_log_(new MediaLog()) {} | 52 media_log_(new MediaLog()) { |
| 53 DCHECK(mojo_media_client_); |
| 54 } |
29 | 55 |
30 MojoMediaApplication::~MojoMediaApplication() {} | 56 MojoMediaApplication::~MojoMediaApplication() {} |
31 | 57 |
32 void MojoMediaApplication::Initialize(mojo::Shell* shell, | 58 void MojoMediaApplication::Initialize(mojo::Shell* shell, |
33 const std::string& url, | 59 const std::string& /* url */, |
34 uint32_t id) { | 60 uint32_t /* id */) { |
35 shell_ = shell; | 61 shell_ = shell; |
36 mojo_media_client_->Initialize(); | 62 mojo_media_client_->Initialize(); |
37 } | 63 } |
38 | 64 |
39 bool MojoMediaApplication::AcceptConnection(mojo::Connection* connection) { | 65 bool MojoMediaApplication::AcceptConnection(mojo::Connection* connection) { |
40 connection->AddInterface<interfaces::ServiceFactory>(this); | 66 connection->AddInterface<interfaces::ServiceFactory>(this); |
41 return true; | 67 return true; |
42 } | 68 } |
43 | 69 |
44 void MojoMediaApplication::Create( | 70 void MojoMediaApplication::Create( |
45 mojo::Connection* connection, | 71 mojo::Connection* connection, |
46 mojo::InterfaceRequest<interfaces::ServiceFactory> request) { | 72 mojo::InterfaceRequest<interfaces::ServiceFactory> request) { |
47 // The created object is owned by the pipe. | 73 // The created object is owned by the pipe. |
48 new ServiceFactoryImpl(std::move(request), connection->GetRemoteInterfaces(), | 74 new ServiceFactoryImpl(std::move(request), connection->GetRemoteInterfaces(), |
49 media_log_, shell_->CreateAppRefCount(), | 75 media_log_, shell_->CreateAppRefCount(), |
50 mojo_media_client_.get()); | 76 mojo_media_client_.get()); |
51 } | 77 } |
52 | 78 |
53 } // namespace media | 79 } // namespace media |
OLD | NEW |