camera: Delete supportsCameraApi binder call

HAL1 support was removed in Android S. So, all devices are required
to support HAL3 and therefore the camera2 API. Camera1 API is always
supported - until removed.

Bug: 391957505

Flag: EXEMPT; bug fix

Test: Camera CTS

Change-Id: I80fae67c27cf2c9bebb8415cbf52574f7196141e
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
diff --git a/camera/aidl/android/hardware/ICameraService.aidl b/camera/aidl/android/hardware/ICameraService.aidl
index 6431737..779c4a2 100644
--- a/camera/aidl/android/hardware/ICameraService.aidl
+++ b/camera/aidl/android/hardware/ICameraService.aidl
@@ -261,14 +261,6 @@
      */
     @utf8InCpp String getLegacyParameters(int cameraId);
 
-    /**
-     * apiVersion constants for supportsCameraApi
-     */
-    const int API_VERSION_1 = 1;
-    const int API_VERSION_2 = 2;
-
-    // Determines if a particular API version is supported directly for a cameraId.
-    boolean supportsCameraApi(@utf8InCpp String cameraId, int apiVersion);
     // Determines if a cameraId is a hidden physical camera of a logical multi-camera.
     boolean isHiddenPhysicalCamera(@utf8InCpp String cameraId);
     // Inject the external camera to replace the internal camera session.
