Commit 917706c0 authored by Mario Sanchez Prada's avatar Mario Sanchez Prada Committed by Commit Bot

Migrate references to the video_capture::mojom::VideoSourceProvider interface

Convert the remaining bits referencing the VideoSourceProvider mojo interface
(from video_capture service) using the old APIs to the new mojo types, and
adapt unit tests.

Bug: 955171
Change-Id: I321f8d47bd0efc12bc054ad13e4ac44f02516da3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1886854
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Reviewed-by: default avatarChrome Cunningham <chcunningham@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#711652}
parent 2ca93eb0
......@@ -25,6 +25,5 @@ interface MediaPerceptionControllerClient {
// Interface for the service to connect to the Video Capture Service
// directly via a Mojo pipe set up through a DeviceFactory request.
ConnectToVideoCaptureService@0(
video_capture.mojom.VideoSourceProvider& request);
pending_receiver<video_capture.mojom.VideoSourceProvider> receiver);
};
......@@ -9,7 +9,7 @@
namespace content {
RefCountedVideoSourceProvider::RefCountedVideoSourceProvider(
video_capture::mojom::VideoSourceProviderPtr source_provider,
mojo::Remote<video_capture::mojom::VideoSourceProvider> source_provider,
base::OnceClosure destruction_cb)
: source_provider_(std::move(source_provider)),
destruction_cb_(std::move(destruction_cb)) {}
......
......@@ -7,6 +7,7 @@
#include "base/memory/ref_counted.h"
#include "content/common/content_export.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/video_capture/public/mojom/video_source_provider.mojom.h"
namespace content {
......@@ -20,12 +21,13 @@ class CONTENT_EXPORT RefCountedVideoSourceProvider
: public base::RefCounted<RefCountedVideoSourceProvider> {
public:
RefCountedVideoSourceProvider(
video_capture::mojom::VideoSourceProviderPtr source_provider,
mojo::Remote<video_capture::mojom::VideoSourceProvider> source_provider,
base::OnceClosure destruction_cb);
base::WeakPtr<RefCountedVideoSourceProvider> GetWeakPtr();
const video_capture::mojom::VideoSourceProviderPtr& source_provider() {
const mojo::Remote<video_capture::mojom::VideoSourceProvider>&
source_provider() {
return source_provider_;
}
......@@ -36,7 +38,7 @@ class CONTENT_EXPORT RefCountedVideoSourceProvider
friend class base::RefCounted<RefCountedVideoSourceProvider>;
~RefCountedVideoSourceProvider();
video_capture::mojom::VideoSourceProviderPtr source_provider_;
mojo::Remote<video_capture::mojom::VideoSourceProvider> source_provider_;
base::OnceClosure destruction_cb_;
base::WeakPtrFactory<RefCountedVideoSourceProvider> weak_ptr_factory_{this};
......
......@@ -12,8 +12,6 @@
#include "content/browser/renderer_host/media/ref_counted_video_source_provider.h"
#include "content/browser/renderer_host/media/service_launched_video_capture_device.h"
#include "content/public/test/browser_task_environment.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
......@@ -59,9 +57,9 @@ class ServiceVideoCaptureDeviceLauncherTest : public testing::Test {
protected:
void SetUp() override {
source_provider_binding_ = std::make_unique<
mojo::Binding<video_capture::mojom::VideoSourceProvider>>(
&mock_source_provider_, mojo::MakeRequest(&source_provider_));
source_provider_receiver_ = std::make_unique<
mojo::Receiver<video_capture::mojom::VideoSourceProvider>>(
&mock_source_provider_, source_provider_.BindNewPipeAndPassReceiver());
service_connection_ = base::MakeRefCounted<RefCountedVideoSourceProvider>(
std::move(source_provider_),
release_connection_cb_.Get());
......@@ -124,10 +122,10 @@ class ServiceVideoCaptureDeviceLauncherTest : public testing::Test {
BrowserTaskEnvironment task_environment_;
MockVideoCaptureDeviceLauncherCallbacks mock_callbacks_;
video_capture::mojom::VideoSourceProviderPtr source_provider_;
mojo::Remote<video_capture::mojom::VideoSourceProvider> source_provider_;
video_capture::MockVideoSourceProvider mock_source_provider_;
std::unique_ptr<mojo::Binding<video_capture::mojom::VideoSourceProvider>>
source_provider_binding_;
std::unique_ptr<mojo::Receiver<video_capture::mojom::VideoSourceProvider>>
source_provider_receiver_;
video_capture::MockVideoSource mock_source_;
std::unique_ptr<mojo::Receiver<video_capture::mojom::VideoSource>>
source_receiver_;
......
......@@ -18,6 +18,7 @@
#include "content/public/common/content_features.h"
#include "mojo/public/cpp/bindings/callback_helpers.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/video_capture/public/mojom/video_capture_service.mojom.h"
#include "services/video_capture/public/uma/video_capture_service_event.h"
......@@ -227,10 +228,10 @@ ServiceVideoCaptureProvider::LazyConnectToService() {
std::move(accelerator_factory));
#endif // defined(OS_CHROMEOS)
video_capture::mojom::VideoSourceProviderPtr source_provider;
mojo::Remote<video_capture::mojom::VideoSourceProvider> source_provider;
GetVideoCaptureService().ConnectToVideoSourceProvider(
mojo::MakeRequest(&source_provider));
source_provider.set_connection_error_handler(base::BindOnce(
source_provider.BindNewPipeAndPassReceiver());
source_provider.set_disconnect_handler(base::BindOnce(
&ServiceVideoCaptureProvider::OnLostConnectionToSourceProvider,
weak_ptr_factory_.GetWeakPtr()));
auto result = base::MakeRefCounted<RefCountedVideoSourceProvider>(
......
......@@ -15,10 +15,9 @@
#include "content/public/browser/video_capture_device_launcher.h"
#include "content/public/browser/video_capture_service.h"
#include "content/public/test/browser_task_environment.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "services/video_capture/public/cpp/mock_push_subscription.h"
#include "services/video_capture/public/cpp/mock_video_capture_service.h"
......@@ -58,7 +57,7 @@ class MockVideoCaptureDeviceLauncherCallbacks
class ServiceVideoCaptureProviderTest : public testing::Test {
public:
ServiceVideoCaptureProviderTest()
: source_provider_binding_(&mock_source_provider_) {
: source_provider_receiver_(&mock_source_provider_) {
OverrideVideoCaptureServiceForTesting(&mock_video_capture_service_);
}
......@@ -84,9 +83,9 @@ class ServiceVideoCaptureProviderTest : public testing::Test {
[this](
mojo::PendingReceiver<video_capture::mojom::VideoSourceProvider>
receiver) {
if (source_provider_binding_.is_bound())
source_provider_binding_.Close();
source_provider_binding_.Bind(std::move(receiver));
if (source_provider_receiver_.is_bound())
source_provider_receiver_.reset();
source_provider_receiver_.Bind(std::move(receiver));
wait_for_connection_to_service_.Quit();
}));
......@@ -130,8 +129,8 @@ class ServiceVideoCaptureProviderTest : public testing::Test {
content::BrowserTaskEnvironment task_environment_;
video_capture::MockVideoCaptureService mock_video_capture_service_;
video_capture::MockVideoSourceProvider mock_source_provider_;
mojo::Binding<video_capture::mojom::VideoSourceProvider>
source_provider_binding_;
mojo::Receiver<video_capture::mojom::VideoSourceProvider>
source_provider_receiver_;
video_capture::MockVideoSource mock_source_;
mojo::ReceiverSet<video_capture::mojom::VideoSource> source_receivers_;
video_capture::MockPushSubcription mock_subscription_;
......@@ -182,7 +181,7 @@ TEST_F(ServiceVideoCaptureProviderTest,
wait_for_call_to_arrive_at_service.Run();
// Simulate that the service goes down by cutting the connections.
source_provider_binding_.Close();
source_provider_receiver_.reset();
wait_for_callback_from_service.Run();
}
......@@ -212,7 +211,7 @@ TEST_F(ServiceVideoCaptureProviderTest,
// Setup part 2: Now that the connection to the service is established, we can
// listen for disconnects.
base::RunLoop wait_for_connection_to_source_provider_to_close;
source_provider_binding_.set_connection_error_handler(
source_provider_receiver_.set_disconnect_handler(
base::BindOnce([](base::RunLoop* run_loop) { run_loop->Quit(); },
&wait_for_connection_to_source_provider_to_close));
......@@ -244,7 +243,7 @@ TEST_F(ServiceVideoCaptureProviderTest,
// Monitor if connection gets closed
bool connection_has_been_closed = false;
source_provider_binding_.set_connection_error_handler(base::BindOnce(
source_provider_receiver_.set_disconnect_handler(base::BindOnce(
[](bool* connection_has_been_closed) {
*connection_has_been_closed = true;
},
......@@ -335,7 +334,7 @@ TEST_F(ServiceVideoCaptureProviderTest,
// Monitor if connection gets closed
bool connection_has_been_closed = false;
source_provider_binding_.set_connection_error_handler(base::BindOnce(
source_provider_receiver_.set_disconnect_handler(base::BindOnce(
[](bool* connection_has_been_closed) {
*connection_has_been_closed = true;
},
......
......@@ -86,7 +86,7 @@ class WebRtcVideoCaptureServiceEnumerationBrowserTest
break;
case ServiceApi::kMultiClient:
GetVideoCaptureService().ConnectToVideoSourceProvider(
mojo::MakeRequest(&video_source_provider_));
video_source_provider_.BindNewPipeAndPassReceiver());
video_source_provider_->RegisterVirtualDevicesChangedObserver(
std::move(observer),
false /*raise_event_if_virtual_devices_already_present*/);
......@@ -166,7 +166,7 @@ class WebRtcVideoCaptureServiceEnumerationBrowserTest
void DisconnectFromService() {
factory_.reset();
video_source_provider_ = nullptr;
video_source_provider_.reset();
}
void EnumerateDevicesInRendererAndVerifyDeviceCount(
......@@ -234,7 +234,8 @@ class WebRtcVideoCaptureServiceEnumerationBrowserTest
devices_changed_observer_receiver_{this};
base::test::ScopedFeatureList scoped_feature_list_;
mojo::Remote<video_capture::mojom::DeviceFactory> factory_;
video_capture::mojom::VideoSourceProviderPtr video_source_provider_;
mojo::Remote<video_capture::mojom::VideoSourceProvider>
video_source_provider_;
base::OnceClosure closure_to_be_called_on_devices_changed_;
DISALLOW_COPY_AND_ASSIGN(WebRtcVideoCaptureServiceEnumerationBrowserTest);
......
......@@ -87,7 +87,7 @@ class WebRtcVideoCaptureSharedDeviceBrowserTest
break;
case ServiceApi::kMultiClient:
GetVideoCaptureService().ConnectToVideoSourceProvider(
mojo::MakeRequest(&video_source_provider_));
video_source_provider_.BindNewPipeAndPassReceiver());
video_source_provider_->GetSourceInfos(base::BindOnce(
&WebRtcVideoCaptureSharedDeviceBrowserTest::OnSourceInfosReceived,
weak_factory_.GetWeakPtr(), GetParam().buffer_type_to_request));
......@@ -198,7 +198,8 @@ class WebRtcVideoCaptureSharedDeviceBrowserTest
mojo::Remote<video_capture::mojom::Device> device_;
// For multi-client API case only
video_capture::mojom::VideoSourceProviderPtr video_source_provider_;
mojo::Remote<video_capture::mojom::VideoSourceProvider>
video_source_provider_;
mojo::Remote<video_capture::mojom::VideoSource> video_source_;
mojo::Remote<video_capture::mojom::PushVideoStreamSubscription> subscription_;
......
......@@ -99,9 +99,10 @@ class MediaPerceptionAPIManager::MediaPerceptionControllerClient
// media_perception::mojom::MediaPerceptionControllerClient:
void ConnectToVideoCaptureService(
video_capture::mojom::VideoSourceProviderRequest request) override {
mojo::PendingReceiver<video_capture::mojom::VideoSourceProvider> receiver)
override {
DCHECK(delegate_) << "Delegate not set.";
delegate_->BindVideoSourceProvider(std::move(request));
delegate_->BindVideoSourceProvider(std::move(receiver));
}
private:
......
......@@ -75,9 +75,9 @@ TEST_F(VideoCaptureServiceLifecycleTest,
// provider.
TEST_F(VideoCaptureServiceLifecycleTest,
ServiceQuitsWhenSingleVideoSourceProviderClientDisconnected) {
mojom::VideoSourceProviderPtr source_provider;
mojo::Remote<mojom::VideoSourceProvider> source_provider;
service_remote_->ConnectToVideoSourceProvider(
mojo::MakeRequest(&source_provider));
source_provider.BindNewPipeAndPassReceiver());
source_provider.reset();
service_idle_wait_loop_.Run();
}
......@@ -85,9 +85,9 @@ TEST_F(VideoCaptureServiceLifecycleTest,
// Tests that the service quits when the only client disconnects after
// enumerating devices via the video source provider.
TEST_F(VideoCaptureServiceLifecycleTest, ServiceQuitsAfterEnumeratingDevices) {
mojom::VideoSourceProviderPtr source_provider;
mojo::Remote<mojom::VideoSourceProvider> source_provider;
service_remote_->ConnectToVideoSourceProvider(
mojo::MakeRequest(&source_provider));
source_provider.BindNewPipeAndPassReceiver());
base::RunLoop wait_loop;
EXPECT_CALL(device_info_receiver_, Run(_))
......@@ -108,9 +108,9 @@ TEST_F(VideoCaptureServiceLifecycleTest, ServiceQuitsAfterEnumeratingDevices) {
// reconnects via the video source provider.
TEST_F(VideoCaptureServiceLifecycleTest, EnumerateDevicesAfterReconnect) {
// Connect |source_provider|.
mojom::VideoSourceProviderPtr source_provider;
mojo::Remote<mojom::VideoSourceProvider> source_provider;
service_remote_->ConnectToVideoSourceProvider(
mojo::MakeRequest(&source_provider));
source_provider.BindNewPipeAndPassReceiver());
// Disconnect |source_provider| and wait for the disconnect to propagate to
// the service.
......@@ -124,7 +124,7 @@ TEST_F(VideoCaptureServiceLifecycleTest, EnumerateDevicesAfterReconnect) {
// Reconnect |source_provider|.
service_remote_->ConnectToVideoSourceProvider(
mojo::MakeRequest(&source_provider));
source_provider.BindNewPipeAndPassReceiver());
// Enumerate devices.
base::RunLoop wait_loop;
......
......@@ -17,16 +17,16 @@ VideoSourceProviderImpl::VideoSourceProviderImpl(
: device_factory_(device_factory),
on_last_client_disconnected_cb_(
std::move(on_last_client_disconnected_cb)) {
// Unretained |this| is safe because |bindings_| is owned by |this|.
bindings_.set_connection_error_handler(base::BindRepeating(
// Unretained |this| is safe because |receivers_| is owned by |this|.
receivers_.set_disconnect_handler(base::BindRepeating(
&VideoSourceProviderImpl::OnClientDisconnected, base::Unretained(this)));
}
VideoSourceProviderImpl::~VideoSourceProviderImpl() = default;
void VideoSourceProviderImpl::AddClient(
mojom::VideoSourceProviderRequest request) {
bindings_.AddBinding(this, std::move(request));
mojo::PendingReceiver<mojom::VideoSourceProvider> receiver) {
receivers_.Add(this, std::move(receiver));
client_count_++;
}
......
......@@ -7,9 +7,9 @@
#include <map>
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "services/video_capture/device_factory.h"
#include "services/video_capture/public/mojom/video_source_provider.mojom.h"
......@@ -24,7 +24,7 @@ class VideoSourceProviderImpl : public mojom::VideoSourceProvider {
base::RepeatingClosure on_last_client_disconnected_cb);
~VideoSourceProviderImpl() override;
void AddClient(mojom::VideoSourceProviderRequest request);
void AddClient(mojo::PendingReceiver<mojom::VideoSourceProvider> receiver);
// mojom::VideoSourceProvider implementation.
void GetSourceInfos(GetSourceInfosCallback callback) override;
......@@ -55,7 +55,7 @@ class VideoSourceProviderImpl : public mojom::VideoSourceProvider {
base::RepeatingClosure on_last_client_disconnected_cb_;
int client_count_ = 0;
int closed_but_not_yet_disconnected_client_count_ = 0;
mojo::BindingSet<mojom::VideoSourceProvider> bindings_;
mojo::ReceiverSet<mojom::VideoSourceProvider> receivers_;
std::map<std::string, std::unique_ptr<VideoSourceImpl>> sources_;
DISALLOW_COPY_AND_ASSIGN(VideoSourceProviderImpl);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment