Fake ae precapture cancellation when requested

Limited devices are expected to have precapture ae enabled and
respond to cancellation request. Since we don't actuall support
AE at all, let's just respect the cancellation expecation in
case it's requested

Fixes: 333865684
Test: StillCaptureTest#testAePrecaptureTriggerCancelJpegCapture
Change-Id: I863219bc8740307ebf93d43c9b2f9b71eb683c9a
diff --git a/services/camera/virtualcamera/util/MetadataUtil.cc b/services/camera/virtualcamera/util/MetadataUtil.cc
index 4eeff67..0925776 100644
--- a/services/camera/virtualcamera/util/MetadataUtil.cc
+++ b/services/camera/virtualcamera/util/MetadataUtil.cc
@@ -922,6 +922,22 @@
   return static_cast<camera_metadata_enum_android_lens_facing>(entry.data.u8[0]);
 }
 
+std::optional<camera_metadata_enum_android_control_ae_precapture_trigger>
+getPrecaptureTrigger(
+    const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata) {
+  auto metadata =
+      reinterpret_cast<const camera_metadata_t*>(cameraMetadata.metadata.data());
+
+  camera_metadata_ro_entry_t entry;
+  if (find_camera_metadata_ro_entry(
+          metadata, ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry) != OK) {
+    return std::nullopt;
+  }
+
+  return static_cast<camera_metadata_enum_android_control_ae_precapture_trigger>(
+      entry.data.u8[0]);
+}
+
 }  // namespace virtualcamera
 }  // namespace companion
 }  // namespace android