Camera: Fix onCameraOpened/onCameraClosed callback
Add client package id in the CameraStatus interface, so that
addListener will return the currently opened cameras if the
client has the permission.
Bug: 193475498
Test: testCameraManagerListenerCallbacks
Change-Id: Ic78b80526c3f55a450caa54e27c3d36265b127b9
diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp
index 03439fd..24c9108 100644
--- a/camera/CameraBase.cpp
+++ b/camera/CameraBase.cpp
@@ -68,6 +68,9 @@
unavailablePhysicalIds16.push_back(String16(id8));
}
res = parcel->writeString16Vector(unavailablePhysicalIds16);
+ if (res != OK) return res;
+
+ res = parcel->writeString16(String16(clientPackage));
return res;
}
@@ -86,6 +89,12 @@
for (auto& id16 : unavailablePhysicalIds16) {
unavailablePhysicalIds.push_back(String8(id16));
}
+
+ String16 tempClientPackage;
+ res = parcel->readString16(&tempClientPackage);
+ if (res != OK) return res;
+ clientPackage = String8(tempClientPackage);
+
return res;
}
diff --git a/camera/include/camera/CameraBase.h b/camera/include/camera/CameraBase.h
index e156994..8e53968 100644
--- a/camera/include/camera/CameraBase.h
+++ b/camera/include/camera/CameraBase.h
@@ -85,11 +85,17 @@
*/
std::vector<String8> unavailablePhysicalIds;
+ /**
+ * Client package name if camera is open, otherwise not applicable
+ */
+ String8 clientPackage;
+
virtual status_t writeToParcel(android::Parcel* parcel) const;
virtual status_t readFromParcel(const android::Parcel* parcel);
- CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds) :
- cameraId(id), status(s), unavailablePhysicalIds(unavailSubIds) {}
+ CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds,
+ const String8& clientPkg) : cameraId(id), status(s),
+ unavailablePhysicalIds(unavailSubIds), clientPackage(clientPkg) {}
CameraStatus() : status(ICameraServiceListener::STATUS_PRESENT) {}
};