|
[Mojo Video Capture] Stop service when last client disconnects.
This CL is part of the Mojo Video Capture work. For the bigger picture,
see [1] CL23.
Purpose of this CL:
Stop service when last client disconnects. Once we host it in a separate process, this will allow the service to automatically restart when a new request comes in.
Changes in this CL:
* Split class video_capture::ServiceImpl into two classes
ServiceManagerServiceImpl and VideoCaptureServiceImpl.
* In class ServiceManagerServiceImpl, following the example of ImageDecoder [2],
use a ServiceContextRefFactory to manage service lifetime and implement a
delayed service shutdown when there are no clients.
* Add tests ServiceQuitsWhenNoClientConnected and
ServiceQuitsWhenClientDisconnectsWhileUsingDevice
* In service.mojom, add a method for setting the service shutdown delay.
For the automated tests, set the delay to zero.
* In DeviceFactoryMediaToMojoAdapter, make sure that
|capture_system_->GetDeviceInfosAsync()| is called before
|capture_system_->CreateDevice()|. This is required by the implementation
VideoCaptureSystemImpl in order to fill the cache |devices_info_cache_|.
* In DeviceMediaToMojoAdapter, unsubscibe from
|receiver.set_connection_error_handler()| in order to avoid use after free
on service shutdown.
* In ReceiverMojoToMediaAdapter, introduce class ReceiverOnTaskRunner in order
to ensure that mojom.Receiver methods are posted to the correct thread.
* In VideoCaptureDeviceClient, allow |external_jpeg_decoder_| to be nullptr,
since in the context of the video_capture service, this will (for now) be the
case.
BUG= 584797
TEST=
service_unittests --gtest_filter="*Video*"
content_unittests --gtest_filter="*Video*"
content_browsertests --gtest_filter="VideoCaptureBrowserTest.*"
[1] https://docs.google.com/a/chromium.org/document/d/1Qw7rw1AJy0QHXjha36jZNiEuxsxWslJ_X-zpOhijvI8/edit?usp=sharing
[2] https://cs.chromium.org/chromium/src/services/data_decoder/data_decoder_service.cc?dr=CSs
Review-Url: https://codereview.chromium.org/2824883005
Cr-Commit-Position: refs/heads/master@{#468358}
Committed: https://chromium.googlesource.com/chromium/src/+/9fe5b74189b804423d7fe66182a3c07dd6c61dd1
Total comments: 38
Total comments: 6
Total comments: 12
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+519 lines, -333 lines) |
Patch |
 |
M |
media/capture/video/video_capture_device_client.cc
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
media/capture/video/video_capture_system.h
|
View
|
1
2
3
4
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/BUILD.gn
|
View
|
1
|
5 chunks |
+15 lines, -9 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/device_factory_media_to_mojo_adapter.h
|
View
|
1
|
3 chunks |
+12 lines, -1 line |
0 comments
|
Download
|
 |
M |
services/video_capture/device_factory_media_to_mojo_adapter.cc
|
View
|
1
|
5 chunks |
+33 lines, -3 lines |
0 comments
|
Download
|
 |
A + |
services/video_capture/device_factory_provider_impl.h
|
View
|
1
2
3
|
1 chunk |
+18 lines, -24 lines |
0 comments
|
Download
|
 |
A + |
services/video_capture/device_factory_provider_impl.cc
|
View
|
1
|
3 chunks |
+25 lines, -28 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/device_media_to_mojo_adapter.h
|
View
|
1
|
2 chunks |
+13 lines, -5 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/device_media_to_mojo_adapter.cc
|
View
|
1
|
2 chunks |
+26 lines, -7 lines |
0 comments
|
Download
|
 |
A |
services/video_capture/public/cpp/BUILD.gn
|
View
|
1
|
1 chunk |
+24 lines, -0 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/public/interfaces/BUILD.gn
|
View
|
1
|
2 chunks |
+7 lines, -1 line |
0 comments
|
Download
|
 |
A |
services/video_capture/public/interfaces/constants.mojom
|
View
|
1
|
1 chunk |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
A + |
services/video_capture/public/interfaces/device_factory_provider.mojom
|
View
|
1
|
2 chunks |
+9 lines, -2 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/public/interfaces/service.mojom
|
View
|
1
|
1 chunk |
+0 lines, -20 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/receiver_mojo_to_media_adapter.h
|
View
|
1
|
2 chunks |
+32 lines, -1 line |
0 comments
|
Download
|
 |
M |
services/video_capture/receiver_mojo_to_media_adapter.cc
|
View
|
|
1 chunk |
+69 lines, -0 lines |
0 comments
|
Download
|
 |
D |
services/video_capture/service_impl.h
|
View
|
1
2
3
4
|
2 chunks |
+20 lines, -26 lines |
0 comments
|
Download
|
 |
D |
services/video_capture/service_impl.cc
|
View
|
1
2
3
4
|
1 chunk |
+52 lines, -57 lines |
0 comments
|
Download
|
 |
A + |
services/video_capture/test/device_factory_provider_test.h
|
View
|
1
2
3
|
1 chunk |
+40 lines, -8 lines |
0 comments
|
Download
|
 |
A |
services/video_capture/test/device_factory_provider_test.cc
|
View
|
1
|
1 chunk |
+43 lines, -0 lines |
0 comments
|
Download
|
 |
A + |
services/video_capture/test/device_factory_provider_unittest.cc
|
View
|
1
|
5 chunks |
+28 lines, -5 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/fake_device_descriptor_test.h
|
View
|
1
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/fake_device_descriptor_test.cc
|
View
|
1
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/fake_device_unittest.cc
|
View
|
1
|
2 chunks |
+23 lines, -0 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/mock_device_factory.h
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
services/video_capture/test/mock_device_test.h
|
View
|
1
|
3 chunks |
+5 lines, -3 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/mock_device_test.cc
|
View
|
1
|
4 chunks |
+6 lines, -4 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/service_test.h
|
View
|
1
|
1 chunk |
+0 lines, -32 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/service_test.cc
|
View
|
1
|
1 chunk |
+0 lines, -20 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/service_unittest.cc
|
View
|
1
|
1 chunk |
+0 lines, -70 lines |
0 comments
|
Download
|
 |
M |
services/video_capture/test/service_unittest_manifest.json
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
Depends on Patchset:
Dependent Patchsets:
Total messages: 43 (29 generated)
|