Chromium Code Reviews| 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 72871e83de7cfe04bf2e2a3866aef6b86fb80546..18c8d9cda2f62879e019a7410174cb15135a3d2b 100644 |
| --- a/media/mojo/services/mojo_media_application.cc |
| +++ b/media/mojo/services/mojo_media_application.cc |
| @@ -4,6 +4,7 @@ |
| #include "media/mojo/services/mojo_media_application.h" |
| +#include "base/command_line.h" |
| #include "base/logging.h" |
| #include "media/mojo/services/mojo_cdm_service.h" |
| #include "media/mojo/services/mojo_renderer_service.h" |
| @@ -13,6 +14,10 @@ |
| namespace media { |
| const char kMojoMediaAppUrl[] = "mojo:media"; |
| +const int kIdleTimeoutInSeconds = 30; |
| + |
| +// Switch to enable fast application destruction (for testing). |
| +const char kFastAppDestruction[] = "fast-app-destruction"; |
|
sandersd (OOO until July 31)
2015/06/30 21:32:47
Perhaps too generic a name for a media-specific fl
xhwang
2015/07/07 20:29:24
Picked fast-media-app-destruction to make it more
|
| // static |
| GURL MojoMediaApplication::AppUrl() { |
| @@ -24,18 +29,25 @@ scoped_ptr<mojo::ApplicationDelegate> MojoMediaApplication::CreateApp() { |
| return scoped_ptr<mojo::ApplicationDelegate>(new MojoMediaApplication()); |
| } |
| -MojoMediaApplication::MojoMediaApplication() { |
| +MojoMediaApplication::MojoMediaApplication() |
| + : app_impl_(nullptr), |
| + release_delay_(base::TimeDelta::FromSeconds(kIdleTimeoutInSeconds)) { |
| } |
| MojoMediaApplication::~MojoMediaApplication() { |
| } |
| void MojoMediaApplication::Initialize(mojo::ApplicationImpl* app) { |
| + app_impl_ = app; |
| + |
| logging::LoggingSettings settings; |
| settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; |
| logging::InitLogging(settings); |
| // Display process ID, thread ID and timestamp in logs. |
| logging::SetLogItems(true, true, true, false); |
| + |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch(kFastAppDestruction)) |
|
sandersd (OOO until July 31)
2015/06/30 21:32:47
It's a little strange to have this in Initialize()
xhwang
2015/07/07 20:29:24
No. Added comment to explain that.
|
| + release_delay_ = base::TimeDelta(); |
| } |
| bool MojoMediaApplication::ConfigureIncomingConnection( |
| @@ -49,14 +61,18 @@ void MojoMediaApplication::Create( |
| mojo::ApplicationConnection* connection, |
| mojo::InterfaceRequest<mojo::ContentDecryptionModule> request) { |
| // The created object is owned by the pipe. |
| - new MojoCdmService(&cdm_service_context_, request.Pass()); |
| + new MojoCdmService( |
| + request.Pass(), &cdm_service_context_, |
| + app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_)); |
| } |
| void MojoMediaApplication::Create( |
| mojo::ApplicationConnection* connection, |
| mojo::InterfaceRequest<mojo::MediaRenderer> request) { |
| // The created object is owned by the pipe. |
| - new MojoRendererService(&cdm_service_context_, request.Pass()); |
| + new MojoRendererService( |
| + request.Pass(), &cdm_service_context_, |
| + app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_)); |
| } |
| } // namespace media |