camera: use ScopedPlatformFile for mojo::{Wrap,Unwrap}PlatformFile

The two functions no longer take base::PlatformFile after libchrome
r822064 uprev.

BUG=chromium:1144735
TEST=cros-workon-hatch start cros-camera cros-camera-libcab
TEST=cros-workon-hatch start cros-camera-libjda cros-camera-libjea_test
TEST=cros-workon-hatch start cros-camera-test cros-camera-hal_usb
TEST=cros-workon-hatch start cros-camera-libcamera_connector
TEST=emerge, deploy on DUT
TEST=tast run ${hatch-DUT}.cros camera.* (except camera.HAL3Remote.*)
TEST=camera.CCAUIRecordVideo.swa fails with broken-thumbnail (pre-exist)

Change-Id: Iba27bc232ac278e8497a8df30ab9cf992cdcd793
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2581750
Reviewed-by: Qijiang Fan <fqj@google.com>
Reviewed-by: Shik Chen <shik@chromium.org>
Commit-Queue: Qijiang Fan <fqj@google.com>
Tested-by: Grace Cham <hscham@chromium.org>
diff --git a/camera/camera3_test/camera3_device_connector.cc b/camera/camera3_test/camera3_device_connector.cc
index 5a13f8f..d0574a9 100644
--- a/camera/camera3_test/camera3_device_connector.cc
+++ b/camera/camera3_test/camera3_device_connector.cc
@@ -415,7 +415,7 @@
   std::vector<mojo::ScopedHandle> fds;
   for (uint32_t i = 0; i < num_planes; i++) {
     int dup_fd = HANDLE_EINTR(dup((*native_handle)->data[i]));
-    fds.emplace_back(mojo::WrapPlatformFile(dup_fd));
+    fds.emplace_back(mojo::WrapPlatformFile(base::ScopedPlatformFile(dup_fd)));
   }
   uint64_t buffer_id = reinterpret_cast<uint64_t>(native_handle);
   base::AutoLock bufferLock(buffer_handle_map_lock_);
diff --git a/camera/common/camera_algorithm_bridge_impl.cc b/camera/common/camera_algorithm_bridge_impl.cc
index f983708..8668520 100644
--- a/camera/common/camera_algorithm_bridge_impl.cc
+++ b/camera/common/camera_algorithm_bridge_impl.cc
@@ -229,7 +229,8 @@
     cb.Run(-errno);
     return;
   }
-  interface_ptr_->RegisterBuffer(mojo::WrapPlatformFile(dup_fd), cb);
+  interface_ptr_->RegisterBuffer(
+      mojo::WrapPlatformFile(base::ScopedPlatformFile(dup_fd)), cb);
 }
 
 void CameraAlgorithmBridgeImpl::IPCBridge::Request(
diff --git a/camera/common/camera_algorithm_ops_impl.cc b/camera/common/camera_algorithm_ops_impl.cc
index 17f88ec..c3621ea 100644
--- a/camera/common/camera_algorithm_ops_impl.cc
+++ b/camera/common/camera_algorithm_ops_impl.cc
@@ -91,14 +91,14 @@
   DCHECK(cam_algo_);
   DCHECK(ipc_task_runner_->BelongsToCurrentThread());
   VLOGF_ENTER();
-  base::PlatformFile fd;
+  base::ScopedPlatformFile fd;
   MojoResult mojo_result = mojo::UnwrapPlatformFile(std::move(buffer_fd), &fd);
   if (mojo_result != MOJO_RESULT_OK) {
     LOGF(ERROR) << "Failed to unwrap handle: " << mojo_result;
     std::move(callback).Run(-EBADF);
     return;
   }
-  int32_t result = cam_algo_->register_buffer(fd);
+  int32_t result = cam_algo_->register_buffer(fd.release());
   std::move(callback).Run(result);
   VLOGF_EXIT();
 }
