ml: Switch to new Mojo types

Migrate from &, Request, etc to pending_receiver, etc, now that these
are supported in libchrome.

This includes migrating from "connection error" to "disconnection"
terminology that Mojo switched to (since disconnection is not always
error).

BUG=chromium:1103123
TEST=ebuild bla/ml-9999.ebuild clean test
TEST=tast -verbose run bla platform.MLServiceBootstrap power.SmartDim

Change-Id: I015e116442281cbda313eb8d0593bb543090008c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2289245
Tested-by: Andrew Moylan <amoylan@chromium.org>
Auto-Submit: Andrew Moylan <amoylan@chromium.org>
Reviewed-by: Honglin Yu <honglinyu@chromium.org>
Reviewed-by: Sam McNally <sammc@chromium.org>
Reviewed-by: Thanh Nguyen <thanhdng@chromium.org>
Commit-Queue: Andrew Moylan <amoylan@chromium.org>
diff --git a/ml/machine_learning_service_impl.h b/ml/machine_learning_service_impl.h
index c21b6fa..62b8966 100644
--- a/ml/machine_learning_service_impl.h
+++ b/ml/machine_learning_service_impl.h
@@ -11,8 +11,9 @@
 
 #include <base/callback_forward.h>
 #include <base/macros.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/receiver.h>
+#include <mojo/public/cpp/bindings/receiver_set.h>
 
 #include "ml/model_metadata.h"
 #include "ml/mojom/machine_learning_service.mojom.h"
@@ -22,11 +23,10 @@
 class MachineLearningServiceImpl
     : public chromeos::machine_learning::mojom::MachineLearningService {
  public:
-  // Creates an instance bound to `pipe`. The specified
-  // `connection_error_handler` will be invoked if the binding encounters a
-  // connection error.
+  // Creates an instance bound to `pipe`. The specified `disconnect_handler`
+  // will be invoked if the binding encounters a connection error or is closed.
   MachineLearningServiceImpl(mojo::ScopedMessagePipeHandle pipe,
-                             base::Closure connection_error_handler);
+                             base::Closure disconnect_handler);
 
   // A interface to change `text_classifier_model_filename_` for testing. Should
   // not be used outside of tests.
@@ -36,30 +36,34 @@
   // Testing constructor that allows overriding of the model dir. Should not be
   // used outside of tests.
   MachineLearningServiceImpl(mojo::ScopedMessagePipeHandle pipe,
-                             base::Closure connection_error_handler,
+                             base::Closure disconnect_handler,
                              const std::string& model_dir);
 
  private:
   // chromeos::machine_learning::mojom::MachineLearningService:
-  void Clone(chromeos::machine_learning::mojom::MachineLearningServiceRequest
-                 request) override;
+  void Clone(mojo::PendingReceiver<
+             chromeos::machine_learning::mojom::MachineLearningService>
+                 receiver) override;
   void LoadBuiltinModel(
       chromeos::machine_learning::mojom::BuiltinModelSpecPtr spec,
-      chromeos::machine_learning::mojom::ModelRequest request,
+      mojo::PendingReceiver<chromeos::machine_learning::mojom::Model> receiver,
       LoadBuiltinModelCallback callback) override;
   void LoadFlatBufferModel(
       chromeos::machine_learning::mojom::FlatBufferModelSpecPtr spec,
-      chromeos::machine_learning::mojom::ModelRequest request,
+      mojo::PendingReceiver<chromeos::machine_learning::mojom::Model> receiver,
       LoadFlatBufferModelCallback callback) override;
   void LoadTextClassifier(
-      chromeos::machine_learning::mojom::TextClassifierRequest request,
+      mojo::PendingReceiver<chromeos::machine_learning::mojom::TextClassifier>
+          receiver,
       LoadTextClassifierCallback callback) override;
   void LoadHandwritingModel(
-      chromeos::machine_learning::mojom::HandwritingRecognizerRequest request,
+      mojo::PendingReceiver<
+          chromeos::machine_learning::mojom::HandwritingRecognizer> receiver,
       LoadHandwritingModelCallback callback) override;
   void LoadHandwritingModelWithSpec(
       chromeos::machine_learning::mojom::HandwritingRecognizerSpecPtr spec,
-      chromeos::machine_learning::mojom::HandwritingRecognizerRequest request,
+      mojo::PendingReceiver<
+          chromeos::machine_learning::mojom::HandwritingRecognizer> receiver,
       LoadHandwritingModelCallback callback) override;
 
   // Init the icu data if it is not initialized yet.
@@ -77,13 +81,13 @@
 
   const std::string model_dir_;
 
-  // Primordial binding bootstrapped over D-Bus. Once opened, is never closed.
-  mojo::Binding<chromeos::machine_learning::mojom::MachineLearningService>
-      binding_;
+  // Primordial receiver bootstrapped over D-Bus. Once opened, is never closed.
+  mojo::Receiver<chromeos::machine_learning::mojom::MachineLearningService>
+      receiver_;
 
-  // Additional bindings obtained via `Clone`.
-  mojo::BindingSet<chromeos::machine_learning::mojom::MachineLearningService>
-      clone_bindings_;
+  // Additional receivers bound via `Clone`.
+  mojo::ReceiverSet<chromeos::machine_learning::mojom::MachineLearningService>
+      clone_receivers_;
 
   DISALLOW_COPY_AND_ASSIGN(MachineLearningServiceImpl);
 };