Index: media/mojo/services/media_apptest.cc |
diff --git a/media/mojo/services/media_apptest.cc b/media/mojo/services/media_apptest.cc |
index 34f855d03d52b93a5cadb0538eaaee6b3f95151c..c21a20451c9fbf6e17dd2f85c8251b969fce995f 100644 |
--- a/media/mojo/services/media_apptest.cc |
+++ b/media/mojo/services/media_apptest.cc |
@@ -60,7 +60,9 @@ class MediaAppTest : public mojo::test::ApplicationTestBase { |
mojo::URLRequestPtr request = mojo::URLRequest::New(); |
request->url = "mojo:media"; |
mojo::ApplicationConnection* connection = |
- application_impl()->ConnectToApplication(request.Pass()); |
+ application_impl()->ConnectToApplication( |
+ request.Pass(), |
+ base::Bind(&MediaAppTest::OnAppTerminated, base::Unretained(this))); |
connection->ConnectToService(&service_factory_); |
service_factory_->CreateCdm(mojo::GetProxy(&cdm_)); |
@@ -105,6 +107,8 @@ class MediaAppTest : public mojo::test::ApplicationTestBase { |
base::Unretained(this))); |
} |
+ MOCK_METHOD0(OnAppTerminated, void()); |
+ |
protected: |
scoped_ptr<base::RunLoop> run_loop_; |
@@ -146,4 +150,18 @@ TEST_F(MediaAppTest, InitializeRenderer_InvalidConfig) { |
run_loop_->Run(); |
} |
+TEST_F(MediaAppTest, Lifetime) { |
+ // Disconnecting CDM and MediaRenderer services doesn't terminate the app. |
+ cdm_.reset(); |
+ media_renderer_.reset(); |
+ |
+ // Disconnecting ServiceFactory service should terminate the app. |
+ EXPECT_CALL(*this, OnAppTerminated()) |
+ .Times(Exactly(1)) |
+ .WillOnce(Invoke(run_loop_.get(), &base::RunLoop::Quit)); |
+ service_factory_.reset(); |
+ |
+ run_loop_->Run(); |
+} |
+ |
} // namespace media |