cameraservice: Migrate all internal String8/String16s to std::string
String8 and String16 are deprecated classes. It is recommended to use
std::string or std::u16string wherever possible. String16 is the native
string class for aidl, but Strings marked @utf8InCpp can use std::string
directly.
This patch standardizes libcameraservice's use of strings to
std::string, which is capable of storing utf-8 strings. This makes the
code more readable and potentially reduces the number of string copies
to a minimum.
A new set of string utils is added to frameworks/av/camera to aid this
migration.
Change-Id: I59330ac03c8a52b6c21a2388bba0c143e68af4cf
Bug: 265487852
Test: Presubmit, ran CtsCameraTestCases on Cuttlefish, adb shell dumpsys media camera and observed output
diff --git a/camera/tests/CameraBinderTests.cpp b/camera/tests/CameraBinderTests.cpp
index 1af5637..bb963ab 100644
--- a/camera/tests/CameraBinderTests.cpp
+++ b/camera/tests/CameraBinderTests.cpp
@@ -43,6 +43,7 @@
#include <camera/camera2/OutputConfiguration.h>
#include <camera/camera2/SessionConfiguration.h>
#include <camera/camera2/SubmitInfo.h>
+#include <camera/StringUtils.h>
#include <gui/BufferItemConsumer.h>
#include <gui/IGraphicBufferProducer.h>
@@ -68,15 +69,15 @@
// Stub listener implementation
class TestCameraServiceListener : public hardware::BnCameraServiceListener {
- std::map<String16, int32_t> mCameraTorchStatuses;
- std::map<String16, int32_t> mCameraStatuses;
+ std::map<std::string, int32_t> mCameraTorchStatuses;
+ std::map<std::string, int32_t> mCameraStatuses;
mutable Mutex mLock;
mutable Condition mCondition;
mutable Condition mTorchCondition;
public:
virtual ~TestCameraServiceListener() {};
- virtual binder::Status onStatusChanged(int32_t status, const String16& cameraId) {
+ virtual binder::Status onStatusChanged(int32_t status, const std::string& cameraId) override {
Mutex::Autolock l(mLock);
mCameraStatuses[cameraId] = status;
mCondition.broadcast();
@@ -84,36 +85,37 @@
};
virtual binder::Status onPhysicalCameraStatusChanged(int32_t /*status*/,
- const String16& /*cameraId*/, const String16& /*physicalCameraId*/) {
+ const std::string& /*cameraId*/, const std::string& /*physicalCameraId*/) override {
// No op
return binder::Status::ok();
};
- virtual binder::Status onTorchStatusChanged(int32_t status, const String16& cameraId) {
+ virtual binder::Status onTorchStatusChanged(int32_t status,
+ const std::string& cameraId) override {
Mutex::Autolock l(mLock);
mCameraTorchStatuses[cameraId] = status;
mTorchCondition.broadcast();
return binder::Status::ok();
};
- virtual binder::Status onTorchStrengthLevelChanged(const String16& /*cameraId*/,
- int32_t /*torchStrength*/) {
+ virtual binder::Status onTorchStrengthLevelChanged(const std::string& /*cameraId*/,
+ int32_t /*torchStrength*/) override {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraAccessPrioritiesChanged() {
+ virtual binder::Status onCameraAccessPrioritiesChanged() override {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraOpened(const String16& /*cameraId*/,
- const String16& /*clientPackageName*/) {
+ virtual binder::Status onCameraOpened(const std::string& /*cameraId*/,
+ const std::string& /*clientPackageName*/) {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraClosed(const String16& /*cameraId*/) {
+ virtual binder::Status onCameraClosed(const std::string& /*cameraId*/) override {
// No op
return binder::Status::ok();
}
@@ -136,7 +138,7 @@
bool waitForTorchState(int32_t status, int32_t cameraId) const {
Mutex::Autolock l(mLock);
- const auto& iter = mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ const auto& iter = mCameraTorchStatuses.find(std::to_string(cameraId));
if (iter != mCameraTorchStatuses.end() && iter->second == status) {
return true;
}
@@ -147,7 +149,7 @@
return false;
}
const auto& iter =
- mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ mCameraTorchStatuses.find(std::to_string(cameraId));
foundStatus = (iter != mCameraTorchStatuses.end() && iter->second == status);
}
return true;
@@ -155,14 +157,14 @@
int32_t getTorchStatus(int32_t cameraId) const {
Mutex::Autolock l(mLock);
- const auto& iter = mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ const auto& iter = mCameraTorchStatuses.find(std::to_string(cameraId));
if (iter == mCameraTorchStatuses.end()) {
return hardware::ICameraServiceListener::TORCH_STATUS_UNKNOWN;
}
return iter->second;
};
- int32_t getStatus(const String16& cameraId) const {
+ int32_t getStatus(const std::string& cameraId) const {
Mutex::Autolock l(mLock);
const auto& iter = mCameraStatuses.find(cameraId);
if (iter == mCameraStatuses.end()) {
@@ -352,11 +354,11 @@
EXPECT_EQ(numCameras, static_cast<const int>(statuses.size()));
for (const auto &it : statuses) {
- listener->onStatusChanged(it.status, String16(it.cameraId));
+ listener->onStatusChanged(it.status, it.cameraId);
}
for (int32_t i = 0; i < numCameras; i++) {
- String16 cameraId = String16(String8::format("%d", i));
+ std::string cameraId = std::to_string(i);
bool isSupported = false;
res = service->supportsCameraApi(cameraId,
hardware::ICameraService::API_VERSION_2, &isSupported);
@@ -384,7 +386,7 @@
// Check connect binder calls
sp<TestCameraDeviceCallbacks> callbacks(new TestCameraDeviceCallbacks());
sp<hardware::camera2::ICameraDeviceUser> device;
- res = service->connectDevice(callbacks, cameraId, String16("meeeeeeeee!"),
+ res = service->connectDevice(callbacks, cameraId, "meeeeeeeee!",
{}, hardware::ICameraService::USE_CALLING_UID, /*oomScoreOffset*/ 0,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*out*/&device);
@@ -423,12 +425,12 @@
sp<TestCameraServiceListener> serviceListener;
std::pair<sp<TestCameraDeviceCallbacks>, sp<hardware::camera2::ICameraDeviceUser>>
- openNewDevice(const String16& deviceId) {
+ openNewDevice(const std::string& deviceId) {
sp<TestCameraDeviceCallbacks> callbacks(new TestCameraDeviceCallbacks());
sp<hardware::camera2::ICameraDeviceUser> device;
{
SCOPED_TRACE("openNewDevice");
- binder::Status res = service->connectDevice(callbacks, deviceId, String16("meeeeeeeee!"),
+ binder::Status res = service->connectDevice(callbacks, deviceId, "meeeeeeeee!",
{}, hardware::ICameraService::USE_CALLING_UID, /*oomScoreOffset*/ 0,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*out*/&device);
@@ -464,7 +466,7 @@
std::vector<hardware::CameraStatus> statuses;
service->addListener(serviceListener, &statuses);
for (const auto &it : statuses) {
- serviceListener->onStatusChanged(it.status, String16(it.cameraId));
+ serviceListener->onStatusChanged(it.status, it.cameraId);
}
service->getNumberOfCameras(hardware::ICameraService::CAMERA_TYPE_BACKWARD_COMPATIBLE,
&numCameras);
@@ -484,9 +486,8 @@
ASSERT_NOT_NULL(service);
EXPECT_TRUE(serviceListener->waitForNumCameras(numCameras));
for (int32_t i = 0; i < numCameras; i++) {
- String8 cameraId8 = String8::format("%d", i);
+ std::string cameraId = std::to_string(i);
// Make sure we're available, or skip device tests otherwise
- String16 cameraId(cameraId8);
int32_t s = serviceListener->getStatus(cameraId);
EXPECT_EQ(hardware::ICameraServiceListener::STATUS_PRESENT, s);
if (s != hardware::ICameraServiceListener::STATUS_PRESENT) {
@@ -513,7 +514,7 @@
sp<Surface> surface(new Surface(gbProducer, /*controlledByApp*/false));
- String16 noPhysicalId;
+ std::string noPhysicalId;
OutputConfiguration output(gbProducer, /*rotation*/0, noPhysicalId);
// Can we configure?
@@ -550,7 +551,7 @@
EXPECT_TRUE(res.isOk()) << res;
hardware::camera2::CaptureRequest request;
- request.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request.mSurfaceList.add(surface);
request.mIsReprocess = false;
int64_t lastFrameNumber = 0;
@@ -577,7 +578,7 @@
/*out*/&requestTemplate);
EXPECT_TRUE(res.isOk()) << res;
hardware::camera2::CaptureRequest request2;
- request2.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request2.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request2.mSurfaceList.add(surface);
request2.mIsReprocess = false;
callbacks->clearStatus();
@@ -610,10 +611,10 @@
EXPECT_TRUE(res.isOk()) << res;
android::hardware::camera2::CaptureRequest request3;
android::hardware::camera2::CaptureRequest request4;
- request3.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request3.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request3.mSurfaceList.add(surface);
request3.mIsReprocess = false;
- request4.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate2});
+ request4.mPhysicalCameraSettings.push_back({cameraId, requestTemplate2});
request4.mSurfaceList.add(surface);
request4.mIsReprocess = false;
std::vector<hardware::camera2::CaptureRequest> requestList;
diff --git a/camera/tests/CameraCharacteristicsPermission.cpp b/camera/tests/CameraCharacteristicsPermission.cpp
index f2fa48c..1de7cb4 100644
--- a/camera/tests/CameraCharacteristicsPermission.cpp
+++ b/camera/tests/CameraCharacteristicsPermission.cpp
@@ -62,7 +62,7 @@
TEST_F(CameraCharacteristicsPermission, TestCameraPermission) {
for (int32_t cameraId = 0; cameraId < numCameras; cameraId++) {
- String16 cameraIdStr = String16(String8::format("%d", cameraId));
+ std::string cameraIdStr = std::to_string(cameraId);
bool isSupported = false;
auto rc = mCameraService->supportsCameraApi(cameraIdStr,
hardware::ICameraService::API_VERSION_2, &isSupported);
diff --git a/camera/tests/CameraZSLTests.cpp b/camera/tests/CameraZSLTests.cpp
index 6423709..3ae7659 100644
--- a/camera/tests/CameraZSLTests.cpp
+++ b/camera/tests/CameraZSLTests.cpp
@@ -27,6 +27,7 @@
#include <camera/CameraParameters.h>
#include <camera/CameraMetadata.h>
#include <camera/Camera.h>
+#include <camera/StringUtils.h>
#include <android/hardware/ICameraService.h>
using namespace android;
@@ -169,7 +170,7 @@
sp<SurfaceControl> surfaceControl;
sp<ICamera> cameraDevice;
- String16 cameraIdStr = String16(String8::format("%d", cameraId));
+ std::string cameraIdStr = std::to_string(cameraId);
bool isSupported = false;
rc = mCameraService->supportsCameraApi(cameraIdStr,
hardware::ICameraService::API_VERSION_1, &isSupported);
@@ -208,7 +209,7 @@
}
rc = mCameraService->connect(this, cameraId,
- String16("ZSLTest"), hardware::ICameraService::USE_CALLING_UID,
+ "ZSLTest", hardware::ICameraService::USE_CALLING_UID,
hardware::ICameraService::USE_CALLING_PID,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*forceSlowJpegMode*/false, &cameraDevice);
diff --git a/camera/tests/fuzzer/camera_Parameters_fuzzer.cpp b/camera/tests/fuzzer/camera_Parameters_fuzzer.cpp
index 45b3526..07efc20 100644
--- a/camera/tests/fuzzer/camera_Parameters_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_Parameters_fuzzer.cpp
@@ -19,6 +19,7 @@
#include <fcntl.h>
#include <fuzzer/FuzzedDataProvider.h>
#include <utils/String16.h>
+#include <camera/StringUtils.h>
using namespace std;
using namespace android;
@@ -77,7 +78,7 @@
} else {
params = mFDP->ConsumeRandomLengthString();
}
- *obj = new type(String8(params.c_str()));
+ *obj = new type(toString8(params));
}
}
diff --git a/camera/tests/fuzzer/camera_SessionStats_fuzzer.cpp b/camera/tests/fuzzer/camera_SessionStats_fuzzer.cpp
index 2f2ad77..c9bb20c 100644
--- a/camera/tests/fuzzer/camera_SessionStats_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_SessionStats_fuzzer.cpp
@@ -17,6 +17,7 @@
#include <CameraSessionStats.h>
#include <binder/Parcel.h>
#include <fuzzer/FuzzedDataProvider.h>
+#include <camera/StringUtils.h>
#include "camera2common.h"
using namespace std;
@@ -100,10 +101,9 @@
if (fdp.ConsumeBool()) {
cameraSessionStats = new CameraSessionStats();
} else {
- string camId = fdp.ConsumeRandomLengthString();
- String16 cameraId(camId.c_str());
+ string cameraId = fdp.ConsumeRandomLengthString();
if (fdp.ConsumeBool()) {
- parcelCamSessionStats.writeString16(cameraId);
+ parcelCamSessionStats.writeString16(toString16(cameraId));
}
int32_t facing = fdp.ConsumeIntegral<int32_t>();
if (fdp.ConsumeBool()) {
@@ -113,10 +113,9 @@
if (fdp.ConsumeBool()) {
parcelCamSessionStats.writeInt32(newCameraState);
}
- string name = fdp.ConsumeRandomLengthString();
- String16 clientName(name.c_str());
+ string clientName = fdp.ConsumeRandomLengthString();
if (fdp.ConsumeBool()) {
- parcelCamSessionStats.writeString16(clientName);
+ parcelCamSessionStats.writeString16(toString16(clientName));
}
int32_t apiLevel = fdp.ConsumeIntegral<int32_t>();
if (fdp.ConsumeBool()) {
diff --git a/camera/tests/fuzzer/camera_c2CaptureRequest_fuzzer.cpp b/camera/tests/fuzzer/camera_c2CaptureRequest_fuzzer.cpp
index 06215a5..494ec1b 100644
--- a/camera/tests/fuzzer/camera_c2CaptureRequest_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_c2CaptureRequest_fuzzer.cpp
@@ -15,6 +15,7 @@
*/
#include <CameraMetadata.h>
+#include <camera/StringUtils.h>
#include <camera2/CaptureRequest.h>
#include <fuzzer/FuzzedDataProvider.h>
#include <gui/Surface.h>
@@ -45,7 +46,7 @@
for (size_t idx = 0; idx < physicalCameraSettingsSize; ++idx) {
string id = fdp.ConsumeRandomLengthString();
if (fdp.ConsumeBool()) {
- parcelCamCaptureReq.writeString16(String16(id.c_str()));
+ parcelCamCaptureReq.writeString16(toString16(id));
}
CameraMetadata cameraMetadata;
if (fdp.ConsumeBool()) {
diff --git a/camera/tests/fuzzer/camera_c2OutputConfiguration_fuzzer.cpp b/camera/tests/fuzzer/camera_c2OutputConfiguration_fuzzer.cpp
index 51ac4e8..2fe9a94 100644
--- a/camera/tests/fuzzer/camera_c2OutputConfiguration_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_c2OutputConfiguration_fuzzer.cpp
@@ -38,8 +38,7 @@
outputConfiguration = new OutputConfiguration();
} else {
int32_t rotation = fdp.ConsumeIntegral<int32_t>();
- string phyCameraId = fdp.ConsumeRandomLengthString();
- String16 physicalCameraId(phyCameraId.c_str());
+ string physicalCameraId = fdp.ConsumeRandomLengthString();
int32_t surfaceSetID = fdp.ConsumeIntegral<int32_t>();
bool isShared = fdp.ConsumeBool();
diff --git a/camera/tests/fuzzer/camera_c2SessionConfiguration_fuzzer.cpp b/camera/tests/fuzzer/camera_c2SessionConfiguration_fuzzer.cpp
index b2de95d..7cd0e59 100644
--- a/camera/tests/fuzzer/camera_c2SessionConfiguration_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_c2SessionConfiguration_fuzzer.cpp
@@ -65,8 +65,7 @@
surface.clear();
}
int32_t rotation = fdp.ConsumeIntegral<int32_t>();
- string phyCameraId = fdp.ConsumeRandomLengthString();
- String16 physicalCameraId(phyCameraId.c_str());
+ string physicalCameraId = fdp.ConsumeRandomLengthString();
int32_t surfaceSetID = fdp.ConsumeIntegral<int32_t>();
bool isShared = fdp.ConsumeBool();
outputConfiguration =
diff --git a/camera/tests/fuzzer/camera_captureResult_fuzzer.cpp b/camera/tests/fuzzer/camera_captureResult_fuzzer.cpp
index 1396431..dd857d4 100644
--- a/camera/tests/fuzzer/camera_captureResult_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_captureResult_fuzzer.cpp
@@ -32,8 +32,7 @@
if (fdp.ConsumeBool()) {
physicalCaptureResultInfo = new PhysicalCaptureResultInfo();
} else {
- string camId = fdp.ConsumeRandomLengthString();
- String16 cameraId(camId.c_str());
+ string cameraId = fdp.ConsumeRandomLengthString();
CameraMetadata cameraMetadata = CameraMetadata();
physicalCaptureResultInfo = new PhysicalCaptureResultInfo(cameraId, cameraMetadata);
}
@@ -47,9 +46,7 @@
}
if (fdp.ConsumeBool()) {
captureResult->mResultExtras = CaptureResultExtras();
- string errCamId = fdp.ConsumeRandomLengthString();
- String16 errCameraId(errCamId.c_str());
- captureResult->mResultExtras.errorPhysicalCameraId = errCameraId;
+ captureResult->mResultExtras.errorPhysicalCameraId = fdp.ConsumeRandomLengthString();
captureResult->mResultExtras.isValid();
invokeReadWriteNullParcel<CaptureResultExtras>(&(captureResult->mResultExtras));
}
diff --git a/camera/tests/fuzzer/camera_fuzzer.cpp b/camera/tests/fuzzer/camera_fuzzer.cpp
index f9ef98e..d09a6dd 100644
--- a/camera/tests/fuzzer/camera_fuzzer.cpp
+++ b/camera/tests/fuzzer/camera_fuzzer.cpp
@@ -149,7 +149,7 @@
sp<IBinder> binder = sm->getService(String16("media.camera"));
mCameraService = interface_cast<ICameraService>(binder);
mCameraService->connect(this, mFDP->ConsumeIntegral<int32_t>() /* cameraId */,
- String16("CAMERAFUZZ"), hardware::ICameraService::USE_CALLING_UID,
+ "CAMERAFUZZ", hardware::ICameraService::USE_CALLING_UID,
hardware::ICameraService::USE_CALLING_PID,
/*targetSdkVersion*/ __ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*forceSlowJpegMode*/false, &cameraDevice);
@@ -294,18 +294,15 @@
cameraStatus = new CameraStatus();
} else {
string cid = mFDP->ConsumeRandomLengthString();
- String8 id(cid.c_str());
int32_t status = mFDP->ConsumeIntegral<int32_t>();
size_t unavailSubIdsSize = mFDP->ConsumeIntegralInRange<size_t>(kSizeMin, kSizeMax);
- vector<String8> unavailSubIds;
+ vector<std::string> unavailSubIds;
for (size_t idx = 0; idx < unavailSubIdsSize; ++idx) {
string subId = mFDP->ConsumeRandomLengthString();
- String8 unavailSubId(subId.c_str());
- unavailSubIds.push_back(unavailSubId);
+ unavailSubIds.push_back(subId);
}
- string clientPkg = mFDP->ConsumeRandomLengthString();
- String8 clientPackage(clientPkg.c_str());
- cameraStatus = new CameraStatus(id, status, unavailSubIds, clientPackage);
+ string clientPackage = mFDP->ConsumeRandomLengthString();
+ cameraStatus = new CameraStatus(cid, status, unavailSubIds, clientPackage);
}
invokeReadWriteParcel<CameraStatus>(cameraStatus);