From 83b724a23f8712637f5f3ce921bbf2bf3eec6b12 Mon Sep 17 00:00:00 2001 From: Jayant Chowdhary Date: Thu, 14 May 2020 21:02:41 -0700 Subject: [PATCH] camera vts: Skip regular vts tests for secure only cameras. Bug: 156749607 Test: fake mark a camera id as a secure only, see that it doesn't get tested unless a test calls getCameraDeviceNames with addSecure = true Test: VtsHalCameraProviderV2_4TargetTest passes on device without any secure only cameras Change-Id: Ibe428b663bd8024f46f0273ed5dfaa108a90dd43 Signed-off-by: Jayant Chowdhary --- .../VtsHalCameraProviderV2_4TargetTest.cpp | 54 +++++++++++++++++-- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp index bf5fbfe692..3e26de2025 100644 --- a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp +++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp @@ -575,7 +575,10 @@ public: } virtual void TearDown() override {} - hidl_vec getCameraDeviceNames(sp provider); + hidl_vec getCameraDeviceNames(sp provider, + bool addSecureOnly = false); + + bool isSecureOnly(sp provider, const hidl_string& name); std::map getCameraDeviceIdToNameMap(sp provider); @@ -1585,7 +1588,8 @@ std::map CameraHidlTest::getCameraDeviceIdToNameMap( return idToNameMap; } -hidl_vec CameraHidlTest::getCameraDeviceNames(sp provider) { +hidl_vec CameraHidlTest::getCameraDeviceNames(sp provider, + bool addSecureOnly) { std::vector cameraDeviceNames; Return ret; ret = provider->getCameraIdList( @@ -1634,11 +1638,51 @@ hidl_vec CameraHidlTest::getCameraDeviceNames(sp p } } - hidl_vec retList(cameraDeviceNames.size()); + std::vector retList; for (size_t i = 0; i < cameraDeviceNames.size(); i++) { - retList[i] = cameraDeviceNames[i]; + bool isSecureOnlyCamera = isSecureOnly(mProvider, cameraDeviceNames[i]); + if (addSecureOnly) { + if (isSecureOnlyCamera) { + retList.emplace_back(cameraDeviceNames[i]); + } + } else if (!isSecureOnlyCamera) { + retList.emplace_back(cameraDeviceNames[i]); + } } - return retList; + hidl_vec finalRetList = std::move(retList); + return finalRetList; +} + +bool CameraHidlTest::isSecureOnly(sp provider, const hidl_string& name) { + Return ret; + ::android::sp device3_x; + bool retVal = false; + if (getCameraDeviceVersion(mProviderType, name) == CAMERA_DEVICE_API_VERSION_1_0) { + return false; + } + ret = provider->getCameraDeviceInterface_V3_x(name, [&](auto status, const auto& device) { + ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status); + ASSERT_EQ(Status::OK, status); + ASSERT_NE(device, nullptr); + device3_x = device; + }); + if (!ret.isOk()) { + ADD_FAILURE() << "Failed to get camera device interface for " << name; + } + ret = device3_x->getCameraCharacteristics([&](Status s, CameraMetadata metadata) { + ASSERT_EQ(Status::OK, s); + camera_metadata_t* chars = (camera_metadata_t*)metadata.data(); + SystemCameraKind systemCameraKind = SystemCameraKind::PUBLIC; + Status status = getSystemCameraKind(chars, &systemCameraKind); + ASSERT_EQ(status, Status::OK); + if (systemCameraKind == SystemCameraKind::HIDDEN_SECURE_CAMERA) { + retVal = true; + } + }); + if (!ret.isOk()) { + ADD_FAILURE() << "Failed to get camera characteristics for device " << name; + } + return retVal; } hidl_vec> CameraHidlTest::getConcurrentDeviceCombinations(