[fuchsia][sysmem2] switch to sysmem2 tokens (#166120)

Now that fuchsia protocols can convey sysmem2 tokens, avoid token
conversions.

fixes #166121

[cl/741415017](http://cl/741415017) per
[go/flutter-fuchsia-pr-policy](http://go/flutter-fuchsia-pr-policy)

## Pre-launch Checklist

- [y] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [y] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [y] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [y] I signed the [CLA].
- [y] I listed at least one issue that this PR fixes in the description
above.
- [na] I updated/added relevant documentation (doc comments with `///`).
- [tbd] I added new tests to check the change I am making, or this PR is
[test-exempt].
  - identical functionalilty; covered by existing tests
- [na] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [y] All existing and new tests are passing.
diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc
index 63abbc4..b4ad703 100644
--- a/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc
+++ b/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc
@@ -159,8 +159,7 @@
 
   fuchsia::ui::composition::RegisterBufferCollectionArgs args;
   args.set_export_token(std::move(export_token));
-  args.set_buffer_collection_token(
-      fuchsia::sysmem::BufferCollectionTokenHandle(scenic_token.TakeChannel()));
+  args.set_buffer_collection_token2(std::move(scenic_token));
   args.set_usage(
       fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT);
   flatland_allocator->RegisterBufferCollection(
diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc
index e0f0863..158d236 100644
--- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc
+++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc
@@ -67,7 +67,7 @@
 class FakeSurfaceProducerSurface : public SurfaceProducerSurface {
  public:
   explicit FakeSurfaceProducerSurface(
-      fidl::InterfaceRequest<fuchsia::sysmem::BufferCollectionToken>
+      fidl::InterfaceRequest<fuchsia::sysmem2::BufferCollectionToken>
           sysmem_token_request,
       fuchsia::ui::composition::BufferCollectionImportToken buffer_import_token,
       const SkISize& size)
@@ -124,7 +124,7 @@
       const std::function<void(void)>& on_writes_committed) override {}
 
  private:
-  fidl::InterfaceRequest<fuchsia::sysmem::BufferCollectionToken>
+  fidl::InterfaceRequest<fuchsia::sysmem2::BufferCollectionToken>
       sysmem_token_request_;
   fuchsia::ui::composition::BufferCollectionImportToken buffer_import_token_;
   zx::event acquire_fence_;
@@ -155,13 +155,14 @@
       const SkISize& size) override {
     auto [buffer_export_token, buffer_import_token] =
         BufferCollectionTokenPair::New();
-    fuchsia::sysmem::BufferCollectionTokenHandle sysmem_token;
+    fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token;
     auto sysmem_token_request = sysmem_token.NewRequest();
 
     fuchsia::ui::composition::RegisterBufferCollectionArgs
         buffer_collection_args;
     buffer_collection_args.set_export_token(std::move(buffer_export_token));
-    buffer_collection_args.set_buffer_collection_token(std::move(sysmem_token));
+    buffer_collection_args.set_buffer_collection_token2(
+        std::move(sysmem_token));
     buffer_collection_args.set_usage(
         fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT);
     flatland_allocator_->RegisterBufferCollection(
diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc
index db8dc67..efdd102 100644
--- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc
+++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc
@@ -73,13 +73,24 @@
     fuchsia::ui::composition::RegisterBufferCollectionArgs args,
     RegisterBufferCollectionCallback callback) {
   auto [export_token_koid, _] = GetKoids(args.export_token());
+
+  // Callers must not set both.
+  ZX_ASSERT(!args.has_buffer_collection_token2() ||
+            !args.has_buffer_collection_token());
+  fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token;
+  if (args.has_buffer_collection_token2()) {
+    sysmem_token = std::move(*args.mutable_buffer_collection_token2());
+  } else {
+    sysmem_token = fuchsia::sysmem2::BufferCollectionTokenHandle(
+        args.mutable_buffer_collection_token()->TakeChannel());
+  }
+
   auto [__, emplace_binding_success] =
       graph_bindings_.buffer_collections.emplace(
           export_token_koid,
           BufferCollectionBinding{
               .export_token = std::move(*args.mutable_export_token()),
-              .sysmem_token =
-                  std::move(*args.mutable_buffer_collection_token()),
+              .sysmem_token = std::move(sysmem_token),
               .usage = args.usage(),
           });
   // TODO(fxb/85619): Disconnect the Allocator here
diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h
index ac70c46..cdc188b 100644
--- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h
+++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h
@@ -7,7 +7,7 @@
 
 #include <fuchsia/math/cpp/fidl.h>
 #include <fuchsia/scenic/scheduling/cpp/fidl.h>
-#include <fuchsia/sysmem/cpp/fidl.h>
+#include <fuchsia/sysmem2/cpp/fidl.h>
 #include <fuchsia/ui/composition/cpp/fidl.h>
 #include <fuchsia/ui/composition/cpp/fidl_test_base.h>
 #include <fuchsia/ui/views/cpp/fidl.h>
@@ -175,7 +175,7 @@
 
   struct BufferCollectionBinding {
     fuchsia::ui::composition::BufferCollectionExportToken export_token;
-    fuchsia::sysmem::BufferCollectionTokenHandle sysmem_token;
+    fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token;
 
     fuchsia::ui::composition::RegisterBufferCollectionUsage usage;
   };
diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc
index 3ccb868..24d5d8e 100644
--- a/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc
+++ b/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc
@@ -297,8 +297,7 @@
 
   fuchsia::ui::composition::RegisterBufferCollectionArgs args;
   args.set_export_token(std::move(export_token));
-  args.set_buffer_collection_token(fuchsia::sysmem::BufferCollectionTokenHandle(
-      scenic_token.Unbind().TakeChannel()));
+  args.set_buffer_collection_token2(std::move(scenic_token));
   args.set_usage(
       fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT);
   flatland_allocator->RegisterBufferCollection(