diff --git a/camera/common/jpeg/jpeg_decode_accelerator_impl.cc b/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
index 8176e64..c636f74 100644
--- a/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
+++ b/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
@@ -225,8 +225,8 @@
   const uint32_t num_planes = buffer_manager->GetNumPlanes(output_buffer);
   std::vector<mojom::DmaBufPlanePtr> planes(num_planes);
   for (uint32_t i = 0; i < num_planes; ++i) {
-    mojo::ScopedHandle fd_handle =
-        mojo::WrapPlatformFile(HANDLE_EINTR(dup(output_buffer->data[i])));
+    mojo::ScopedHandle fd_handle = mojo::WrapPlatformFile(
+        base::ScopedPlatformFile(HANDLE_EINTR(dup(output_buffer->data[i]))));
     const int32_t stride = base::checked_cast<int32_t>(
         buffer_manager->GetPlaneStride(output_buffer, i));
     const uint32_t offset = base::checked_cast<uint32_t>(
@@ -240,8 +240,8 @@
       mojo_format, buffer_manager->GetWidth(output_buffer),
       buffer_manager->GetHeight(output_buffer), std::move(planes));
 
-  mojo::ScopedHandle input_handle =
-      mojo::WrapPlatformFile(HANDLE_EINTR(dup(input_fd)));
+  mojo::ScopedHandle input_handle = mojo::WrapPlatformFile(
+      base::ScopedPlatformFile(HANDLE_EINTR(dup(input_fd))));
 
   inflight_buffer_ids_.insert(buffer_id);
   jda_ptr_->DecodeWithDmaBuf(
diff --git a/camera/common/jpeg/jpeg_encode_accelerator_impl.cc b/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
index acbe21d..1cb3c01 100644
--- a/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
+++ b/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
@@ -284,10 +284,11 @@
   int dup_output_fd = HANDLE_EINTR(dup(output_fd));
 
   mojo::ScopedHandle input_handle = mojo::WrapPlatformFile(
-      input_platform_shm.PassPlatformHandle().fd.release());
+      std::move(input_platform_shm.PassPlatformHandle().fd));
   mojo::ScopedHandle exif_handle = mojo::WrapPlatformFile(
-      exif_platform_shm.PassPlatformHandle().fd.release());
-  mojo::ScopedHandle output_handle = mojo::WrapPlatformFile(dup_output_fd);
+      std::move(exif_platform_shm.PassPlatformHandle().fd));
+  mojo::ScopedHandle output_handle =
+      mojo::WrapPlatformFile(base::ScopedPlatformFile(dup_output_fd));
 
   jea_ptr_->EncodeWithFD(
       task_id, std::move(input_handle), input_buffer_size, coded_size_width,
@@ -339,15 +340,15 @@
           std::move(exif_shm_region));
 
   mojo::ScopedHandle exif_handle = mojo::WrapPlatformFile(
-      exif_platform_shm.PassPlatformHandle().fd.release());
+      std::move(exif_platform_shm.PassPlatformHandle().fd));
 
   auto WrapToMojoPlanes =
       [](const std::vector<JpegCompressor::DmaBufPlane>& planes) {
         std::vector<cros::mojom::DmaBufPlanePtr> mojo_planes;
         for (auto plane : planes) {
           auto mojo_plane = cros::mojom::DmaBufPlane::New();
-          mojo_plane->fd_handle =
-              mojo::WrapPlatformFile(HANDLE_EINTR(dup(plane.fd)));
+          mojo_plane->fd_handle = mojo::WrapPlatformFile(
+              base::ScopedPlatformFile(HANDLE_EINTR(dup(plane.fd))));
           mojo_plane->stride = plane.stride;
           mojo_plane->offset = plane.offset;
           mojo_plane->size = plane.size;
diff --git a/camera/common/libcamera_connector/camera_client_ops.cc b/camera/common/libcamera_connector/camera_client_ops.cc
index 614d79c..48159d5 100644
--- a/camera/common/libcamera_connector/camera_client_ops.cc
+++ b/camera/common/libcamera_connector/camera_client_ops.cc
@@ -83,11 +83,11 @@
     CHECK_EQ(result->output_buffers->size(), 1u);
     const auto& output_buffer = result->output_buffers->front();
     if (output_buffer->release_fence.is_valid()) {
-      base::PlatformFile fence;
+      base::ScopedPlatformFile fence;
       CHECK_EQ(mojo::UnwrapPlatformFile(std::move(output_buffer->release_fence),
                                         &fence),
                MOJO_RESULT_OK);
-      if (sync_wait(fence, 1000) != 0) {
+      if (sync_wait(fence.release(), 1000) != 0) {
         LOGF(ERROR) << "Failed to wait for release fence on buffer";
       }
     }
diff --git a/camera/common/libcamera_connector/stream_buffer_manager.cc b/camera/common/libcamera_connector/stream_buffer_manager.cc
index 281a28f..75a3cd5 100644
--- a/camera/common/libcamera_connector/stream_buffer_manager.cc
+++ b/camera/common/libcamera_connector/stream_buffer_manager.cc
@@ -59,8 +59,9 @@
   buffer_handle->height = pool_buffer_handle->height;
   buffer_handle->sizes = std::vector<uint32_t>();
   for (size_t i = 0; i < pool_buffer_handle->fds.size(); ++i) {
-    buffer_handle->fds.push_back(mojo::WrapPlatformFile(
-        HANDLE_EINTR(dup(fd_map_[pool_buffer_handle->buffer_id][i].get()))));
+    buffer_handle->fds.push_back(
+        mojo::WrapPlatformFile(base::ScopedPlatformFile(HANDLE_EINTR(
+            dup(fd_map_[pool_buffer_handle->buffer_id][i].get())))));
     buffer_handle->strides.push_back(pool_buffer_handle->strides[i]);
     buffer_handle->offsets.push_back(pool_buffer_handle->offsets[i]);
     buffer_handle->sizes->push_back(pool_buffer_handle->sizes->at(i));
diff --git a/camera/common/utils/cros_camera_mojo_utils.cc b/camera/common/utils/cros_camera_mojo_utils.cc
index 7646976..b50dcef 100644
--- a/camera/common/utils/cros_camera_mojo_utils.cc
+++ b/camera/common/utils/cros_camera_mojo_utils.cc
@@ -57,7 +57,8 @@
   ret->status = static_cast<cros::mojom::Camera3BufferStatus>(buffer->status);
 
   if (buffer->acquire_fence != -1) {
-    ret->acquire_fence = mojo::WrapPlatformFile(buffer->acquire_fence);
+    ret->acquire_fence =
+        mojo::WrapPlatformFile(base::ScopedPlatformFile(buffer->acquire_fence));
     if (!ret->acquire_fence.is_valid()) {
       LOGF(ERROR) << "Failed to wrap acquire_fence";
       ret.reset();
@@ -66,7 +67,8 @@
   }
 
   if (buffer->release_fence != -1) {
-    ret->release_fence = mojo::WrapPlatformFile(buffer->release_fence);
+    ret->release_fence =
+        mojo::WrapPlatformFile(base::ScopedPlatformFile(buffer->release_fence));
     if (!ret->release_fence.is_valid()) {
       LOGF(ERROR) << "Failed to wrap release_fence";
       ret.reset();
diff --git a/camera/hal/usb_v1/arc_camera_service.cc b/camera/hal/usb_v1/arc_camera_service.cc
index ded5de0..673bb0f 100644
--- a/camera/hal/usb_v1/arc_camera_service.cc
+++ b/camera/hal/usb_v1/arc_camera_service.cc
@@ -175,7 +175,7 @@
 
   std::vector<mojo::ScopedHandle> handles;
   for (const auto& fd : fds) {
-    handles.push_back(mojo::WrapPlatformFile(fd));
+    handles.push_back(mojo::WrapPlatformFile(base::ScopedPlatformFile(fd)));
   }
   if (ret) {
     handles.clear();
diff --git a/camera/hal_adapter/camera_device_adapter.cc b/camera/hal_adapter/camera_device_adapter.cc
index e237386..7248813 100644
--- a/camera/hal_adapter/camera_device_adapter.cc
+++ b/camera/hal_adapter/camera_device_adapter.cc
@@ -698,7 +698,7 @@
       mojo_buffer_handle->sizes = std::vector<uint32_t>();
       for (size_t plane = 0; plane < num_planes; plane++) {
         mojo_buffer_handle->fds.push_back(
-            mojo::WrapPlatformFile(buffer_handle->data[plane]));
+            mojo::WrapPlatformFile(base::ScopedFD(buffer_handle->data[plane])));
         mojo_buffer_handle->strides.push_back(
             CameraBufferManager::GetPlaneStride(buffer_handle, plane));
         mojo_buffer_handle->offsets.push_back(