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 | |
21 namespace media { | 15 namespace media { |
22 | 16 |
23 #if defined(OS_ANDROID) | |
24 using DefaultClient = AndroidMojoMediaClient; | |
25 #else | |
26 using DefaultClient = DefaultMojoMediaClient; | |
27 #endif | |
28 | |
29 // static | 17 // static |
30 scoped_ptr<mojo::ShellClient> MojoMediaApplication::CreateApp() { | 18 scoped_ptr<mojo::ShellClient> MojoMediaApplication::CreateApp() { |
31 return scoped_ptr<mojo::ShellClient>( | 19 return scoped_ptr<mojo::ShellClient>( |
32 new MojoMediaApplication(make_scoped_ptr(new DefaultClient()))); | 20 new MojoMediaApplication(MojoMediaClient::Create())); |
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))); | |
45 } | 21 } |
46 | 22 |
47 // TODO(xhwang): Hook up MediaLog when possible. | 23 // TODO(xhwang): Hook up MediaLog when possible. |
48 MojoMediaApplication::MojoMediaApplication( | 24 MojoMediaApplication::MojoMediaApplication( |
49 scoped_ptr<MojoMediaClient> mojo_media_client) | 25 scoped_ptr<MojoMediaClient> mojo_media_client) |
50 : mojo_media_client_(std::move(mojo_media_client)), | 26 : mojo_media_client_(std::move(mojo_media_client)), |
51 shell_(nullptr), | 27 shell_(nullptr), |
52 media_log_(new MediaLog()) { | 28 media_log_(new MediaLog()) {} |
53 DCHECK(mojo_media_client_); | |
54 } | |
55 | 29 |
56 MojoMediaApplication::~MojoMediaApplication() {} | 30 MojoMediaApplication::~MojoMediaApplication() {} |
57 | 31 |
58 void MojoMediaApplication::Initialize(mojo::Shell* shell, | 32 void MojoMediaApplication::Initialize(mojo::Shell* shell, |
59 const std::string& /* url */, | 33 const std::string& url, |
60 uint32_t /* id */) { | 34 uint32_t id) { |
61 shell_ = shell; | 35 shell_ = shell; |
62 mojo_media_client_->Initialize(); | 36 mojo_media_client_->Initialize(); |
63 } | 37 } |
64 | 38 |
65 bool MojoMediaApplication::AcceptConnection(mojo::Connection* connection) { | 39 bool MojoMediaApplication::AcceptConnection(mojo::Connection* connection) { |
66 connection->AddInterface<interfaces::ServiceFactory>(this); | 40 connection->AddInterface<interfaces::ServiceFactory>(this); |
67 return true; | 41 return true; |
68 } | 42 } |
69 | 43 |
70 void MojoMediaApplication::Create( | 44 void MojoMediaApplication::Create( |
71 mojo::Connection* connection, | 45 mojo::Connection* connection, |
72 mojo::InterfaceRequest<interfaces::ServiceFactory> request) { | 46 mojo::InterfaceRequest<interfaces::ServiceFactory> request) { |
73 // The created object is owned by the pipe. | 47 // The created object is owned by the pipe. |
74 new ServiceFactoryImpl(std::move(request), connection->GetRemoteInterfaces(), | 48 new ServiceFactoryImpl(std::move(request), connection->GetRemoteInterfaces(), |
75 media_log_, shell_->CreateAppRefCount(), | 49 media_log_, shell_->CreateAppRefCount(), |
76 mojo_media_client_.get()); | 50 mojo_media_client_.get()); |
77 } | 51 } |
78 | 52 |
79 } // namespace media | 53 } // namespace media |
OLD | NEW |