diff options
Diffstat (limited to 'chromium/cc/mojo_embedder')
3 files changed, 54 insertions, 51 deletions
diff --git a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.cc b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.cc index c66fe89ba21..72c13d9231f 100644 --- a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.cc +++ b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.cc @@ -66,9 +66,9 @@ AsyncLayerTreeFrameSink::UnboundMessagePipes::UnboundMessagePipes() = default; AsyncLayerTreeFrameSink::UnboundMessagePipes::~UnboundMessagePipes() = default; bool AsyncLayerTreeFrameSink::UnboundMessagePipes::HasUnbound() const { - return client_request.is_pending() && - (compositor_frame_sink_info.is_valid() ^ - compositor_frame_sink_associated_info.is_valid()); + return client_receiver.is_valid() && + (compositor_frame_sink_remote.is_valid() ^ + compositor_frame_sink_associated_remote.is_valid()); } AsyncLayerTreeFrameSink::UnboundMessagePipes::UnboundMessagePipes( @@ -86,7 +86,6 @@ AsyncLayerTreeFrameSink::AsyncLayerTreeFrameSink( synthetic_begin_frame_source_( std::move(params->synthetic_begin_frame_source)), pipes_(std::move(params->pipes)), - client_binding_(this), wants_animate_only_begin_frames_(params->wants_animate_only_begin_frames), receive_begin_frame_histogram_( GetHistogramNamed("GraphicsPipeline.%s.ReceivedBeginFrame", @@ -110,22 +109,22 @@ bool AsyncLayerTreeFrameSink::BindToClient(LayerTreeFrameSinkClient* client) { return false; DCHECK(pipes_.HasUnbound()); - if (pipes_.compositor_frame_sink_info.is_valid()) { - compositor_frame_sink_.Bind(std::move(pipes_.compositor_frame_sink_info)); - compositor_frame_sink_.set_connection_error_with_reason_handler( + if (pipes_.compositor_frame_sink_remote.is_valid()) { + compositor_frame_sink_.Bind(std::move(pipes_.compositor_frame_sink_remote)); + compositor_frame_sink_.set_disconnect_with_reason_handler( base::BindOnce(&AsyncLayerTreeFrameSink::OnMojoConnectionError, weak_factory_.GetWeakPtr())); compositor_frame_sink_ptr_ = compositor_frame_sink_.get(); - } else if (pipes_.compositor_frame_sink_associated_info.is_valid()) { + } else if (pipes_.compositor_frame_sink_associated_remote.is_valid()) { compositor_frame_sink_associated_.Bind( - std::move(pipes_.compositor_frame_sink_associated_info)); - compositor_frame_sink_associated_.set_connection_error_with_reason_handler( + std::move(pipes_.compositor_frame_sink_associated_remote)); + compositor_frame_sink_associated_.set_disconnect_with_reason_handler( base::BindOnce(&AsyncLayerTreeFrameSink::OnMojoConnectionError, weak_factory_.GetWeakPtr())); compositor_frame_sink_ptr_ = compositor_frame_sink_associated_.get(); } - client_binding_.Bind(std::move(pipes_.client_request), - compositor_task_runner_); + client_receiver_.Bind(std::move(pipes_.client_receiver), + compositor_task_runner_); if (synthetic_begin_frame_source_) { client->SetBeginFrameSource(synthetic_begin_frame_source_.get()); @@ -146,7 +145,7 @@ void AsyncLayerTreeFrameSink::DetachFromClient() { client_->SetBeginFrameSource(nullptr); begin_frame_source_.reset(); synthetic_begin_frame_source_.reset(); - client_binding_.Close(); + client_receiver_.reset(); compositor_frame_sink_.reset(); compositor_frame_sink_associated_.reset(); compositor_frame_sink_ptr_ = nullptr; @@ -292,8 +291,7 @@ void AsyncLayerTreeFrameSink::OnBeginFrame( const viz::BeginFrameArgs& args, const viz::FrameTimingDetailsMap& timing_details) { for (const auto& pair : timing_details) { - client_->DidPresentCompositorFrame(pair.first, - pair.second.presentation_feedback); + client_->DidPresentCompositorFrame(pair.first, pair.second); } DCHECK_LE(pipeline_reporting_frame_times_.size(), 25u); diff --git a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.h b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.h index d32489d3f19..236d792b4b0 100644 --- a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.h +++ b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink.h @@ -19,7 +19,12 @@ #include "components/viz/common/gpu/context_provider.h" #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h" #include "components/viz/common/surfaces/surface_id.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/associated_remote.h" +#include "mojo/public/cpp/bindings/pending_associated_remote.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/remote.h" #include "services/viz/public/mojom/compositing/compositor_frame_sink.mojom.h" namespace base { @@ -74,12 +79,14 @@ class CC_MOJO_EMBEDDER_EXPORT AsyncLayerTreeFrameSink bool HasUnbound() const; - // Only one of |compositor_frame_sink_info| or - // |compositor_frame_sink_associated_info| should be set. - viz::mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info; - viz::mojom::CompositorFrameSinkAssociatedPtrInfo - compositor_frame_sink_associated_info; - viz::mojom::CompositorFrameSinkClientRequest client_request; + // Only one of |compositor_frame_sink_remote| or + // |compositor_frame_sink_associated_remote| should be set. + mojo::PendingRemote<viz::mojom::CompositorFrameSink> + compositor_frame_sink_remote; + mojo::PendingAssociatedRemote<viz::mojom::CompositorFrameSink> + compositor_frame_sink_associated_remote; + mojo::PendingReceiver<viz::mojom::CompositorFrameSinkClient> + client_receiver; }; struct CC_MOJO_EMBEDDER_EXPORT InitParams { @@ -159,10 +166,10 @@ class CC_MOJO_EMBEDDER_EXPORT AsyncLayerTreeFrameSink // be bound after calling BindToClient(). |compositor_frame_sink_ptr_| will // point to message pipe we want to use. viz::mojom::CompositorFrameSink* compositor_frame_sink_ptr_ = nullptr; - viz::mojom::CompositorFrameSinkPtr compositor_frame_sink_; - viz::mojom::CompositorFrameSinkAssociatedPtr + mojo::Remote<viz::mojom::CompositorFrameSink> compositor_frame_sink_; + mojo::AssociatedRemote<viz::mojom::CompositorFrameSink> compositor_frame_sink_associated_; - mojo::Binding<viz::mojom::CompositorFrameSinkClient> client_binding_; + mojo::Receiver<viz::mojom::CompositorFrameSinkClient> client_receiver_{this}; THREAD_CHECKER(thread_checker_); const bool wants_animate_only_begin_frames_; diff --git a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc index 48ec028118b..82984c11006 100644 --- a/chromium/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc +++ b/chromium/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc @@ -21,7 +21,8 @@ #include "components/viz/test/compositor_frame_helpers.h" #include "components/viz/test/test_context_provider.h" #include "components/viz/test/test_gpu_memory_buffer_manager.h" -#include "mojo/public/cpp/bindings/interface_request.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "services/viz/public/mojom/compositing/compositor_frame_sink.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -67,18 +68,16 @@ TEST(AsyncLayerTreeFrameSinkTest, viz::TestContextProvider::Create(); viz::TestGpuMemoryBufferManager test_gpu_memory_buffer_manager; - viz::mojom::CompositorFrameSinkPtrInfo sink_info; - viz::mojom::CompositorFrameSinkRequest sink_request = - mojo::MakeRequest(&sink_info); - viz::mojom::CompositorFrameSinkClientPtr client; - viz::mojom::CompositorFrameSinkClientRequest client_request = - mojo::MakeRequest(&client); + mojo::PendingRemote<viz::mojom::CompositorFrameSink> sink_remote; + mojo::PendingReceiver<viz::mojom::CompositorFrameSink> sink_receiver = + sink_remote.InitWithNewPipeAndPassReceiver(); + mojo::PendingRemote<viz::mojom::CompositorFrameSinkClient> client; AsyncLayerTreeFrameSink::InitParams init_params; init_params.compositor_task_runner = bg_thread.task_runner(); init_params.gpu_memory_buffer_manager = &test_gpu_memory_buffer_manager; - init_params.pipes.compositor_frame_sink_info = std::move(sink_info); - init_params.pipes.client_request = std::move(client_request); + init_params.pipes.compositor_frame_sink_remote = std::move(sink_remote); + init_params.pipes.client_receiver = client.InitWithNewPipeAndPassReceiver(); auto layer_tree_frame_sink = std::make_unique<AsyncLayerTreeFrameSink>( std::move(provider), nullptr, &init_params); @@ -99,7 +98,7 @@ TEST(AsyncLayerTreeFrameSinkTest, // Closes the pipe, which should trigger calling DidLoseLayerTreeFrameSink() // (and quitting the RunLoop). There is no need to wait for BindToClient() // to complete as mojo::Binding error callbacks are processed asynchronously. - sink_request = viz::mojom::CompositorFrameSinkRequest(); + sink_receiver.reset(); close_run_loop.Run(); EXPECT_NE(base::kInvalidThreadId, called_thread_id); @@ -132,17 +131,16 @@ class AsyncLayerTreeFrameSinkSimpleTest : public testing::Test { display_rect_(1, 1) { auto context_provider = viz::TestContextProvider::Create(); - viz::mojom::CompositorFrameSinkPtrInfo sink_info; - viz::mojom::CompositorFrameSinkRequest sink_request = - mojo::MakeRequest(&sink_info); - viz::mojom::CompositorFrameSinkClientPtr client; - viz::mojom::CompositorFrameSinkClientRequest client_request = - mojo::MakeRequest(&client); + mojo::PendingRemote<viz::mojom::CompositorFrameSink> sink_remote; + mojo::PendingReceiver<viz::mojom::CompositorFrameSink> sink_receiver = + sink_remote.InitWithNewPipeAndPassReceiver(); + mojo::PendingRemote<viz::mojom::CompositorFrameSinkClient> client; init_params_.compositor_task_runner = task_runner_; init_params_.gpu_memory_buffer_manager = &test_gpu_memory_buffer_manager_; - init_params_.pipes.compositor_frame_sink_info = std::move(sink_info); - init_params_.pipes.client_request = std::move(client_request); + init_params_.pipes.compositor_frame_sink_remote = std::move(sink_remote); + init_params_.pipes.client_receiver = + client.InitWithNewPipeAndPassReceiver(); init_params_.hit_test_data_provider = std::make_unique<viz::HitTestDataProviderDrawQuad>( /*should_ask_for_child_region=*/true, /*root_accepts_events=*/true); @@ -289,15 +287,15 @@ TEST_F(AsyncLayerTreeFrameSinkSimpleTest, HitTestRegionListDuplicate) { quad3_root_1->SetNew(shared_quad_state3_root, /*rect=*/rect3_root, /*visible_rect=*/rect3_root, /*render_pass_id=*/3, /*mask_resource_id=*/0, gfx::RectF(), gfx::Size(), - /*mask_applies_to_backdrop=*/false, gfx::Vector2dF(1, 1), - gfx::PointF(), gfx::RectF(), false, 1.0f); + gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF(), false, + 1.0f); auto* quad3_root_2 = pass3_root->quad_list.AllocateAndConstruct<viz::RenderPassDrawQuad>(); quad3_root_2->SetNew(shared_quad_state3_root, /*rect=*/rect3_root, /*visible_rect=*/rect3_root, /*render_pass_id=*/4, /*mask_resource_id=*/0, gfx::RectF(), gfx::Size(), - /*mask_applies_to_backdrop=*/false, gfx::Vector2dF(1, 1), - gfx::PointF(), gfx::RectF(), false, 1.0f); + gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF(), false, + 1.0f); pass_list.push_back(std::move(pass3_root)); SendRenderPassList(&pass_list, /*hit_test_data_changed=*/false); @@ -393,15 +391,15 @@ TEST_F(AsyncLayerTreeFrameSinkSimpleTest, quad2_root_1->SetNew(shared_quad_state2_root, /*rect=*/rect2_root, /*visible_rect=*/rect2_root, /*render_pass_id=*/2, /*mask_resource_id=*/0, gfx::RectF(), gfx::Size(), - /*mask_applies_to_backdrop=*/false, gfx::Vector2dF(1, 1), - gfx::PointF(), gfx::RectF(), false, 1.0f); + gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF(), false, + 1.0f); auto* quad2_root_2 = pass2_root->quad_list.AllocateAndConstruct<viz::RenderPassDrawQuad>(); quad2_root_2->SetNew(shared_quad_state2_root, /*rect=*/rect2_root, /*visible_rect=*/rect2_root, /*render_pass_id=*/3, /*mask_resource_id=*/0, gfx::RectF(), gfx::Size(), - /*mask_applies_to_backdrop=*/false, gfx::Vector2dF(1, 1), - gfx::PointF(), gfx::RectF(), false, 1.0f); + gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF(), false, + 1.0f); pass_list.push_back(std::move(pass2_root)); SendRenderPassList(&pass_list, /*hit_test_data_changed=*/true); |