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 |