OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 public: | 70 public: |
71 MediaServiceTest() | 71 MediaServiceTest() |
72 : ServiceTest("media_service_unittests"), | 72 : ServiceTest("media_service_unittests"), |
73 renderer_client_binding_(&renderer_client_), | 73 renderer_client_binding_(&renderer_client_), |
74 video_stream_(DemuxerStream::VIDEO) {} | 74 video_stream_(DemuxerStream::VIDEO) {} |
75 ~MediaServiceTest() override {} | 75 ~MediaServiceTest() override {} |
76 | 76 |
77 void SetUp() override { | 77 void SetUp() override { |
78 ServiceTest::SetUp(); | 78 ServiceTest::SetUp(); |
79 | 79 |
80 connection_ = connector()->Connect("media"); | |
81 media::mojom::MediaServicePtr media_service; | 80 media::mojom::MediaServicePtr media_service; |
82 connection_->GetInterface(&media_service); | 81 connector()->BindInterface("media", &media_service); |
83 | 82 |
84 auto registry = | 83 auto registry = |
85 base::MakeUnique<service_manager::InterfaceRegistry>(std::string()); | 84 base::MakeUnique<service_manager::InterfaceRegistry>(std::string()); |
86 service_manager::mojom::InterfaceProviderPtr interfaces; | 85 service_manager::mojom::InterfaceProviderPtr interfaces; |
87 registry->Bind(MakeRequest(&interfaces), service_manager::Identity(), | 86 registry->Bind(MakeRequest(&interfaces), service_manager::Identity(), |
88 service_manager::InterfaceProviderSpec(), | 87 service_manager::InterfaceProviderSpec(), |
89 service_manager::Identity(), | 88 service_manager::Identity(), |
90 service_manager::InterfaceProviderSpec()); | 89 service_manager::InterfaceProviderSpec()); |
91 | 90 |
92 media_service->CreateInterfaceFactory( | 91 media_service->CreateInterfaceFactory( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 streams.push_back(std::move(video_stream_proxy)); | 140 streams.push_back(std::move(video_stream_proxy)); |
142 renderer_->Initialize(std::move(client_ptr_info), std::move(streams), | 141 renderer_->Initialize(std::move(client_ptr_info), std::move(streams), |
143 base::nullopt, base::nullopt, | 142 base::nullopt, base::nullopt, |
144 base::Bind(&MediaServiceTest::OnRendererInitialized, | 143 base::Bind(&MediaServiceTest::OnRendererInitialized, |
145 base::Unretained(this))); | 144 base::Unretained(this))); |
146 } | 145 } |
147 | 146 |
148 MOCK_METHOD0(ConnectionClosed, void()); | 147 MOCK_METHOD0(ConnectionClosed, void()); |
149 | 148 |
150 protected: | 149 protected: |
151 std::unique_ptr<service_manager::Connection> connection_; | |
152 std::unique_ptr<base::RunLoop> run_loop_; | 150 std::unique_ptr<base::RunLoop> run_loop_; |
153 | 151 |
154 mojom::InterfaceFactoryPtr interface_factory_; | 152 mojom::InterfaceFactoryPtr interface_factory_; |
155 mojom::ContentDecryptionModulePtr cdm_; | 153 mojom::ContentDecryptionModulePtr cdm_; |
156 mojom::RendererPtr renderer_; | 154 mojom::RendererPtr renderer_; |
157 | 155 |
158 StrictMock<MockRendererClient> renderer_client_; | 156 StrictMock<MockRendererClient> renderer_client_; |
159 mojo::AssociatedBinding<mojom::RendererClient> renderer_client_binding_; | 157 mojo::AssociatedBinding<mojom::RendererClient> renderer_client_binding_; |
160 | 158 |
161 StrictMock<MockDemuxerStream> video_stream_; | 159 StrictMock<MockDemuxerStream> video_stream_; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 run_loop_->Run(); | 193 run_loop_->Run(); |
196 } | 194 } |
197 | 195 |
198 TEST_F(MediaServiceTest, InitializeRenderer_InvalidConfig) { | 196 TEST_F(MediaServiceTest, InitializeRenderer_InvalidConfig) { |
199 InitializeRenderer(TestVideoConfig::Invalid(), false); | 197 InitializeRenderer(TestVideoConfig::Invalid(), false); |
200 run_loop_->Run(); | 198 run_loop_->Run(); |
201 } | 199 } |
202 #endif // defined(ENABLE_MOJO_RENDERER) | 200 #endif // defined(ENABLE_MOJO_RENDERER) |
203 | 201 |
204 TEST_F(MediaServiceTest, Lifetime) { | 202 TEST_F(MediaServiceTest, Lifetime) { |
205 connection_->SetConnectionLostClosure( | 203 // The lifetime of the media service is controlled by the number of |
| 204 // live InterfaceFactory impls, not MediaService impls, so this pipe should |
| 205 // be closed when the last InterfaceFactory is destroyed. |
| 206 media::mojom::MediaServicePtr media_service; |
| 207 connector()->BindInterface("media", &media_service); |
| 208 media_service.set_connection_error_handler( |
206 base::Bind(&MediaServiceTest::ConnectionClosed, base::Unretained(this))); | 209 base::Bind(&MediaServiceTest::ConnectionClosed, base::Unretained(this))); |
207 | 210 |
208 // Disconnecting CDM and Renderer services doesn't terminate the app. | 211 // Disconnecting CDM and Renderer services doesn't terminate the app. |
209 cdm_.reset(); | 212 cdm_.reset(); |
210 renderer_.reset(); | 213 renderer_.reset(); |
211 | 214 |
212 // Disconnecting InterfaceFactory service should terminate the app, which will | 215 // Disconnecting InterfaceFactory service should terminate the app, which will |
213 // close the connection. | 216 // close the connection. |
214 EXPECT_CALL(*this, ConnectionClosed()) | 217 EXPECT_CALL(*this, ConnectionClosed()) |
215 .Times(Exactly(1)) | 218 .Times(Exactly(1)) |
216 .WillOnce(Invoke(run_loop_.get(), &base::RunLoop::Quit)); | 219 .WillOnce(Invoke(run_loop_.get(), &base::RunLoop::Quit)); |
217 interface_factory_.reset(); | 220 interface_factory_.reset(); |
218 | 221 |
219 run_loop_->Run(); | 222 run_loop_->Run(); |
220 } | 223 } |
221 | 224 |
222 } // namespace media | 225 } // namespace media |
OLD | NEW |