[go: nahoru, domu]

Convert perfetto_service.mojom to new Mojo types (4/n)

This CL converts usage of |TracingSessionHostRequest| to
mojo::PendingReceiver<mojom::TracingSessionHost>

Bug: 955171, 978694
Change-Id: I79f31015757c0a92179c60fb5fea69adcd24ae59
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1831930
Reviewed-by: Colin Blundell <blundell@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Cr-Commit-Position: refs/heads/master@{#702857}
diff --git a/components/ui_devtools/tracing_agent.cc b/components/ui_devtools/tracing_agent.cc
index 76b01b2..747b1e6 100644
--- a/components/ui_devtools/tracing_agent.cc
+++ b/components/ui_devtools/tracing_agent.cc
@@ -104,8 +104,9 @@
     perfetto::TraceConfig perfetto_config =
         CreatePerfettoConfiguration(chrome_config);
 
-    tracing::mojom::TracingSessionClientPtr tracing_session_client;
-    receiver_.Bind(mojo::MakeRequest(&tracing_session_client));
+    mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+        tracing_session_client;
+    receiver_.Bind(tracing_session_client.InitWithNewPipeAndPassReceiver());
     receiver_.set_disconnect_handler(
         base::BindOnce(&PerfettoTracingSession::OnTracingSessionFailed,
                        base::Unretained(this)));
diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc
index c500679..43e5eae3 100644
--- a/content/browser/devtools/protocol/tracing_handler.cc
+++ b/content/browser/devtools/protocol/tracing_handler.cc
@@ -269,8 +269,9 @@
     perfetto::TraceConfig perfetto_config =
         CreatePerfettoConfiguration(chrome_config);
 
-    tracing::mojom::TracingSessionClientPtr tracing_session_client;
-    binding_.Bind(mojo::MakeRequest(&tracing_session_client));
+    mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+        tracing_session_client;
+    binding_.Bind(tracing_session_client.InitWithNewPipeAndPassReceiver());
     binding_.set_connection_error_handler(
         base::BindOnce(&PerfettoTracingSession::OnTracingSessionFailed,
                        base::Unretained(this)));
diff --git a/content/browser/tracing/background_tracing_active_scenario.cc b/content/browser/tracing/background_tracing_active_scenario.cc
index 3a28296..4bba2980 100644
--- a/content/browser/tracing/background_tracing_active_scenario.cc
+++ b/content/browser/tracing/background_tracing_active_scenario.cc
@@ -95,8 +95,9 @@
     perfetto_config.mutable_incremental_state_config()->set_clear_period_ms(
         interning_reset_interval_ms);
 
-    tracing::mojom::TracingSessionClientPtr tracing_session_client;
-    binding_.Bind(mojo::MakeRequest(&tracing_session_client));
+    mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+        tracing_session_client;
+    binding_.Bind(tracing_session_client.InitWithNewPipeAndPassReceiver());
     binding_.set_connection_error_handler(
         base::BindOnce(&PerfettoTracingSession::OnTracingSessionEnded,
                        base::Unretained(this)));
diff --git a/content/browser/tracing/perfetto_file_tracer.cc b/content/browser/tracing/perfetto_file_tracer.cc
index ff211fb..50e4ded 100644
--- a/content/browser/tracing/perfetto_file_tracer.cc
+++ b/content/browser/tracing/perfetto_file_tracer.cc
@@ -118,8 +118,9 @@
   // We just need a single global trace buffer, for our data.
   trace_config.mutable_buffers()->front().set_size_kb(32 * 1024);
 
-  tracing::mojom::TracingSessionClientPtr tracing_session_client;
-  binding_.Bind(mojo::MakeRequest(&tracing_session_client));
+  mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+      tracing_session_client;
+  binding_.Bind(tracing_session_client.InitWithNewPipeAndPassReceiver());
   binding_.set_connection_error_handler(base::BindOnce(
       &PerfettoFileTracer::OnTracingSessionEnded, base::Unretained(this)));
 
diff --git a/services/tracing/perfetto/consumer_host.cc b/services/tracing/perfetto/consumer_host.cc
index 5e4b51d..ea9034e9 100644
--- a/services/tracing/perfetto/consumer_host.cc
+++ b/services/tracing/perfetto/consumer_host.cc
@@ -118,8 +118,8 @@
 
 ConsumerHost::TracingSession::TracingSession(
     ConsumerHost* host,
-    mojom::TracingSessionHostRequest tracing_session_host,
-    mojom::TracingSessionClientPtr tracing_session_client,
+    mojo::PendingReceiver<mojom::TracingSessionHost> tracing_session_host,
+    mojo::Remote<mojom::TracingSessionClient> tracing_session_client,
     const perfetto::TraceConfig& trace_config,
     mojom::TracingClientPriority priority)
     : host_(host),
@@ -128,7 +128,7 @@
       tracing_priority_(priority) {
   host_->service()->RegisterTracingSession(this);
 
-  tracing_session_client_.set_connection_error_handler(base::BindOnce(
+  tracing_session_client_.set_disconnect_handler(base::BindOnce(
       &ConsumerHost::DestructTracingSession, base::Unretained(host)));
   binding_.set_connection_error_handler(base::BindOnce(
       &ConsumerHost::DestructTracingSession, base::Unretained(host)));
@@ -504,8 +504,8 @@
 }
 
 void ConsumerHost::EnableTracing(
-    mojom::TracingSessionHostRequest tracing_session_host,
-    mojom::TracingSessionClientPtr tracing_session_client,
+    mojo::PendingReceiver<mojom::TracingSessionHost> tracing_session_host,
+    mojo::PendingRemote<mojom::TracingSessionClient> tracing_session_client,
     const perfetto::TraceConfig& trace_config,
     mojom::TracingClientPriority priority) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -515,23 +515,28 @@
   // us to, after it's stopped any currently running lower or equal priority
   // tracing sessions.
   service_->RequestTracingSession(
-      priority,
-      base::BindOnce(
-          [](base::WeakPtr<ConsumerHost> weak_this,
-             mojom::TracingSessionHostRequest tracing_session_host,
-             mojom::TracingSessionClientPtr tracing_session_client,
-             const perfetto::TraceConfig& trace_config,
-             mojom::TracingClientPriority priority) {
-            if (!weak_this) {
-              return;
-            }
-
-            weak_this->tracing_session_ = std::make_unique<TracingSession>(
-                weak_this.get(), std::move(tracing_session_host),
-                std::move(tracing_session_client), trace_config, priority);
-          },
-          weak_factory_.GetWeakPtr(), std::move(tracing_session_host),
-          std::move(tracing_session_client), trace_config, priority));
+      priority, base::BindOnce(
+                    [](base::WeakPtr<ConsumerHost> weak_this,
+                       mojo::PendingReceiver<mojom::TracingSessionHost>
+                           tracing_session_host,
+                       mojo::PendingRemote<mojom::TracingSessionClient>
+                           tracing_session_client,
+                       const perfetto::TraceConfig& trace_config,
+                       mojom::TracingClientPriority priority) {
+                      if (!weak_this) {
+                        return;
+                      }
+                      mojo::Remote<mojom::TracingSessionClient>
+                          tracing_session_client_remote(
+                              std::move(tracing_session_client));
+                      weak_this->tracing_session_ =
+                          std::make_unique<TracingSession>(
+                              weak_this.get(), std::move(tracing_session_host),
+                              std::move(tracing_session_client_remote),
+                              trace_config, priority);
+                    },
+                    weak_factory_.GetWeakPtr(), std::move(tracing_session_host),
+                    std::move(tracing_session_client), trace_config, priority));
 }
 
 void ConsumerHost::OnConnect() {}
diff --git a/services/tracing/perfetto/consumer_host.h b/services/tracing/perfetto/consumer_host.h
index 84b4bef5..088ab889 100644
--- a/services/tracing/perfetto/consumer_host.h
+++ b/services/tracing/perfetto/consumer_host.h
@@ -18,6 +18,7 @@
 #include "base/threading/sequence_bound.h"
 #include "base/timer/timer.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/tracing/public/mojom/perfetto_service.mojom.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/consumer.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/tracing_service.h"
@@ -47,11 +48,12 @@
   class StreamWriter;
   class TracingSession : public mojom::TracingSessionHost {
    public:
-    TracingSession(ConsumerHost* host,
-                   mojom::TracingSessionHostRequest tracing_session_host,
-                   mojom::TracingSessionClientPtr tracing_session_client,
-                   const perfetto::TraceConfig& trace_config,
-                   mojom::TracingClientPriority priority);
+    TracingSession(
+        ConsumerHost* host,
+        mojo::PendingReceiver<mojom::TracingSessionHost> tracing_session_host,
+        mojo::Remote<mojom::TracingSessionClient> tracing_session_client,
+        const perfetto::TraceConfig& trace_config,
+        mojom::TracingClientPriority priority);
     ~TracingSession() override;
 
     void OnPerfettoEvents(const perfetto::ObservableEvents&);
@@ -95,7 +97,7 @@
     bool IsExpectedPid(base::ProcessId pid) const;
 
     ConsumerHost* const host_;
-    mojom::TracingSessionClientPtr tracing_session_client_;
+    mojo::Remote<mojom::TracingSessionClient> tracing_session_client_;
     mojo::Binding<mojom::TracingSessionHost> binding_;
     bool privacy_filtering_enabled_ = false;
     base::SequenceBound<StreamWriter> read_buffers_stream_writer_;
@@ -129,10 +131,11 @@
   }
 
   // mojom::ConsumerHost implementation.
-  void EnableTracing(mojom::TracingSessionHostRequest tracing_session_host,
-                     mojom::TracingSessionClientPtr tracing_session_client,
-                     const perfetto::TraceConfig& config,
-                     mojom::TracingClientPriority priority) override;
+  void EnableTracing(
+      mojo::PendingReceiver<mojom::TracingSessionHost> tracing_session_host,
+      mojo::PendingRemote<mojom::TracingSessionClient> tracing_session_client,
+      const perfetto::TraceConfig& config,
+      mojom::TracingClientPriority priority) override;
 
   // perfetto::Consumer implementation.
   // This gets called by the Perfetto service as control signals,
diff --git a/services/tracing/perfetto/consumer_host_unittest.cc b/services/tracing/perfetto/consumer_host_unittest.cc
index 14b8b9b6..1db75e70 100644
--- a/services/tracing/perfetto/consumer_host_unittest.cc
+++ b/services/tracing/perfetto/consumer_host_unittest.cc
@@ -143,9 +143,10 @@
   }
 
   void EnableTracingOnSequence(const perfetto::TraceConfig& config) {
-    tracing::mojom::TracingSessionClientPtr tracing_session_client;
+    mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+        tracing_session_client;
     binding_ = std::make_unique<mojo::Binding<mojom::TracingSessionClient>>(
-        this, mojo::MakeRequest(&tracing_session_client));
+        this, tracing_session_client.InitWithNewPipeAndPassReceiver());
 
     consumer_->EnableTracing(
         mojo::MakeRequest(&tracing_session_host_),
@@ -672,8 +673,9 @@
 
   void EnableTracing(const perfetto::TraceConfig& config,
                      mojom::TracingClientPriority priority) {
-    tracing::mojom::TracingSessionClientPtr tracing_session_client;
-    binding_.Bind(mojo::MakeRequest(&tracing_session_client));
+    mojo::PendingRemote<tracing::mojom::TracingSessionClient>
+        tracing_session_client;
+    binding_.Bind(tracing_session_client.InitWithNewPipeAndPassReceiver());
 
     binding_.set_connection_error_handler(base::BindOnce(
         &MockConsumerHost::OnConnectionLost, base::Unretained(this)));
diff --git a/services/tracing/public/mojom/perfetto_service.mojom b/services/tracing/public/mojom/perfetto_service.mojom
index 6ef1565..604d229 100644
--- a/services/tracing/public/mojom/perfetto_service.mojom
+++ b/services/tracing/public/mojom/perfetto_service.mojom
@@ -212,8 +212,8 @@
   // one in progress, the relative priorities will be used to figure out which
   // one to be able to (keep) tracing; if the priorities are the same, the new
   // session will take precedence.
-  EnableTracing(TracingSessionHost& tracing_session_host,
-                TracingSessionClient tracing_session_client,
+  EnableTracing(pending_receiver<TracingSessionHost> tracing_session_host,
+                pending_remote<TracingSessionClient> tracing_session_client,
                 TraceConfig config,
                 TracingClientPriority priority);
 };