Merge "[metrics] implement callbacks for InstalledIncrementalPackage pulled atom" into sc-dev

This commit is contained in:
Songchun Fan
2021-05-26 17:01:21 +00:00
committed by Android (Google) Code Review

View File

@@ -126,6 +126,7 @@ import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.connectivity.WifiActivityEnergyInfo;
import android.os.incremental.IncrementalManager;
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
@@ -426,6 +427,7 @@ public class StatsPullAtomService extends SystemService {
private final Object mHealthHalLock = new Object();
private final Object mAttributedAppOpsLock = new Object();
private final Object mSettingsStatsLock = new Object();
private final Object mInstalledIncrementalPackagesLock = new Object();
public StatsPullAtomService(Context context) {
super(context);
@@ -695,6 +697,10 @@ public class StatsPullAtomService extends SystemService {
synchronized (mSettingsStatsLock) {
return pullSettingsStatsLocked(atomTag, data);
}
case FrameworkStatsLog.INSTALLED_INCREMENTAL_PACKAGE:
synchronized (mInstalledIncrementalPackagesLock) {
return pullInstalledIncrementalPackagesLocked(atomTag, data);
}
default:
throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
}
@@ -877,6 +883,7 @@ public class StatsPullAtomService extends SystemService {
registerBatteryVoltage();
registerBatteryCycleCount();
registerSettingsStats();
registerInstalledIncrementalPackages();
}
private void initAndRegisterNetworkStatsPullers() {
@@ -3949,6 +3956,31 @@ public class StatsPullAtomService extends SystemService {
return StatsManager.PULL_SUCCESS;
}
private void registerInstalledIncrementalPackages() {
int tagId = FrameworkStatsLog.INSTALLED_INCREMENTAL_PACKAGE;
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
DIRECT_EXECUTOR,
mStatsCallbackImpl
);
}
int pullInstalledIncrementalPackagesLocked(int atomTag, List<StatsEvent> pulledData) {
final PackageManager pm = mContext.getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_INCREMENTAL_DELIVERY)) {
// Incremental is not enabled on this device. The result list will be empty.
return StatsManager.PULL_SUCCESS;
}
List<PackageInfo> installedPackages = pm.getInstalledPackages(0);
for (PackageInfo pi : installedPackages) {
if (IncrementalManager.isIncrementalPath(pi.applicationInfo.getBaseCodePath())) {
pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, pi.applicationInfo.uid));
}
}
return StatsManager.PULL_SUCCESS;
}
// Thermal event received from vendor thermal management subsystem
private static final class ThermalEventListener extends IThermalEventListener.Stub {
@Override