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.
Bug: 265487852
Test: Presubmit, ran CtsCameraTestCases on Cuttlefish, adb shell dumpsys media camera and observed output
Change-Id: I2b258a8636030dc4b7751140db43981b39c64f0d
Merged-In: I59330ac03c8a52b6c21a2388bba0c143e68af4cf
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
index b6e5a9b..89c05b0 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
@@ -21,12 +21,13 @@
#include "CameraOfflineSessionClient.h"
#include "utils/CameraThreadState.h"
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
namespace android {
using binder::Status;
-status_t CameraOfflineSessionClient::initialize(sp<CameraProviderManager>, const String8&) {
+status_t CameraOfflineSessionClient::initialize(sp<CameraProviderManager>, const std::string&) {
ATRACE_CALL();
if (mFrameProcessor.get() != nullptr) {
@@ -42,14 +43,13 @@
if (mOfflineSession.get() == nullptr) {
ALOGE("%s: Camera %s: No valid offline session",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
return NO_INIT;
}
- String8 threadName;
mFrameProcessor = new camera2::FrameProcessorBase(mOfflineSession);
- threadName = String8::format("Offline-%s-FrameProc", mCameraIdStr.string());
- mFrameProcessor->run(threadName.string());
+ std::string threadName = fmt::sprintf("Offline-%s-FrameProc", mCameraIdStr.c_str());
+ mFrameProcessor->run(threadName.c_str());
mFrameProcessor->registerListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
@@ -60,7 +60,7 @@
res = mOfflineSession->initialize(weakThis);
if (res != OK) {
ALOGE("%s: Camera %s: unable to initialize device: %s (%d)",
- __FUNCTION__, mCameraIdStr.string(), strerror(-res), res);
+ __FUNCTION__, mCameraIdStr.c_str(), strerror(-res), res);
return res;
}
@@ -102,14 +102,14 @@
}
status_t CameraOfflineSessionClient::dumpClient(int fd, const Vector<String16>& args) {
- String8 result;
+ std::string result;
result = " Offline session dump:\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
if (mOfflineSession.get() == nullptr) {
result = " *** Offline session is detached\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return NO_ERROR;
}
@@ -117,15 +117,15 @@
auto res = mOfflineSession->dump(fd);
if (res != OK) {
- result = String8::format(" Error dumping offline session: %s (%d)",
+ result = fmt::sprintf(" Error dumping offline session: %s (%d)",
strerror(-res), res);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
return OK;
}
-status_t CameraOfflineSessionClient::startWatchingTags(const String8 &tags, int outFd) {
+status_t CameraOfflineSessionClient::startWatchingTags(const std::string &tags, int outFd) {
return BasicClient::startWatchingTags(tags, outFd);
}
@@ -154,7 +154,7 @@
mDisconnected = true;
sCameraService->removeByClient(this);
- sCameraService->logDisconnectedOffline(mCameraIdStr, mClientPid, String8(mClientPackageName));
+ sCameraService->logDisconnectedOffline(mCameraIdStr, mClientPid, mClientPackageName);
sp<IBinder> remote = getRemote();
if (remote != nullptr) {
@@ -169,7 +169,7 @@
finishCameraOps();
ALOGI("%s: Disconnected client for offline camera %s for PID %d", __FUNCTION__,
- mCameraIdStr.string(), mClientPid);
+ mCameraIdStr.c_str(), mClientPid);
// client shouldn't be able to call into us anymore
mClientPid = 0;
@@ -214,7 +214,7 @@
ATRACE_CALL();
{
ALOGV("%s: Start camera ops, package name = %s, client UID = %d",
- __FUNCTION__, String8(mClientPackageName).string(), mClientUid);
+ __FUNCTION__, mClientPackageName.c_str(), mClientUid);
}
if (mAppOpsManager != nullptr) {
@@ -223,14 +223,14 @@
int32_t res;
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
mAppOpsManager->startWatchingMode(AppOpsManager::OP_CAMERA,
- mClientPackageName, mOpsCallback);
+ toString16(mClientPackageName), mOpsCallback);
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
res = mAppOpsManager->startOpNoThrow(AppOpsManager::OP_CAMERA,
- mClientUid, mClientPackageName, /*startIfModeDefault*/ false);
+ mClientUid, toString16(mClientPackageName), /*startIfModeDefault*/ false);
if (res == AppOpsManager::MODE_ERRORED) {
ALOGI("Offline Camera %s: Access for \"%s\" has been revoked",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
return PERMISSION_DENIED;
}
@@ -238,7 +238,7 @@
// return MODE_IGNORED. Do not treat such case as error.
if (!mUidIsTrusted && res == AppOpsManager::MODE_IGNORED) {
ALOGI("Offline Camera %s: Access for \"%s\" has been restricted",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
// Return the same error as for device policy manager rejection
return -EACCES;
}
@@ -261,7 +261,7 @@
if (mAppOpsManager != nullptr) {
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
mAppOpsManager->finishOp(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName);
+ toString16(mClientPackageName));
mOpsActive = false;
}
}
@@ -351,10 +351,10 @@
CaptureResultExtras());
}
-status_t CameraOfflineSessionClient::injectCamera(const String8& injectedCamId,
+status_t CameraOfflineSessionClient::injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) {
ALOGV("%s: This client doesn't support the injection camera. injectedCamId: %s providerPtr: %p",
- __FUNCTION__, injectedCamId.string(), manager.get());
+ __FUNCTION__, injectedCamId.c_str(), manager.get());
return OK;
}