Offer flag to force manual calculation.
Can be used to quickly pivot between manual and quota calculations
when running CTS tests.
Bug: 35684969, 35441006, 34945234
Test: cts-tradefed run commandAndExit cts-dev -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.StorageHostTest
Change-Id: I7500dde597a4f3cde20998df45c5d54a053181fc
diff --git a/services/usage/java/com/android/server/usage/StorageStatsService.java b/services/usage/java/com/android/server/usage/StorageStatsService.java
index eb71590..8166c15 100644
--- a/services/usage/java/com/android/server/usage/StorageStatsService.java
+++ b/services/usage/java/com/android/server/usage/StorageStatsService.java
@@ -60,6 +60,7 @@
public class StorageStatsService extends IStorageStatsManager.Stub {
private static final String TAG = "StorageStatsService";
+ private static final String PROP_DISABLE_QUOTA = "fw.disable_quota";
private static final String PROP_VERIFY_STORAGE = "fw.verify_storage";
private static final long DELAY_IN_MILLIS = 30 * DateUtils.SECOND_IN_MILLIS;
@@ -239,7 +240,7 @@
final PackageStats stats = new PackageStats(TAG);
try {
- mInstaller.getAppSize(volumeUuid, packageNames, userId, Installer.FLAG_USE_QUOTA,
+ mInstaller.getAppSize(volumeUuid, packageNames, userId, getDefaultFlags(),
appId, ceDataInodes, codePaths, stats);
if (SystemProperties.getBoolean(PROP_VERIFY_STORAGE, false)) {
@@ -272,7 +273,7 @@
final PackageStats stats = new PackageStats(TAG);
try {
- mInstaller.getUserSize(volumeUuid, userId, Installer.FLAG_USE_QUOTA, appIds, stats);
+ mInstaller.getUserSize(volumeUuid, userId, getDefaultFlags(), appIds, stats);
if (SystemProperties.getBoolean(PROP_VERIFY_STORAGE, false)) {
final PackageStats manualStats = new PackageStats(TAG);
@@ -296,7 +297,7 @@
final long[] stats;
try {
- stats = mInstaller.getExternalSize(volumeUuid, userId, Installer.FLAG_USE_QUOTA);
+ stats = mInstaller.getExternalSize(volumeUuid, userId, getDefaultFlags());
if (SystemProperties.getBoolean(PROP_VERIFY_STORAGE, false)) {
final long[] manualStats = mInstaller.getExternalSize(volumeUuid, userId, 0);
@@ -314,6 +315,14 @@
return res;
}
+ private static int getDefaultFlags() {
+ if (SystemProperties.getBoolean(PROP_DISABLE_QUOTA, false)) {
+ return 0;
+ } else {
+ return Installer.FLAG_USE_QUOTA;
+ }
+ }
+
private static void checkEquals(String msg, long[] a, long[] b) {
for (int i = 0; i < a.length; i++) {
checkEquals(msg + "[" + i + "]", a[i], b[i]);