MediaUtils: Create singleton UidInfo
A singleton optimizes for multiple calling sites, and
the info is contained in a shared pointer to avoid copying.
Test: adb shell dumpsys media.audio_flinger / media.metrics
Bug: 350114693
Flag: EXEMPT bugfix
Change-Id: I5578e49e61145812ea0378752cea485cbb5b57d8
diff --git a/services/mediametrics/MediaMetricsService.cpp b/services/mediametrics/MediaMetricsService.cpp
index f81db53..1309626 100644
--- a/services/mediametrics/MediaMetricsService.cpp
+++ b/services/mediametrics/MediaMetricsService.cpp
@@ -92,16 +92,12 @@
/* static */
std::pair<std::string, int64_t>
MediaMetricsService::getSanitizedPackageNameAndVersionCode(uid_t uid) {
- // Meyer's singleton, initialized on first access.
- // mUidInfo is locked internally.
- static mediautils::UidInfo uidInfo;
-
- // get info.
- mediautils::UidInfo::Info info = uidInfo.getInfo(uid);
- if (useUidForPackage(info.package, info.installer)) {
+ const std::shared_ptr<const mediautils::UidInfo::Info> info =
+ mediautils::UidInfo::getInfo(uid);
+ if (useUidForPackage(info->package, info->installer)) {
return { std::to_string(uid), /* versionCode */ 0 };
} else {
- return { info.package, info.versionCode };
+ return { info->package, info->versionCode };
}
}