Update setHdrConversionStrategy to return the preferredHdrOutput type

Bug: 268336382
Test: atest VtsHalGraphicsComposer3_TargetTest
Change-Id: I6ac912ac8a0329f4ea32acad657e44b473660c42
diff --git a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
index 128ef49..71927b6 100644
--- a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
+++ b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
@@ -35,6 +35,7 @@
 /* @hide */
 @Backing(type="int") @VintfStability
 enum Hdr {
+  INVALID = 0,
   DOLBY_VISION = 1,
   HDR10 = 2,
   HLG = 3,
diff --git a/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl b/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
index 407b54f..6107c4c 100644
--- a/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
+++ b/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
@@ -24,6 +24,10 @@
 @Backing(type="int")
 enum Hdr {
     /**
+     *   Invalid HDR type
+     */
+    INVALID = 0,
+    /**
      * Device supports Dolby Vision HDR
      */
     DOLBY_VISION = 1,
diff --git a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
index af82b83..cb85a88 100644
--- a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
+++ b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
@@ -77,7 +77,7 @@
   void setIdleTimerEnabled(long display, int timeoutMs);
   android.hardware.graphics.composer3.OverlayProperties getOverlaySupport();
   android.hardware.graphics.common.HdrConversionCapability[] getHdrConversionCapabilities();
-  void setHdrConversionStrategy(in android.hardware.graphics.common.HdrConversionStrategy conversionStrategy);
+  android.hardware.graphics.common.Hdr setHdrConversionStrategy(in android.hardware.graphics.common.HdrConversionStrategy conversionStrategy);
   void setRefreshRateChangedCallbackDebugEnabled(long display, boolean enabled);
   const int EX_BAD_CONFIG = 1;
   const int EX_BAD_DISPLAY = 2;
diff --git a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
index fe6483e..4e77f86 100644
--- a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
+++ b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
@@ -17,6 +17,7 @@
 package android.hardware.graphics.composer3;
 
 import android.hardware.graphics.common.DisplayDecorationSupport;
+import android.hardware.graphics.common.Hdr;
 import android.hardware.graphics.common.HdrConversionCapability;
 import android.hardware.graphics.common.HdrConversionStrategy;
 import android.hardware.graphics.common.Transform;
@@ -844,12 +845,13 @@
     /**
      * Sets the of HDR conversion strategy.
      *
-     *
+     * @return the chosen HDR type in case HdrConversionStrategy has autoAllowedHdrTypes set. In
+     * other cases, return HDR type INVALID.
      * @exception EX_UNSUPPORTED when not supported by the underlying HAL
      *
      * @see getHdrConversionCapabilities
      */
-    void setHdrConversionStrategy(in HdrConversionStrategy conversionStrategy);
+    Hdr setHdrConversionStrategy(in HdrConversionStrategy conversionStrategy);
 
     /*
      * Sets either the callback for the refresh rate change is enabled or disabled
diff --git a/graphics/composer/aidl/vts/VtsComposerClient.cpp b/graphics/composer/aidl/vts/VtsComposerClient.cpp
index 2e2b193..e03ef25 100644
--- a/graphics/composer/aidl/vts/VtsComposerClient.cpp
+++ b/graphics/composer/aidl/vts/VtsComposerClient.cpp
@@ -344,9 +344,11 @@
             hdrConversionCapability};
 }
 
-ScopedAStatus VtsComposerClient::setHdrConversionStrategy(
+std::pair<ScopedAStatus, common::Hdr> VtsComposerClient::setHdrConversionStrategy(
         const common::HdrConversionStrategy& conversionStrategy) {
-    return mComposerClient->setHdrConversionStrategy(conversionStrategy);
+    common::Hdr preferredHdrOutputType;
+    return {mComposerClient->setHdrConversionStrategy(conversionStrategy, &preferredHdrOutputType),
+            preferredHdrOutputType};
 }
 
 std::pair<ScopedAStatus, common::Transform> VtsComposerClient::getDisplayPhysicalOrientation(
diff --git a/graphics/composer/aidl/vts/VtsComposerClient.h b/graphics/composer/aidl/vts/VtsComposerClient.h
index aee46d2..81a62b3 100644
--- a/graphics/composer/aidl/vts/VtsComposerClient.h
+++ b/graphics/composer/aidl/vts/VtsComposerClient.h
@@ -166,7 +166,8 @@
     std::pair<ScopedAStatus, std::vector<common::HdrConversionCapability>>
     getHdrConversionCapabilities();
 
-    ScopedAStatus setHdrConversionStrategy(const common::HdrConversionStrategy& conversionStrategy);
+    std::pair<ScopedAStatus, common::Hdr> setHdrConversionStrategy(
+            const common::HdrConversionStrategy& conversionStrategy);
 
     std::pair<ScopedAStatus, common::Transform> getDisplayPhysicalOrientation(int64_t display);
 
diff --git a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
index 55e0a13..70c4e4c 100644
--- a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
+++ b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
@@ -637,8 +637,10 @@
     }
     common::HdrConversionStrategy hdrConversionStrategy;
     hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::passthrough>(true);
-    const auto& status = mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
+    const auto& [status, preferredHdrOutputType] =
+            mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
     EXPECT_TRUE(status.isOk());
+    EXPECT_EQ(common::Hdr::INVALID, preferredHdrOutputType);
 }
 
 TEST_P(GraphicsComposerAidlTest, SetHdrConversionStrategy_Force) {
@@ -652,9 +654,10 @@
             common::HdrConversionStrategy hdrConversionStrategy;
             hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::forceHdrConversion>(
                     conversionCapability.outputType->hdr);
-            const auto& statusSet =
+            const auto& [statusSet, preferredHdrOutputType] =
                     mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
-            EXPECT_TRUE(status.isOk());
+            EXPECT_TRUE(statusSet.isOk());
+            EXPECT_EQ(common::Hdr::INVALID, preferredHdrOutputType);
         }
     }
 }
@@ -674,8 +677,10 @@
     common::HdrConversionStrategy hdrConversionStrategy;
     hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::autoAllowedHdrTypes>(
             autoHdrTypes);
-    const auto& statusSet = mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
-    EXPECT_TRUE(status.isOk());
+    const auto& [statusSet, preferredHdrOutputType] =
+            mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
+    EXPECT_TRUE(statusSet.isOk());
+    EXPECT_NE(common::Hdr::INVALID, preferredHdrOutputType);
 }
 
 TEST_P(GraphicsComposerAidlTest, SetAutoLowLatencyMode_BadDisplay) {