summaryrefslogtreecommitdiffstats
path: root/chromium/cc/mojo_embedder
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/mojo_embedder')
-rw-r--r--chromium/cc/mojo_embedder/async_layer_tree_frame_sink.cc28
-rw-r--r--chromium/cc/mojo_embedder/async_layer_tree_frame_sink.h27
-rw-r--r--chromium/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc50
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);