Index: media/mojo/services/media_apptest.cc |
diff --git a/media/mojo/services/media_apptest.cc b/media/mojo/services/media_apptest.cc |
index f194567c5911785877bebe6ab19086a5109f3bad..5737cac493422793cf1a1d964bdbda8b1cbe6803 100644 |
--- a/media/mojo/services/media_apptest.cc |
+++ b/media/mojo/services/media_apptest.cc |
@@ -57,7 +57,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(&cdm_); |
connection->ConnectToService(&media_renderer_); |
@@ -100,6 +102,8 @@ class MediaAppTest : public mojo::test::ApplicationTestBase { |
base::Unretained(this))); |
} |
+ MOCK_METHOD0(OnAppTerminated, void()); |
+ |
protected: |
scoped_ptr<base::RunLoop> run_loop_; |
@@ -141,4 +145,17 @@ TEST_F(MediaAppTest, InitializeRenderer_InvalidConfig) { |
run_loop_->Run(); |
} |
+TEST_F(MediaAppTest, Lifetime) { |
+ // Disconnect one service doesn't terminate the app. |
+ cdm_.reset(); |
+ |
+ // Disconnect all services should terminate the app. |
+ EXPECT_CALL(*this, OnAppTerminated()) |
+ .Times(Exactly(1)) |
+ .WillOnce(Invoke(run_loop_.get(), &base::RunLoop::Quit)); |
+ media_renderer_.reset(); |
+ |
+ run_loop_->Run(); |
+} |
+ |
} // namespace media |