Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: media/mojo/services/mojo_media_application.cc

Issue 1200323003: media: Quit MojoMediaApplication when no service is bound. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/command_line.h"
7 #include "base/logging.h" 8 #include "base/logging.h"
8 #include "media/mojo/services/mojo_cdm_service.h" 9 #include "media/mojo/services/mojo_cdm_service.h"
9 #include "media/mojo/services/mojo_renderer_service.h" 10 #include "media/mojo/services/mojo_renderer_service.h"
10 #include "mojo/application/public/cpp/application_connection.h" 11 #include "mojo/application/public/cpp/application_connection.h"
11 #include "mojo/application/public/cpp/application_impl.h" 12 #include "mojo/application/public/cpp/application_impl.h"
12 13
13 namespace media { 14 namespace media {
14 15
15 const char kMojoMediaAppUrl[] = "mojo:media"; 16 const char kMojoMediaAppUrl[] = "mojo:media";
17 const int kIdleTimeoutInSeconds = 30;
18
19 // Switch to enable fast application destruction (for testing).
20 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
16 21
17 // static 22 // static
18 GURL MojoMediaApplication::AppUrl() { 23 GURL MojoMediaApplication::AppUrl() {
19 return GURL(kMojoMediaAppUrl); 24 return GURL(kMojoMediaAppUrl);
20 } 25 }
21 26
22 // static 27 // static
23 scoped_ptr<mojo::ApplicationDelegate> MojoMediaApplication::CreateApp() { 28 scoped_ptr<mojo::ApplicationDelegate> MojoMediaApplication::CreateApp() {
24 return scoped_ptr<mojo::ApplicationDelegate>(new MojoMediaApplication()); 29 return scoped_ptr<mojo::ApplicationDelegate>(new MojoMediaApplication());
25 } 30 }
26 31
27 MojoMediaApplication::MojoMediaApplication() { 32 MojoMediaApplication::MojoMediaApplication()
33 : app_impl_(nullptr),
34 release_delay_(base::TimeDelta::FromSeconds(kIdleTimeoutInSeconds)) {
28 } 35 }
29 36
30 MojoMediaApplication::~MojoMediaApplication() { 37 MojoMediaApplication::~MojoMediaApplication() {
31 } 38 }
32 39
33 void MojoMediaApplication::Initialize(mojo::ApplicationImpl* app) { 40 void MojoMediaApplication::Initialize(mojo::ApplicationImpl* app) {
41 app_impl_ = app;
42
34 logging::LoggingSettings settings; 43 logging::LoggingSettings settings;
35 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 44 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
36 logging::InitLogging(settings); 45 logging::InitLogging(settings);
37 // Display process ID, thread ID and timestamp in logs. 46 // Display process ID, thread ID and timestamp in logs.
38 logging::SetLogItems(true, true, true, false); 47 logging::SetLogItems(true, true, true, false);
48
49 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.
50 release_delay_ = base::TimeDelta();
39 } 51 }
40 52
41 bool MojoMediaApplication::ConfigureIncomingConnection( 53 bool MojoMediaApplication::ConfigureIncomingConnection(
42 mojo::ApplicationConnection* connection) { 54 mojo::ApplicationConnection* connection) {
43 connection->AddService<mojo::ContentDecryptionModule>(this); 55 connection->AddService<mojo::ContentDecryptionModule>(this);
44 connection->AddService<mojo::MediaRenderer>(this); 56 connection->AddService<mojo::MediaRenderer>(this);
45 return true; 57 return true;
46 } 58 }
47 59
48 void MojoMediaApplication::Create( 60 void MojoMediaApplication::Create(
49 mojo::ApplicationConnection* connection, 61 mojo::ApplicationConnection* connection,
50 mojo::InterfaceRequest<mojo::ContentDecryptionModule> request) { 62 mojo::InterfaceRequest<mojo::ContentDecryptionModule> request) {
51 // The created object is owned by the pipe. 63 // The created object is owned by the pipe.
52 new MojoCdmService(&cdm_service_context_, request.Pass()); 64 new MojoCdmService(
65 request.Pass(), &cdm_service_context_,
66 app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_));
53 } 67 }
54 68
55 void MojoMediaApplication::Create( 69 void MojoMediaApplication::Create(
56 mojo::ApplicationConnection* connection, 70 mojo::ApplicationConnection* connection,
57 mojo::InterfaceRequest<mojo::MediaRenderer> request) { 71 mojo::InterfaceRequest<mojo::MediaRenderer> request) {
58 // The created object is owned by the pipe. 72 // The created object is owned by the pipe.
59 new MojoRendererService(&cdm_service_context_, request.Pass()); 73 new MojoRendererService(
74 request.Pass(), &cdm_service_context_,
75 app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_));
60 } 76 }
61 77
62 } // namespace media 78 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698