diff --git a/camera/ndk/impl/ACameraManager.cpp b/camera/ndk/impl/ACameraManager.cpp
index acd7917..7e647e4 100644
--- a/camera/ndk/impl/ACameraManager.cpp
+++ b/camera/ndk/impl/ACameraManager.cpp
@@ -376,17 +376,12 @@
     const auto& [_, newlyRegistered] = mCallbacks.insert(cb);
     // Send initial callbacks if callback is newly registered
     if (newlyRegistered) {
-        for (auto& [key, statusAndHAL3Support] : mDeviceStatusMap) {
+        for (auto& [key, logicalAndPhysicalStatus] : mDeviceStatusMap) {
             if (!isCameraAccessible(deviceContext, key.deviceId)) {
                 continue;
             }
             const std::string& cameraId = key.cameraId;
-            int32_t status = statusAndHAL3Support.getStatus();
-            // Don't send initial callbacks for camera ids which don't support
-            // camera2
-            if (!statusAndHAL3Support.supportsHAL3) {
-                continue;
-            }
+            int32_t status = logicalAndPhysicalStatus.getStatus();
 
             // Camera available/unavailable callback
             sp<AMessage> msg = new AMessage(kWhatSendSingleCallback, mHandler);
@@ -400,7 +395,7 @@
 
             // Physical camera unavailable callback
             std::set<std::string> unavailablePhysicalCameras =
-                    statusAndHAL3Support.getUnavailablePhysicalIds();
+                    logicalAndPhysicalStatus.getUnavailablePhysicalIds();
             for (const auto& physicalCameraId : unavailablePhysicalCameras) {
                 sp<AMessage> msg = new AMessage(kWhatSendSinglePhysicalCameraCallback, mHandler);
                 ACameraManager_PhysicalCameraAvailabilityCallback cbFunc =
@@ -416,42 +411,23 @@
     }
 }
 
-bool CameraManagerGlobal::supportsCamera2ApiLocked(const std::string &cameraId) {
-    bool camera2Support = false;
-    auto cs = getCameraServiceLocked();
-    if (cs == nullptr) {
-        return false;
-    }
-    binder::Status serviceRet =
-        cs->supportsCameraApi(cameraId,
-                hardware::ICameraService::API_VERSION_2, &camera2Support);
-    if (!serviceRet.isOk()) {
-        ALOGE("%s: supportsCameraApi2Locked() call failed for cameraId  %s",
-                __FUNCTION__, cameraId.c_str());
-        return false;
-    }
-    return camera2Support;
-}
-
 void CameraManagerGlobal::getCameraIdList(const DeviceContext& context,
         std::vector<std::string>* cameraIds) {
     // Ensure that we have initialized/refreshed the list of available devices
     Mutex::Autolock _l(mLock);
     // Needed to make sure we're connected to cameraservice
     getCameraServiceLocked();
-    for (auto& [key, statusAndHAL3Support] : mDeviceStatusMap) {
+    for (auto& [key, logicalAndPhysicalStatus] : mDeviceStatusMap) {
         if (!isCameraAccessible(context, key.deviceId)) {
             continue;
         }
 
-        int32_t status = statusAndHAL3Support.getStatus();
+        int32_t status = logicalAndPhysicalStatus.getStatus();
         if (status == hardware::ICameraServiceListener::STATUS_NOT_PRESENT ||
                 status == hardware::ICameraServiceListener::STATUS_ENUMERATING) {
             continue;
         }
-        if (!statusAndHAL3Support.supportsHAL3) {
-            continue;
-        }
+
         cameraIds->push_back(key.cameraId);
     }
 }
@@ -649,28 +625,25 @@
         return;
     }
 
-    bool supportsHAL3 = supportsCamera2ApiLocked(cameraId);
     if (firstStatus) {
         mDeviceStatusMap.emplace(std::piecewise_construct, std::forward_as_tuple(key),
-                                 std::forward_as_tuple(status, supportsHAL3));
+                std::forward_as_tuple(status));
     } else {
         mDeviceStatusMap[key].updateStatus(status);
     }
     // Iterate through all registered callbacks
-    if (supportsHAL3) {
-        for (auto cb : mCallbacks) {
-            if (!isCameraAccessible(cb.mDeviceContext, deviceId)) {
-                continue;
-            }
-            sp<AMessage> msg = new AMessage(kWhatSendSingleCallback, mHandler);
-            ACameraManager_AvailabilityCallback cbFp = isStatusAvailable(status) ?
-                    cb.mAvailable : cb.mUnavailable;
-            msg->setPointer(kCallbackFpKey, (void *) cbFp);
-            msg->setPointer(kContextKey, cb.mContext);
-            msg->setString(kCameraIdKey, AString(cameraId.c_str()));
-            mPendingCallbackCnt++;
-            msg->post();
+    for (auto cb : mCallbacks) {
+        if (!isCameraAccessible(cb.mDeviceContext, deviceId)) {
+            continue;
         }
+        sp<AMessage> msg = new AMessage(kWhatSendSingleCallback, mHandler);
+        ACameraManager_AvailabilityCallback cbFp = isStatusAvailable(status) ?
+                cb.mAvailable : cb.mUnavailable;
+        msg->setPointer(kCallbackFpKey, (void *) cbFp);
+        msg->setPointer(kContextKey, cb.mContext);
+        msg->setString(kCameraIdKey, AString(cameraId.c_str()));
+        mPendingCallbackCnt++;
+        msg->post();
     }
     if (status == hardware::ICameraServiceListener::STATUS_NOT_PRESENT) {
         mDeviceStatusMap.erase(key);
@@ -705,8 +678,6 @@
         return;
     }
 
-    bool supportsHAL3 = supportsCamera2ApiLocked(cameraId);
-
     bool updated = false;
     if (status == hardware::ICameraServiceListener::STATUS_PRESENT) {
         updated = mDeviceStatusMap[key].removeUnavailablePhysicalId(physicalCameraId);
@@ -715,7 +686,7 @@
     }
 
     // Iterate through all registered callbacks
-    if (supportsHAL3 && updated) {
+    if (updated) {
         for (auto cb : mCallbacks) {
             if (!isCameraAccessible(cb.mDeviceContext, deviceId)) {
                 continue;
@@ -733,31 +704,31 @@
     }
 }
 
-int32_t CameraManagerGlobal::StatusAndHAL3Support::getStatus() {
+int32_t CameraManagerGlobal::Status::getStatus() {
     std::lock_guard<std::mutex> lock(mLock);
     return status;
 }
 
-void CameraManagerGlobal::StatusAndHAL3Support::updateStatus(int32_t newStatus) {
+void CameraManagerGlobal::Status::updateStatus(int32_t newStatus) {
     std::lock_guard<std::mutex> lock(mLock);
     status = newStatus;
 }
 
-bool CameraManagerGlobal::StatusAndHAL3Support::addUnavailablePhysicalId(
+bool CameraManagerGlobal::Status::addUnavailablePhysicalId(
         const std::string& physicalCameraId) {
     std::lock_guard<std::mutex> lock(mLock);
     auto result = unavailablePhysicalIds.insert(physicalCameraId);
     return result.second;
 }
 
-bool CameraManagerGlobal::StatusAndHAL3Support::removeUnavailablePhysicalId(
+bool CameraManagerGlobal::Status::removeUnavailablePhysicalId(
         const std::string& physicalCameraId) {
     std::lock_guard<std::mutex> lock(mLock);
     auto count = unavailablePhysicalIds.erase(physicalCameraId);
     return count > 0;
 }
 
-std::set<std::string> CameraManagerGlobal::StatusAndHAL3Support::getUnavailablePhysicalIds() {
+std::set<std::string> CameraManagerGlobal::Status::getUnavailablePhysicalIds() {
     std::lock_guard<std::mutex> lock(mLock);
     return unavailablePhysicalIds;
 }
diff --git a/camera/ndk/impl/ACameraManager.h b/camera/ndk/impl/ACameraManager.h
index fffe037..04f1ac4 100644
--- a/camera/ndk/impl/ACameraManager.h
+++ b/camera/ndk/impl/ACameraManager.h
@@ -260,18 +260,16 @@
     // Utils for status
     static bool validStatus(int32_t status);
     static bool isStatusAvailable(int32_t status);
-    bool supportsCamera2ApiLocked(const std::string &cameraId);
 
-    struct StatusAndHAL3Support {
+    struct Status {
       private:
         int32_t status = hardware::ICameraServiceListener::STATUS_NOT_PRESENT;
         mutable std::mutex mLock;
         std::set<std::string> unavailablePhysicalIds;
       public:
-        const bool supportsHAL3 = false;
-        StatusAndHAL3Support(int32_t st, bool HAL3support):
-                status(st), supportsHAL3(HAL3support) { };
-        StatusAndHAL3Support() = default;
+        Status(int32_t st):
+                status(st) { };
+        Status() = default;
 
         bool addUnavailablePhysicalId(const std::string& physicalCameraId);
         bool removeUnavailablePhysicalId(const std::string& physicalCameraId);
@@ -308,7 +306,7 @@
         }
     };
 
-    std::map<DeviceStatusMapKey, StatusAndHAL3Support> mDeviceStatusMap;
+    std::map<DeviceStatusMapKey, Status> mDeviceStatusMap;
 
     // For the singleton instance
     static Mutex sLock;
diff --git a/camera/tests/CameraBinderTests.cpp b/camera/tests/CameraBinderTests.cpp
index 7f99b70..b6b5492 100644
--- a/camera/tests/CameraBinderTests.cpp
+++ b/camera/tests/CameraBinderTests.cpp
@@ -389,15 +389,6 @@
 
     for (int32_t i = 0; i < numCameras; i++) {
         std::string cameraId = std::to_string(i);
-        bool isSupported = false;
-        res = service->supportsCameraApi(cameraId,
-                hardware::ICameraService::API_VERSION_2, &isSupported);
-        EXPECT_TRUE(res.isOk()) << res;
-
-        // We only care about binder calls for the Camera2 API.  Camera1 is deprecated.
-        if (!isSupported) {
-            continue;
-        }
 
         // Check metadata binder call
         CameraMetadata metadata;
diff --git a/camera/tests/CameraCharacteristicsPermission.cpp b/camera/tests/CameraCharacteristicsPermission.cpp
index 9204eb1..5056c3e 100644
--- a/camera/tests/CameraCharacteristicsPermission.cpp
+++ b/camera/tests/CameraCharacteristicsPermission.cpp
@@ -66,19 +66,12 @@
 TEST_F(CameraCharacteristicsPermission, TestCameraPermission) {
     for (int32_t cameraId = 0; cameraId < numCameras; cameraId++) {
         std::string cameraIdStr = std::to_string(cameraId);
-        bool isSupported = false;
-        auto rc = mCameraService->supportsCameraApi(cameraIdStr,
-                hardware::ICameraService::API_VERSION_2, &isSupported);
-        EXPECT_TRUE(rc.isOk());
-        if (!isSupported) {
-            continue;
-        }
 
         CameraMetadata metadata;
         std::vector<int32_t> tagsNeedingPermission;
         AttributionSourceState clientAttribution;
         clientAttribution.deviceId = kDefaultDeviceId;
-        rc = mCameraService->getCameraCharacteristics(cameraIdStr,
+        auto rc = mCameraService->getCameraCharacteristics(cameraIdStr,
                 /*targetSdkVersion*/__ANDROID_API_FUTURE__,
                 /*overrideToPortrait*/false, clientAttribution, /*devicePolicy*/0, &metadata);
         ASSERT_TRUE(rc.isOk());
diff --git a/camera/tests/CameraZSLTests.cpp b/camera/tests/CameraZSLTests.cpp
index b06f9b4..2a2fcc9 100644
--- a/camera/tests/CameraZSLTests.cpp
+++ b/camera/tests/CameraZSLTests.cpp
@@ -176,15 +176,6 @@
         sp<ICamera> cameraDevice;
 
         std::string cameraIdStr = std::to_string(cameraId);
-        bool isSupported = false;
-        rc = mCameraService->supportsCameraApi(cameraIdStr,
-                hardware::ICameraService::API_VERSION_1, &isSupported);
-        EXPECT_TRUE(rc.isOk());
-
-        // We only care about camera Camera1 ZSL support.
-        if (!isSupported) {
-            continue;
-        }
 
         CameraMetadata metadata;
         AttributionSourceState clientAttribution;