| 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..fe5bdde13f9ee483449da807f9a26755855985f9 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-media-app-destruction";
|
|
|
| // static
|
| GURL MojoMediaApplication::AppUrl() {
|
| @@ -24,18 +29,28 @@ 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);
|
| +
|
| + // Put this check here instead of in the constructor because |this| can be
|
| + // constructed before the command line is initialized.
|
| + // See ApplicationRunner::InitBaseCommandLine().
|
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch(kFastAppDestruction))
|
| + release_delay_ = base::TimeDelta();
|
| }
|
|
|
| bool MojoMediaApplication::ConfigureIncomingConnection(
|
| @@ -49,14 +64,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
|
|
|