mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Return ILLEGAL_ARGUMENT for setting null callback
Bug: 299182872
Test: Run VTS with external USB camera
vts-tradefed
> run vts -m VtsAidlHalCameraProvider_TargetTest -t \
PerInstance/CameraAidlTest#setCallback/0_android_hardware_camera_provider_ICameraProvider_external_0 \
--logcat-on-failure --logcat-on-failure-size 8192000 \
--bugreport-on-failure --screenshot-on-failure
Change-Id: I013e3770ddbdcf6475e0927449af6183dcc37a8e
This commit is contained in:
@@ -95,13 +95,14 @@ ExternalCameraProviderImpl_2_4::~ExternalCameraProviderImpl_2_4() {
|
||||
|
||||
Return<Status> ExternalCameraProviderImpl_2_4::setCallback(
|
||||
const sp<ICameraProviderCallback>& callback) {
|
||||
if (callback == nullptr) {
|
||||
return Status::ILLEGAL_ARGUMENT;
|
||||
}
|
||||
|
||||
{
|
||||
Mutex::Autolock _l(mLock);
|
||||
mCallbacks = callback;
|
||||
}
|
||||
if (mCallbacks == nullptr) {
|
||||
return Status::OK;
|
||||
}
|
||||
// Send a callback for all devices to initialize
|
||||
{
|
||||
for (const auto& pair : mCameraStatusMap) {
|
||||
|
||||
@@ -448,11 +448,11 @@ bool LegacyCameraProviderImpl_2_4::setUpVendorTags() {
|
||||
// Methods from ::android::hardware::camera::provider::V2_4::ICameraProvider follow.
|
||||
Return<Status> LegacyCameraProviderImpl_2_4::setCallback(
|
||||
const sp<ICameraProviderCallback>& callback) {
|
||||
if (callback == nullptr) {
|
||||
return Status::ILLEGAL_ARGUMENT;
|
||||
}
|
||||
Mutex::Autolock _l(mCbLock);
|
||||
mCallbacks = callback;
|
||||
if (mCallbacks == nullptr) {
|
||||
return Status::OK;
|
||||
}
|
||||
// Add and report all presenting external cameras.
|
||||
for (auto const& statusPair : mCameraStatusMap) {
|
||||
int id = std::stoi(statusPair.first);
|
||||
|
||||
@@ -91,11 +91,11 @@ ExternalCameraProviderImpl_2_7::~ExternalCameraProviderImpl_2_7() {
|
||||
|
||||
Return<Status> ExternalCameraProviderImpl_2_7::setCallback(
|
||||
const sp<ICameraProviderCallback>& callback) {
|
||||
if (callback == nullptr) {
|
||||
return Status::ILLEGAL_ARGUMENT;
|
||||
}
|
||||
Mutex::Autolock _l(mLock);
|
||||
mCallbacks = callback;
|
||||
if (mCallbacks == nullptr) {
|
||||
return Status::OK;
|
||||
}
|
||||
// Send a callback for all devices to initialize
|
||||
{
|
||||
for (const auto& pair : mCameraStatusMap) {
|
||||
|
||||
@@ -75,15 +75,15 @@ ExternalCameraProvider::~ExternalCameraProvider() {
|
||||
|
||||
ndk::ScopedAStatus ExternalCameraProvider::setCallback(
|
||||
const std::shared_ptr<ICameraProviderCallback>& in_callback) {
|
||||
if (in_callback == nullptr) {
|
||||
return fromStatus(Status::ILLEGAL_ARGUMENT);
|
||||
}
|
||||
|
||||
{
|
||||
Mutex::Autolock _l(mLock);
|
||||
mCallback = in_callback;
|
||||
}
|
||||
|
||||
if (mCallback == nullptr) {
|
||||
return fromStatus(Status::OK);
|
||||
}
|
||||
|
||||
for (const auto& pair : mCameraStatusMap) {
|
||||
mCallback->cameraDeviceStatusChange(pair.first, pair.second);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user