Add isUdfps method to biometrics.fingerprint@2.3

Bug: 158135499
Test: atest VtsHalBiometricsFingerprintV2_3TargetTest
Change-Id: I10a75f8362f2596709399a45555bf9f09451f962
diff --git a/biometrics/fingerprint/2.3/IBiometricsFingerprint.hal b/biometrics/fingerprint/2.3/IBiometricsFingerprint.hal
index 8777c28..13f03c5 100644
--- a/biometrics/fingerprint/2.3/IBiometricsFingerprint.hal
+++ b/biometrics/fingerprint/2.3/IBiometricsFingerprint.hal
@@ -22,22 +22,45 @@
  * The interface for biometric fingerprint authentication.
  */
 interface IBiometricsFingerprint extends @2.2::IBiometricsFingerprint {
-  /**
-   * Notifies about a finger touching the sensor area.
-   *
-   * @param x The screen x-coordinate of the center of the touch contact area, in
-   * display pixels.
-   * @param y The screen y-coordinate of the center of the touch contact area, in
-   * display pixels.
-   * @param minor The length of the minor axis of an ellipse that describes the
-   * touch area, in display pixels.
-   * @param major The length of the major axis of an ellipse that describes the
-   * touch area, in display pixels.
-   */
-  oneway onFingerDown(uint32_t x, uint32_t y, float minor, float major);
+    /**
+     * Returns whether the fingerprint sensor is an under-display fingerprint
+     * sensor.
+     * @param sensorId the unique sensor ID for which the operation should be
+     * performed.
+     * @return isUdfps indicating whether the specified sensor is an
+     * under-display fingerprint sensor.
+     */
+    isUdfps(uint32_t sensorId) generates (bool isUdfps);
 
-  /**
-   * Notifies about a finger leaving the sensor area.
-   */
-  oneway onFingerUp();
+    /**
+     * Notifies about a touch occurring within the under-display fingerprint
+     * sensor area.
+     *
+     * It it assumed that the device can only have one active under-display
+     * fingerprint sensor at a time.
+     *
+     * If multiple fingers are detected within the sensor area, only the
+     * chronologically first event will be reported.
+     *
+     * @param x The screen x-coordinate of the center of the touch contact area, in
+     * display pixels.
+     * @param y The screen y-coordinate of the center of the touch contact area, in
+     * display pixels.
+     * @param minor The length of the minor axis of an ellipse that describes the
+     * touch area, in display pixels.
+     * @param major The length of the major axis of an ellipse that describes the
+     * touch area, in display pixels.
+     */
+    onFingerDown(uint32_t x, uint32_t y, float minor, float major);
+
+    /**
+     * Notifies about a finger leaving the under-display fingerprint sensor area.
+     *
+     * It it assumed that the device can only have one active under-display
+     * fingerprint sensor at a time.
+     *
+     * If multiple fingers have left the sensor area, only the finger which
+     * previously caused a "finger down" event will be reported.
+     */
+    onFingerUp();
 };
diff --git a/biometrics/fingerprint/2.3/vts/functional/VtsHalBiometricsFingerprintV2_3TargetTest.cpp b/biometrics/fingerprint/2.3/vts/functional/VtsHalBiometricsFingerprintV2_3TargetTest.cpp
index 7226213..7242016 100644
--- a/biometrics/fingerprint/2.3/vts/functional/VtsHalBiometricsFingerprintV2_3TargetTest.cpp
+++ b/biometrics/fingerprint/2.3/vts/functional/VtsHalBiometricsFingerprintV2_3TargetTest.cpp
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#define ASSERT_OK(v) ASSERT_TRUE(v.isOk())
+
 #include <android/hardware/biometrics/fingerprint/2.3/IBiometricsFingerprint.h>
 #include <gtest/gtest.h>
 #include <hidl/GtestPrinter.h>
@@ -41,14 +43,21 @@
     sp<IBiometricsFingerprint> mService;
 };
 
-// This is a one-way method that doesn't return anything.
-TEST_P(FingerprintHidlTest, onFingerDownTest) {
-    mService->onFingerDown(1, 2, 3.0f, 4.0f);
+// This method returns true or false depending on the implementation.
+TEST_P(FingerprintHidlTest, isUdfpsTest) {
+    // Arbitrary ID
+    uint32_t sensorId = 1234;
+    ASSERT_OK(mService->isUdfps(sensorId));
 }
 
-// This is a one-way method that doesn't return anything.
+// This method that doesn't return anything.
+TEST_P(FingerprintHidlTest, onFingerDownTest) {
+    ASSERT_OK(mService->onFingerDown(1, 2, 3.0f, 4.0f));
+}
+
+// This method that doesn't return anything.
 TEST_P(FingerprintHidlTest, onFingerUp) {
-    mService->onFingerUp();
+    ASSERT_OK(mService->onFingerUp());
 }
 
 }  // anonymous namespace